1
系统基础配置
关闭 Swap、加载内核模块、配置网络参数
首先更新系统软件包,然后关闭 Swap 分区。Kubernetes 调度器假设内存不会被交换,若 Swap 开启将导致 Pod 调度不稳定。
1.1 更新系统 & 关闭 Swap
bash
# 更新系统软件包 dnf update -y # 临时关闭 swap swapoff -a # 永久关闭 swap(注释掉 /etc/fstab 中的 swap 行) sed -i '/ swap / s/^/#/' /etc/fstab
1.2 加载内核模块
bash
# 加载所需的内核模块 modprobe overlay modprobe br_netfilter # 配置开机自动加载 cat <<EOF | tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF
1.3 配置网络 sysctl 参数
bash
cat <<EOF | tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF # 应用参数 sysctl --system
1.4 配置 SELinux 与防火墙
SELinux 注意事项
Rocky Linux 10 默认启用 SELinux。为确保容器能访问主机文件系统,需将其设为宽容模式(permissive)。bash
# 临时设置 SELinux 为 permissive setenforce 0 # 永久设置 SELinux 为 permissive sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 停止并禁用 firewalld(单机测试环境) systemctl stop firewalld systemctl disable firewalld
2
安装 Containerd 容器运行时
使用 Docker 官方仓库,配置 systemd cgroup 驱动
Kubernetes 1.34 需要符合 CRI 标准的容器运行时。我们选择轻量级的 containerd, 并通过 Docker 官方 CentOS 仓库安装。
2.1 添加仓库并安装
bash
# 添加 Docker 官方仓库 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装 containerd dnf install -y containerd.io
2.2 配置 containerd
为何使用 systemd cgroup 驱动?
Rocky Linux 10 默认使用 cgroup v2 与 systemd。containerd 和 kubelet 必须统一使用相同的 cgroup 驱动,否则会导致集群不稳定。bash
# 创建配置目录并生成默认配置 mkdir -p /etc/containerd containerd config default | tee /etc/containerd/config.toml # 修改 cgroup 驱动为 systemd(关键步骤) sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml # 启动并设置开机自启 systemctl enable --now containerd
验证 containerd 状态
执行systemctl status containerd 确认服务处于 active (running) 状态。3
安装 Kubeadm / Kubelet / Kubectl
使用官方新仓库 pkgs.k8s.io,版本锁定 v1.34
仓库地址已更新
Kubernetes 1.34 的包仓库地址已更新为pkgs.k8s.io,旧版 yum.kubernetes.io 已废弃,请勿使用旧地址。bash
# 添加 Kubernetes YUM 仓库(v1.34) cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/repodata/repomd.xml.key exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni EOF # 安装 Kubernetes 组件 dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes # 启动 kubelet 并设置开机自启 systemctl enable --now kubelet
组件说明
kubeadm— 集群初始化与管理工具kubelet— 节点代理,管理 Pod 生命周期kubectl— 命令行客户端,与集群交互
4
初始化 Kubernetes 集群
kubeadm init + 移除 control-plane 污点(单机关键步骤)
使用 kubeadm init 初始化集群, 指定 Pod 网络 CIDR 为 10.244.0.0/16,与后续 Cilium 网络插件配合使用。
4.1 初始化集群
bash
kubeadm init --pod-network-cidr=10.244.0.0/164.2 配置 kubectl 访问凭证
bash
# 配置 root 用户的 kubeconfig mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config # 或者直接导出环境变量(推荐 root 用户使用) export KUBECONFIG=/etc/kubernetes/admin.conf echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bashrc
4.3 移除 Control Plane 污点(单机部署关键)
单机部署必须执行此步骤
默认情况下,Kubernetes 不会在控制平面节点上调度普通 Pod。单机部署必须移除此污点,否则工作负载将无法运行。bash
# 移除 control-plane 污点,允许在此节点调度工作负载 kubectl taint nodes --all node-role.kubernetes.io/control-plane- # 同时移除 external load balancer 排除标签 kubectl label nodes --all node.kubernetes.io/exclude-from-external-load-balancers-
5
安装 Cilium CNI 网络插件
基于 eBPF 的高性能网络,替代传统 iptables
Pod 网络通信需要 CNI 插件。Cilium 利用 Linux 内核的 eBPF 技术直接编程内核网络栈,相比传统 iptables 具有更高性能、更强可观测性和内置安全策略,是 Rocky Linux 10(内核 6.12.x)的理想选择。
5.1 下载 Cilium CLI
bash
# 下载 Cilium CLI(amd64) curl -L --remote-name https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-amd64.tar.gz # 解压到系统路径 tar xzvf cilium-linux-amd64.tar.gz -C /usr/local/bin
5.2 部署 Cilium 并检查状态
bash
# 安装 Cilium 到集群 cilium install # 等待 Cilium 就绪(所有组件 Running) cilium status # 检查节点状态(应变为 Ready) kubectl get nodes
节点就绪
安装 Cilium 后,节点状态将从NotReady 变为 Ready,CoreDNS Pod 也将正常启动。6
验证集群状态
检查节点、Pod 状态,运行测试工作负载
6.1 检查集群组件
bash
# 查看节点状态(应为 Ready) kubectl get nodes -o wide # 查看所有 Pod 状态(应全部 Running) kubectl get pods -A # 检查 Cilium 网络状态 cilium status
6.2 运行测试 Pod
bash
# 部署一个 Nginx 测试 Pod kubectl run nginx --image=nginx --port=80 # 查看 Pod 状态 kubectl get pods # 查看 Pod 详情(如有问题可排查) kubectl describe pod nginx
部署完成
至此,您已成功在 Rocky Linux 10 上使用 root 用户部署了 Kubernetes 1.34 单机集群。集群具备完整的控制平面、containerd 运行时和 Cilium eBPF 网络。部署组件汇总
| 组件 | 版本/说明 | 状态 |
|---|---|---|
| Rocky Linux | 10.x (内核 6.12.x) | 已安装 |
| Kubernetes | v1.34 | 已安装 |
| containerd | 最新稳定版 | 已安装 |
| kubeadm / kubelet / kubectl | v1.34 | 已安装 |
| Cilium CNI | 最新稳定版 (eBPF) | 已安装 |