2025年05月最新!Kubernetes开源项目在Fedora 38的实践指南

云信安装大师
90
AI 质量分
4 5 月, 2025
3 分钟阅读
0 阅读

2025年05月最新!Kubernetes开源项目在Fedora 38的实践指南

引言

Kubernetes作为当前最流行的容器编排系统,已经成为云原生应用的事实标准。本文将详细介绍如何在Fedora 38系统上部署最新的Kubernetes集群(v1.30),包括单节点和集群部署两种方式。无论你是想搭建开发环境还是生产环境,这篇指南都能为你提供清晰的步骤。

准备工作

系统要求

  • Fedora 38工作站/服务器版(已更新至最新)
  • 至少2GB内存(推荐4GB以上)
  • 至少2个CPU核心
  • 20GB可用磁盘空间
  • root或sudo权限

前置知识

  • 基本Linux命令行操作
  • Docker/Podman容器基础概念

步骤1:系统准备与依赖安装

首先更新系统并安装必要工具:

代码片段
# 更新系统
sudo dnf update -y

# 安装必要工具
sudo dnf install -y curl git vim wget conntrack socat \
    ebtables ethtool ipset ipvsadm tmux

注意事项
1. Fedora默认使用firewalld,Kubernetes需要特定端口开放,建议暂时禁用或配置规则:

代码片段
sudo systemctl stop firewalld
sudo systemctl disable firewalld<br>
   

  1. 禁用交换空间(Kubernetes要求):
    代码片段
    sudo swapoff -a
    # 永久禁用,编辑/etc/fstab注释掉swap行
    sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab<br>
    

步骤2:容器运行时安装(containerd)

Kubernetes需要容器运行时,我们选择containerd:

代码片段
# 安装containerd
sudo dnf install -y containerd.io

# 配置containerd使用systemd作为cgroup驱动
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

# 启动并设置开机自启
sudo systemctl enable --now containerd

# 验证安装
sudo ctr version

原理说明
– containerd是行业标准的容器运行时,比Docker更轻量级
– SystemdCgroup=true确保与systemd的cgroup管理器兼容

步骤3:安装kubeadm、kubelet和kubectl

添加Kubernetes官方仓库并安装核心组件:

代码片段
# 添加Kubernetes仓库(2025年5月最新稳定版)
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo >/dev/null
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
EOF

# 安装组件(指定版本为1.30.0)
sudo dnf install -y kubelet-1.30.0 kubeadm-1.30.0 kubectl-1.30.0 --disableexcludes=kubernetes

# 设置kubelet开机启动(先不启动)
sudo systemctl enable kubelet

# kubectl命令补全(可选)
echo 'source <(kubectl completion bash)' >> ~/.bashrc && source ~/.bashrc 

步骤4:初始化控制平面节点

单节点集群初始化(适合开发环境)

代码片段
# Pull必要的镜像(国内用户可添加--image-repository参数)
sudo kubeadm config images pull --kubernetes-version v1.30.0

# 初始化控制平面节点(替换your-hostname为实际主机名)
sudo kubeadm init \
    --pod-network-cidr=10.244.0.0/16 \
    --apiserver-advertise-address=$(hostname -I | awk '{print $1}') \
    --kubernetes-version=v1.30.0

# 按照提示配置kubectl访问权限    
mkdir -p $HOME/.kube && \
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && \
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 验证集群状态    
kubectl get nodes        # Node状态应为NotReady(因为还没装网络插件)

多节点集群初始化

对于工作节点,只需运行kubeadm join命令即可加入集群。该命令会在控制平面初始化时输出。

实践经验
1. --pod-network-cidr需要与后续安装的网络插件匹配(这里使用Flannel的默认值)
2. --apiserver-advertise-address应设置为节点的可访问IP地址

步骤5:安装Pod网络插件

我们选择Flannel作为网络插件:

代码片段
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml 

# Wait for pods to be ready (大约需要2分钟)
watch kubectl get pods --all-namespaces  

验证网络

代码片段
kubectl get nodes        # Node状态现在应为Ready 

步骤6:部署测试应用

验证集群功能是否正常:

代码片段
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1 
kind: Deployment 
metadata:
 name: nginx-test 
spec:
 replicas: 2 
 selector:
 matchLabels:
 app: nginx 
 template:
 metadata:
 labels:
 app: nginx 
 spec:
 containers:
 - name: nginx 
 image: nginx:alpine 
 ports:
 - containerPort:80 

---
apiVersion: v1 
kind: Service 
metadata:
 name: nginx-service 
spec:
 selector:
 app: nginx 
 ports:
 protocol: TCP 
 port:80 targetPort:80  
 type: NodePort  
EOF 

# Check deployment status  
kubectl get pods,svc  

# Access the service (随机端口在30000-32767之间)
curl http://localhost:<NodePort>  

常见问题解决

问题1:cgroup驱动不匹配

错误信息:”detected cgroupfs as the Docker cgroup driver”

解决方案:
确保/etc/docker/daemon.json包含:
json { "exec-opts": ["native.cgroupdriver=systemd"] }
然后重启docker服务。

问题2:镜像拉取失败

国内用户可以使用阿里云镜像仓库:
bash sudo kubeadm init --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers ...

问题3:端口冲突

如果某些端口被占用,可以使用--apiserver-bind-port等参数指定其他端口。

总结

通过以上步骤,我们已经在Fedora38上成功部署了最新的Kubernetes v1.30集群。关键点回顾:

  1. 系统准备:禁用swap、配置防火墙、安装依赖包
  2. 容器运行时:正确配置containerd的systemd cgroup驱动
  3. 核心组件:通过官方仓库安装指定版本的kubeadm/kubelet/kubectl
  4. 网络配置:选择与CIDR匹配的网络插件(如Flannel)

对于生产环境,还需要考虑以下增强措施:
– etcd数据备份策略
– RBAC权限控制
– Ingress控制器部署
– Prometheus监控

希望这篇指南能帮助你在Fedora38上顺利搭建Kubernetes环境!如有问题欢迎在评论区讨论。

原创 高质量