Kubernetes 1.34×Rocky Linux 10
Kubernetes v1.34Rocky Linux 10containerdCilium CNIroot 用户

Kubernetes 1.34
单机部署指南

在 Rocky Linux 10 上使用 kubeadm 部署生产级 Kubernetes 集群, 采用 containerd 容器运行时与 基于 eBPF 的 Cilium 网络插件,全程 root 用户执行。

CPU

≥ 2 核心

内存

≥ 2 GB

磁盘

≥ 20 GB

系统

Rocky 10

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/16

4.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 Linux10.x (内核 6.12.x)已安装
Kubernetesv1.34已安装
containerd最新稳定版已安装
kubeadm / kubelet / kubectlv1.34已安装
Cilium CNI最新稳定版 (eBPF)已安装