K8S 1.34 版本怎么安装, ubuntu 系统 25.04
K8S 1.34 版本怎么安装, ubuntu 系统 25.04
在 Ubuntu 25.04 上安装 Kubernetes 1.34 版本,需遵循 “环境准备→容器运行时配置→K8s 组件安装→集群初始化” 的流程,核心是确保系统依赖、容器运行时(如 containerd)与 K8s 版本兼容。以下是详细步骤:
一、安装前的环境准备(所有节点执行)
Kubernetes 对系统环境有严格要求,需先完成以下配置(控制节点和工作节点均需执行):
1. 关闭 Swap(必须)
K8s 1.8+ 要求禁用 Swap,否则会导致 kubelet 启动失败:
bash
# 临时关闭(立即生效)
sudo swapoff -a
# 永久关闭(重启后生效,注释掉 swap 挂载行)
sudo sed -i '/swap/s/^/#/' /etc/fstab
2. 配置内核参数(容器网络依赖)
开启容器所需的内核模块(overlay、br_netfilter 等),并设置网络转发:
bash
# 加载内核模块
sudo tee /etc/modules-load.d/k8s.conf << EOF
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# 配置 sysctl 参数(网络转发、桥接过滤)
sudo tee /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# 生效配置
sudo sysctl --system
3. 安装容器运行时(推荐 containerd)
K8s 1.24+ 需使用支持 CRI(容器运行时接口)的运行时,containerd 是官方推荐的轻量方案(替代 Docker 作为底层运行时):
步骤 1:安装 containerd
bash
# Ubuntu 25.04 默认包管理器支持 containerd,直接安装
sudo apt update && sudo apt install -y containerd
步骤 2:配置 containerd(关键!需适配 K8s)
生成默认配置并修改关键参数(启用 SystemdCgroup 以支持 cgroup 驱动):
bash
# 生成默认配置文件
sudo containerd config default | sudo tee /etc/containerd/config.toml
# 修改配置:设置 SystemdCgroup = true(适配 K8s 的 cgroup 驱动)
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
# 重启 containerd 使配置生效
sudo systemctl restart containerd
sudo systemctl enable containerd # 开机自启
二、安装 K8s 组件(kubeadm、kubelet、kubectl)
使用官方源安装指定版本(1.34.0)的 kubeadm(集群初始化工具)、kubelet(节点代理)、kubectl(命令行工具):
1. 添加 K8s 官方 APT 源
bash
# 安装依赖工具
sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl
# 下载 Google 云公钥(用于验证包签名)
sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
# 添加 K8s 源(指定 1.34 版本的稳定分支)
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
注意: 此处遇到报错
root@wen:~# sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg curl: (7) Failed to connect to packages.cloud.google.com port 443 after 21040 ms: Could not connect to server
步骤 1:添加国内镜像源的密钥
使用阿里云的 Kubernetes 镜像源密钥替代谷歌官方密钥,执行以下命令:
bash
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
步骤 2:添加国内镜像源地址
创建 Kubernetes 源的列表文件,并指向阿里云镜像源:
bash
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
步骤 3:更新 apt 缓存
完成上述步骤后,更新 apt 包索引:
bash
sudo apt update
2. 安装指定版本
(1.34.0)
bash
# 更新源并安装 1.34.0 版本(确保三个组件版本一致)
sudo apt update
sudo apt install -y kubelet=1.34.0-00 kubeadm=1.34.0-00 kubectl=1.34.0-00
# 锁定版本(防止 apt 自动升级到更高版本)
sudo apt-mark hold kubelet kubeadm kubectl
三、初始化控制节点(仅在控制节点执行)
控制节点是集群的核心(运行 API Server、etcd 等组件),通过 kubeadm init 初始化:
1. 初始化集群(指定版本和网络网段)
bash
# 初始化控制平面,指定 K8s 版本和 Pod 网络 CIDR(需与后续网络插件匹配)
# --pod-network-cidr=10.244.0.0/16 适配 flannel 网络插件(推荐新手使用)
sudo kubeadm init --kubernetes-version=1.34.0 --pod-network-cidr=10.244.0.0/16
成功标志:
输出末尾会显示 “Your Kubernetes control-plane has initialized successfully!”,并包含 工作节点加入集群的命令(形如 kubeadm join ... --token ... --discovery-token-ca-cert-hash ...),务必复制保存(24 小时内有效,过期需重新生成)。
初始化注意的问题: 不指定国内镜像源拉取镜像也可能连接不上
-
提前用国内镜像源拉取镜像(中断当前命令后执行):
bash
# 使用阿里云镜像仓库替代默认仓库 kubeadm config images pull \ --kubernetes-version=1.34.1 \ --image-repository registry.aliyuncs.com/google_containers -
拉取成功后,sudo kubeadm reset 清理之前的缓存文件, 不然会报错文件已存在, 重新执行初始化命令(此时会直接使用已拉取的镜像,无需再次下载):
bash
sudo kubeadm init --kubernetes-version=1.34.1 \ --pod-network-cidr=10.244.0.0/16 \ --image-repository registry.aliyuncs.com/google_containers
3.大部分都通过了, 又有了新的报错 ,
command failed" err="failed to load kubelet config file, path: /var/lib/kubelet/config.yaml, error: failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file \"/var/lib/kubelet/config.yaml\", error: open /var/lib/kubelet/config.yaml:
原因 /var/lib/kubelet/config.yaml 这个文件格式不对
yamllint /var/lib/kubelet/config.yaml 命令 会提示错误的原因
再重新生成还是有问题的话, 只能手动改了
root@wen:~# yamllint /var/lib/kubelet/config.yaml
/var/lib/kubelet/config.yaml
1:1 warning missing document start "---" (document-start)
17:1 error wrong indentation: expected 2 but found 0 (indentation)
修正内容:
-
第 1 行:添加文档起始符
---在文件第一行插入---(YAML 规范中,---是文档起始标记,部分解析器会忽略,但严格模式下可能报错)。 -
第 17 行:修复缩进错误找到第 17 行(按
:17定位),确保该行前有 2 个空格缩进(YAML 通常用 2 空格缩进,且同一层级缩进必须一致)。示例:若第 17 行是cgroupDriver: systemd,修正后应为cgroupDriver: systemd(前面加 2 个空格)。
2. 配置 kubectl 权限(允许当前用户使用)
初始化后,需将集群配置文件复制到当前用户目录:
bash
# 创建 .kube 目录
mkdir -p $HOME/.kube
# 复制管理员配置文件(控制节点初始化生成的)
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# 授予当前用户权限
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3. 安装网络插件(必须!否则节点处于 NotReady 状态)
K8s 集群依赖网络插件实现 Pod 间通信,推荐 flannel(轻量、适合新手):
bash
# 安装 flannel 网络插件(版本需兼容 K8s 1.34)
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.25.0/Documentation/kube-flannel.yml
验证网络插件:
等待 1-2 分钟,查看 Pod 状态(确保所有 flannel 相关 Pod 为 Running):
bash
kubectl get pods -n kube-flannel
四、添加工作节点(可选,多节点集群需执行)
如果需要构建多节点集群,在 工作节点 执行控制节点初始化时生成的 kubeadm join 命令(例如):
bash
sudo kubeadm join 192.168.85.132:6443 \
--token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
- 若忘记或过期 token,在 控制节点 重新生成:
bash
# 生成新 token kubeadm token create --print-join-command
五、验证集群状态(控制节点执行)
bash
# 查看节点状态(所有节点应为 Ready)
kubectl get nodes
# 查看系统组件状态(所有组件应为 Running)
kubectl get pods -n kube-system
- 若节点状态为
Ready,且kube-system命名空间下的 Pod 均正常运行,说明安装成功。
六、常见问题解决
-
kubelet 启动失败:检查 Swap 是否彻底关闭(
free -h确认 swap 行均为 0),或查看日志:journalctl -u kubelet -f。 -
网络插件安装后节点仍 NotReady:检查 flannel Pod 日志(
kubectl logs <flannel-pod-name> -n kube-flannel),可能是 CNI 配置错误或网络网段不匹配(需与--pod-network-cidr一致)。 -
containerd 相关错误:确认
SystemdCgroup = true已生效(cat /etc/containerd/config.toml | grep SystemdCgroup),并重启 containerd。
总结
通过以上步骤,可在 Ubuntu 25.04 上成功安装 K8s 1.34 集群,核心是:
- 严格禁用 Swap 并配置内核参数;
- 使用 containerd 作为容器运行时并正确配置;
- 安装指定版本的 K8s 组件,确保版本一致;
- 必须安装网络插件(如 flannel)使节点就绪。
安装完成后,即可开始部署应用(如 Nginx、Spring Boot 等)进行 K8s 实践学习。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)