跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Kubernetes 1.35 使用 kubeadm 部署高可用集群

基于 Kubernetes 1.35 版本使用 kubeadm 工具部署高可用集群的完整流程。主要步骤包括安装 kubeadm、kubelet 和 kubectl 组件,配置 containerd 运行时及 systemd 管理,启用 cgroups v2 支持,初始化第一个控制平面节点并添加后续控制面节点,最后安装 Calico 网络插件。过程中涉及镜像仓库配置、pause 镜像处理以及 GRUB 参数调整以确保系统兼容性。

山野诗人发布于 2026/2/28更新于 2026/5/3028 浏览

1. kubeadm、kubelet、kubectl 安装

参考官方文档:https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

2. 安装 containerd

2.1 解压安装包,设置 systemd

参考官方文档:https://github.com/containerd/containerd/blob/main/docs/getting-started.md

  1. 从 https://github.com/containerd/containerd/releases 下载最新的安装包解压到本地。
tar Cxzvf /usr/local/ containerd-2.2.1-linux-amd64.tar.gz bin/ bin/containerd-shim-runc-v2 bin/containerd-shim bin/ctr bin/containerd-shim-runc-v1 bin/containerd bin/containerd-stress 

如果计划通过 systemd 启动 containerd,还需从以下地址下载 unit 文件并放置到 /usr/local/lib/systemd/system/containerd.service: https://raw.githubusercontent.com/containerd/containerd/main/containerd.service

然后执行以下命令:

systemctl daemon-reload
systemctl enable --now containerd

2.2 安装 runc

根据官方文档要求执行:

install -m 755 runc.amd64 /usr/local/sbin/runc

2.3 安装 CNI 插件

mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.9.0.tgz

结果示例:

./ ./bandwidth ./host-device ./LICENSE ./loopback ./ptp ./vrf ./tuning ./host-local ./static ./tap ./bridge ./README.md ./macvlan ./firewall ./dummy ./sbr ./ipvlan ./portmap ./dhcp ./vlan

3. 使用 cgroup v2

修改 /etc/containerd/config.toml 文件内容如下:

[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc]
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options]
SystemdCgroup = true

由于 cgroups v1 support is deprecated and will be removed in a future release.,我们需要启用 cgroups v2。参考文档:https://kubernetes.io/zh-cn/docs/concepts/architecture/cgroups/

首先使用 stat -fc %T /sys/fs/cgroup/ 查看当前系统使用的 cgroup 版本。对于 CGroup v1 输出 tmpfs;对于 CGroup v2 输出 cgroup2fs。

当前输出为 tmpfs,需要在 /etc/default/grub 的 GRUB_CMDLINE_LINUX 中添加 systemd.unified_cgroup_hierarchy=1,然后执行下面的命令(不同发行版有所不同):

在这里插入图片描述

# Debian/Ubuntu(默认已安装)
sudo update-grub
# CentOS/RHEL 7+
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# Fedora(UEFI 模式)
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
# Arch Linux
sudo grub-mkconfig -o /boot/grub/grub.cfg

重启操作系统:

sudo reboot

再次执行 stat -fc %T /sys/fs/cgroup/,发现输出变成 cgroup2fs。

在这里插入图片描述

4. 集群部署

4.1 第一个 master 节点

先看下文章最后的注意点 1

使用下面的命令。control-plane-endpoint 是负载均衡器的访问地址,可以暂时使用某个 master 节点 IP。

kubeadm init \ 
--control-plane-endpoint=11.50.138.91:6443 \ 
--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \ 
--kubernetes-version=v1.35.0 \ 
--pod-network-cidr=10.244.0.0/16

等待组件都就绪,然后执行:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf

然后可以使用 kubectl 命令了。

4.2 增加控制面节点

在第一个 master 节点上生成认证密钥:

kubeadm init phase upload-certs --upload-certs

结果如下:

[root@mengshi3-apack-node01 ~]# kubeadm init phase upload-certs --upload-certs
[upload-certs] Storing the certificates in Secret "kubeadm-certs" in the "kube-system" Namespace
[upload-certs] Using certificate key: 2921c3475df1449711486d503a7202f5d2a97126f416dd4627c35a52faf5db0d

然后生成添加控制面节点的命令:

kubeadm token create --print-join-command --certificate-key 2921c3475df1449711486d503a7202f5d2a97126f416dd4627c35a52faf5db0d

会生成下面的命令。在需要加进来的节点机器上执行,即可把节点作为控制面节点加入 k8s 集群:

kubeadm join 11.50.138.91:6443 --token wicgtt.nc2z5fj7cqa2ypah --discovery-token-ca-cert-hash sha256:2ffcfac3c76d84c0aceff773e9ec8a7a59155f721eeaaa024df1f055abfe4c96 --control-plane --certificate-key 2921c3475df1449711486d503a7202f5d2a97126f416dd4627c35a52faf5db0d

4.3 calico 安装

上面的组件装完之后,节点状态是 NotReady,这时候,需要安装网络插件以支持集群的节点间网络通信,常见的插件有 flannel 和 calico,对于简单的小集群可以使用 flannel,这里我们选择功能更强的 calico。

然后 Node Ready,集群部署成功。

在这里插入图片描述

这是 calico 的 yaml 文件,可以修改镜像地址之后 apply 到集群。安装完了之后,观察组件状态是否全部 Running。

在这里插入图片描述

https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml

注意点

1. registry.k8s.io/pause:3.10.1 镜像

需要在 containerd 的 k8s.io ns 下放一个 registry.k8s.io/pause:3.10.1 镜像,在拉起核心组件的时候需要。但我们无法直接访问这个仓库,所以可能需要 tag 一下。使用下面的命令:

ctr -n k8s.io images tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.10.1 registry.k8s.io/pause:3.10.1

2. 可用的镜像站点

https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6

docker.m.daocloud.io

目录

  1. 1. kubeadm、kubelet、kubectl 安装
  2. 2. 安装 containerd
  3. 2.1 解压安装包,设置 systemd
  4. 2.2 安装 runc
  5. 2.3 安装 CNI 插件
  6. 3. 使用 cgroup v2
  7. Debian/Ubuntu(默认已安装)
  8. CentOS/RHEL 7+
  9. Fedora(UEFI 模式)
  10. Arch Linux
  11. 4. 集群部署
  12. 4.1 第一个 master 节点
  13. 4.2 增加控制面节点
  14. 4.3 calico 安装
  15. 注意点
  16. 1. registry.k8s.io/pause:3.10.1 镜像
  17. 2. 可用的镜像站点
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Ubuntu 下 AMD AI MAX 395+ 使用 ROCm 加速部署千问 Qwen 模型
  • 鸿蒙 AI 开发:Skill 与 MCP 概念及 Trae 部署实战
  • 鸿蒙金融理财全栈:生态合作与数据变现实践
  • DeepSeek 时代下普通人的生存与出路思考
  • 低代码 AI 平台:Coze 与 Dify 深度对比
  • Slack 机器人集成:基于 InstructPix2Pix 的快速修图协作方案
  • Ubuntu 22.04 离线部署 Qwen3-4B 模型:vLLM 与 Docker 多卡配置指南
  • 按下 F5 后,浏览器前端底层发生了什么?
  • GitHub Copilot 安装与使用指南
  • VSCode GitHub Copilot 接入 OpenAI 兼容自定义模型
  • Jan:开源本地大模型客户端,支持离线部署与 API 服务
  • AI 编程助手深度对比:OpenCode vs Claude Code vs Kimi Code CLI
  • 暗黑 2 存档编辑器技术架构:二进制解析与前端可视化实现
  • OpenClaw:意外爆红的 AI 助手如何改写开源规则
  • Claude Code 模型配置详解
  • OpenClaw AI 智能体框架入门与部署指南
  • KrLongAI 旗博士本地部署 AI 数字人口播自动化工程实践
  • VS Code GitHub 扩展登录报错:尚未完成授权此扩展使用 GitHub 的操作
  • 在 JetBrains IDE(Idea/WebStorm)中配置使用 Claude Code
  • 国内 AI 大模型近 200 个:开源闭源、参数量与榜单的潜力解析

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online