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 小时内有效,过期需重新生成)。

初始化注意的问题: 不指定国内镜像源拉取镜像也可能连接不上 
  1. 提前用国内镜像源拉取镜像(中断当前命令后执行):

    bash

    # 使用阿里云镜像仓库替代默认仓库
    kubeadm config images pull \
      --kubernetes-version=1.34.1 \
      --image-repository registry.aliyuncs.com/google_containers
    
  2. 拉取成功后,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 均正常运行,说明安装成功。

六、常见问题解决

  1. kubelet 启动失败:检查 Swap 是否彻底关闭(free -h 确认 swap 行均为 0),或查看日志:journalctl -u kubelet -f

  2. 网络插件安装后节点仍 NotReady:检查 flannel Pod 日志(kubectl logs <flannel-pod-name> -n kube-flannel),可能是 CNI 配置错误或网络网段不匹配(需与 --pod-network-cidr 一致)。

  3. containerd 相关错误:确认 SystemdCgroup = true 已生效(cat /etc/containerd/config.toml | grep SystemdCgroup),并重启 containerd。

总结

通过以上步骤,可在 Ubuntu 25.04 上成功安装 K8s 1.34 集群,核心是:

  1. 严格禁用 Swap 并配置内核参数;
  2. 使用 containerd 作为容器运行时并正确配置;
  3. 安装指定版本的 K8s 组件,确保版本一致;
  4. 必须安装网络插件(如 flannel)使节点就绪。

安装完成后,即可开始部署应用(如 Nginx、Spring Boot 等)进行 K8s 实践学习。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐