当前位置: 首页 > news >正文

手把手教程:Ubuntu 使用 kubeadm 从零搭建 Kubernetes v1.33 集群(含 Calico 网络、cri-docker)

前言

Kubernetes(简称 K8s)是当下主流容器编排开源平台,自动完成容器应用部署、扩缩容、运维管理。对于初学者、CKA 备考人员,使用kubeadm手动搭建集群是吃透 K8s 底层组件、网络前置条件、集群初始化流程的最佳方式。

本文基于 Ubuntu 系统,完整覆盖主机环境初始化、容器运行时 cri-docker 部署、kubeadm 工具安装、Master 控制平面初始化、Worker 节点加入、Calico 网络插件部署、集群状态校验全流程,所有命令均可直接复制执行,采用阿里云镜像加速解决国内拉取镜像慢问题。

环境说明: 系统:Ubuntu 22.04 K8s 版本:v1.33.0 容器运行时:cri-docker 网络插件:Calico 集群规划:1 台 Master 节点 cka-master (192.168.30.130),2 台 Worker 节点 cka-worker1、cka-worker2

一、所有节点统一前置环境配置(Master、Worker 全部执行)

1.1 永久关闭 swap 交换分区

K8s 强制要求关闭 swap,swap 会影响调度与内存管控性能,两条命令分别实现临时关闭、永久注释配置:

# 临时关闭swap swapoff -a # 永久注释fstab内swap配置,重启不失效 sed -i 's/.*swap.*/#&/' /etc/fstab

1.2 开启网桥 iptables 转发(K8s 网络必备)

开启br_netfilter内核模块,开启 ip 转发、网桥流量 iptables/ip6tables 转发,否则 Pod 跨节点通信异常:

# 加载网桥过滤模块并写入开机自启 # 写入/etc/modules-load.d/实现永久开机自启 cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF # 临时加载,重启失效 modprobe br_netfilter # 写入sysctl网络参数 cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF # 生效配置 sudo sysctl --system

1.3 安装 kubeadm、kubelet、kubectl 工具集

采用阿里云 K8s 国内镜像源,锁定 v1.33.0 版本,避免自动更新导致集群版本错乱:

# 安装依赖 apt-get update && apt-get install -y apt-transport-https curl # 写入阿里云k8s源 cat > /etc/apt/sources.list.d/k8s.list <<EOF deb https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/deb / EOF # 导入阿里云密钥 curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/deb/Release.key | apt-key add - # 更新源并指定版本安装工具 apt-get update apt-get install -y kubelet=1.33.0-1.1 kubeadm=1.33.0-1.1 kubectl=1.33.0-1.1 # 锁定版本,防止apt自动升级 apt-mark hold kubelet kubeadm kubectl

1.4 配置 kubectl、kubeadm 命令自动补全

日常操作 kubectl 频繁,开启 bash 自动补全大幅提升效率:

# 生成补全文件 kubectl completion bash > /etc/bash_completion.d/kubectl kubeadm completion bash > /etc/bash_completion.d/kubeadm # 生效补全 source /etc/bash_completion.d/kubectl source /etc/bash_completion.d/kubeadm

1.5 部署 cri-docker 容器运行时

新版 K8s 弃用 dockershim,必须使用 cri-docker 适配 Docker 作为 CRI 运行时:

# 指定cri端点为docker sock crictl config runtime-endpoint unix:///run/cri-dockerd.sock # 验证镜像拉取功能 crictl images

二、仅 Master 节点执行:初始化控制平面

2.1 生成并修改 kubeadm 初始化配置模板

通过 yaml 自定义集群广告地址、主机名、阿里云镜像仓库、CRI 套接字,规避国外镜像拉取失败问题:

# 导出默认初始化配置 kubeadm config print init-defaults > kubeadm.yaml # 修改广告地址为本机MasterIP sed -i 's/.*advert.*/ advertiseAddress: 192.168.30.130/g' kubeadm.yaml # 修改集群名称 sed -i 's/.*name.*/ name: cka-master/g' kubeadm.yaml # 替换镜像仓库为阿里云容器镜像 sed -i 's/imageRepo.*/imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers/g' kubeadm.yaml # 指定cri-docker套接字路径 sed -i 's/criSocket.*/criSocket: unix:\/\/\/run\/cri-dockerd.sock/' kubeadm.yaml # 加载网桥模块,执行集群初始化 modprobe br_netfilter kubeadm init --config kubeadm.yaml

2.2 保存 Worker 节点加入命令

初始化完成后控制台会输出 join 命令,示例如下(务必保存,Worker 节点加入集群使用):

kubeadm join 192.168.30.130:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:01f63cdf01927c5aee9c7488f62b9778f1758032dc12d48b72aa2a9a950f2aaa

若 token 过期,Master 节点执行kubeadm token create --print-join-command重新生成

2.3 普通用户 kubectl 权限授权

默认仅 root 能操作集群,复制管理员证书至普通用户家目录,免 sudo 执行 kubectl:

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

2.4 部署 Calico 网络插件

K8s 集群初始化完成后节点状态为 NotReady,必须部署网络插件实现 Pod 互通:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

三、Worker 节点操作:加入集群

3.1 Worker 前置操作

所有 Worker 节点先完整执行第一章节全部环境初始化命令:关闭 swap、网桥转发、安装 kube 工具、部署 cri-docker。

3.2 执行 join 命令接入集群

复制 Master 初始化输出的 join 指令,追加 cri 套接字参数:

kubeadm join 192.168.30.130:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:01f63cdf01927c5aee9c7488f62b9778f1758032dc12d48b72aa2a9a950f2aaa \ --cri-socket=unix:///var/run/cri-dockerd.sock

四、Master 节点校验集群、标记 Worker 角色

4.1 给 Worker 节点打角色标签

区分节点角色,便于运维识别:

kubectl label nodes cka-worker1 cka-worker2 node-role.kubernetes.io/worker=

4.2 完整集群状态检查

1. 查看集群全部系统 Pod,全部 Running 代表组件正常

kubectl pod -A

2. 查看集群节点状态,STATUS 为 Ready 即部署完成

kubectl get nodes

正常输出示例:

NAME STATUS ROLES AGE VERSION cka-master Ready control-plane 7m47s v1.33.0 cka-worker1 Ready worker 3m27s v1.33.0 cka-worker2 Ready worker 3m5s v1.33.0

五、手动 kubeadm 搭建总结与企业落地方案说明

手动搭建优缺点

优点:完整熟悉集群初始化、前置依赖、CRI、网络插件底层逻辑,适合学习、CKA 考证、测试环境。 缺点:多节点重复执行大量命令,手动操作易出错,节点扩容、环境标准化效率极低,完全不适合生产批量部署。

企业真实落地标准方案

在生产环境、大规模 K8s 集群建设中,几乎没有运维人员手动逐台执行 kubeadm 命令搭建集群。企业统一使用Ansible 自动化批量部署 K8s 集群

  1. Ansible 通过 playbook 脚本统一推送所有节点环境配置(关闭 swap、sysctl 网桥参数、安装 kube 工具、cri-docker);
  2. 自动分发 kubeadm 初始化模板,一键执行 Master 初始化;
  3. 自动生成 join 命令,批量让所有 Worker 节点接入集群;
  4. 自动部署 Calico、监控、存储类插件,统一标准化集群环境;
  5. 支持集群扩容、版本升级、清理环境等一键操作。

本文仅讲解手动 kubeadm 部署流程,下一篇 CSDN 博客将完整分享 Ansible 自动化一键搭建 K8s 集群完整 Playbook 脚本,实现三行命令完成整套集群部署,敬请关注。

结尾

本篇覆盖 kubeadm 搭建集群全流程踩坑点,国内阿里云镜像完美解决谷歌镜像无法访问问题,cri-docker 适配新版 K8s 兼容 Docker,Calico 网络插件保证 Pod 跨节点通信。动手操作一遍可以彻底吃透 K8s 集群启动前置条件与核心组件运行逻辑。

http://www.jsqmd.com/news/1051050/

相关文章:

  • Seedance 2.0 实战指南:Web端AI视频生成的输入逻辑与参数控制
  • 2026年科里奥利质量流量计国产品牌:五家优选深度解析 - 科技焦点
  • 一站式解决Windows运行库问题:VisualCppRedist AIO完全指南
  • 指纹识别研究的数据困境与解决方案:指纹数据集实战指南
  • 收藏!2026年AI大模型就业指南:小白也能入局的高薪赛道
  • 高端制造 半导体与集成电路 半导体硅片制造|纯技术专家线晋升 CTO 完整岗位阶梯
  • 2026 南京商用空调安装服务商多维度实测对比 商铺厂房办公甄选参考 - 小艾信息发布
  • 嵌入式GUI显示驱动适配实战:基于emWin的配置、调试与优化指南
  • 2026年上半年国内5款热门微信小程序制作工具全面对比
  • Java程序设计(第3版)第四章——super的第二种用法(1)
  • 想找靠谱长沙全屋定制生产厂家?这些要点不能错过! - 资讯速览
  • Beyond Compare 5授权密钥生成与激活的完整实战指南
  • 嵌入式GUI开发:emWin LISTVIEW控件从入门到实战应用
  • 2026年6月钢板生产企业推荐,不锈钢板/黄铜板/12Cr1MoV圆钢/16mn无缝管,钢板批发供应商推荐口碑分析 - 品牌推荐师
  • 2026年进口高端工业仪器仪表国产平替:五家优选深度解析 - 科技焦点
  • 抖音靠谱直播公会推荐渠道 - 资讯速览
  • SSRF漏洞:从内网探测到云元数据窃取,黑客是怎么绕过的?
  • Cover Letter黄金三步法:用Gemini 3.1 Pro这三步编辑一眼决定送审!
  • 工业机器人上位机开发实战:C#打通发那科机器人读写与轨迹控制
  • SAP PI/PO Proxy Runtime 附件机制深度解析,MessageSpecifier 如何让业务消息带上文档、图片与二进制内容
  • Qwen2.5 VL-72B 128K长序列训练优化:FSDP2+USP混合并行实战
  • AtCoder Beginner Contest 463 C - Tallest at the Moment 题解
  • 3分钟掌握AI图像增强:Real-ESRGAN-GUI让模糊照片重获新生
  • 2026年英国留学找哪个机构好:五家优选品牌深度解析 - 科技焦点
  • 基于YOLOv8的实时目标检测系统 AI图像分割 目标跟踪 视频识别
  • 如何在3分钟内免费体验完整三国杀游戏:无名杀网页版终极指南
  • 2026年服务好英国留学热门机构推荐:五家优选深度解析 - 科技焦点
  • security第十六集 引入JWT
  • 语法入门坑:Java 首行报错、大小写报错、符号不匹配新手全解
  • STM32F407 寄存器编程点亮 LED—— 从零搭建纯裸机工程