Kubeadm 安装 Kubernetes1.33 完整教程(含核心概念答疑)

目录

一、环境说明

二、所有节点统一前置操作(必做)

[1. 永久关闭 Swap 分区](#1. 永久关闭 Swap 分区)

[2. 配置桥接流量转发与 iptables 规则](#2. 配置桥接流量转发与 iptables 规则)

[3. 安装容器运行时(cri-dockerd)](#3. 安装容器运行时(cri-dockerd))

[4. 安装 K8s 核心组件(kubeadm/kubelet/kubectl)](#4. 安装 K8s 核心组件(kubeadm/kubelet/kubectl))

[三、Master 节点专属操作](#三、Master 节点专属操作)

[1. 自定义配置并初始化集群](#1. 自定义配置并初始化集群)

[2. 配置 kubectl 管理员权限](#2. 配置 kubectl 管理员权限)

[3. 部署 Calico 网络插件](#3. 部署 Calico 网络插件)

[四、Worker 节点入群操作](#四、Worker 节点入群操作)

[1. 节点前置准备](#1. 节点前置准备)

[2. 执行入群命令](#2. 执行入群命令)

[3. 节点打标签(区分角色)](#3. 节点打标签(区分角色))

五、集群状态验证

六、核心概念答疑(高频必懂)

[1. 桥接流量转发&iptables规则作用](#1. 桥接流量转发&iptables规则作用)

[2. kubeadm / kubelet / kubectl 三者作用](#2. kubeadm / kubelet / kubectl 三者作用)

[3. Calico 网络插件作用](#3. Calico 网络插件作用)

[4. 底层网络配置 和 Calico 的核心区别](#4. 底层网络配置 和 Calico 的核心区别)

[5. 安装顺序是否必须固定?](#5. 安装顺序是否必须固定?)

七、总结


一、环境说明

  • 系统:Ubuntu 20.04/22.04

  • K8s版本:v1.33.0

  • 容器运行时:cri-dockerd(适配Docker)

  • 集群架构:1 Master + N Worker

  • 网络插件:Calico

前置规则 :所有安装步骤顺序固定、不可颠倒、不可跳过,乱序直接报错、集群异常。

二、所有节点统一前置操作(必做)

1. 永久关闭 Swap 分区

K8s 强制要求关闭 Swap,否则 kubelet 无法启动

bash 复制代码
swapoff -a sed -i 's/.*swap.*/#&/' /etc/fstab

验证:free -h,Swap total 为 0 即为成功

2. 配置桥接流量转发与 iptables 规则

加载内核模块、开启IP转发,为容器网络提供底层系统支撑

bash 复制代码
# 加载桥接内核模块 
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF modprobe br_netfilter 
# 配置网络转发参数 
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

3. 安装容器运行时(cri-dockerd)

K8s 1.24+ 不再默认支持Docker,必须手动安装 cri-dockerd 适配Docker作为容器运行时,此步骤为强制必做,缺失会导致集群初始化失败

bash 复制代码
# 安装依赖 
apt install git wget curl build-essential -y
 # 下载cri-dockerd源码
 git clone https://github.com/Mirantis/cri-dockerd.git cd cri-dockerd # 编译安装 make install
 # 配置系统服务
 cat > /etc/systemd/system/cri-docker.service <<EOF [Unit] Description=CRI Interface for Docker Application Container Engine Documentation=https://docs.mirantis.com After=network-online.target docker.service Wants=network-online.target docker.service [Service] Type=notify ExecStart=/usr/local/bin/cri-dockerd --container-runtime-endpoint fd:// Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target EOF 
# 启动并开机自启
 systemctl daemon-reload systemctl start cri-docker systemctl enable cri-docker
 # 验证运行状态 
systemctl status cri-docker

4. 安装 K8s 核心组件(kubeadm/kubelet/kubectl)

配置阿里云镜像源,统一安装 v1.33.0 版本(必须在容器运行时安装完成后执行)

bash 复制代码
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 # 设置kubelet开机自启 
systemctl enable kubelet

配置阿里云镜像源,统一安装 v1.33.0 版本

bash 复制代码
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

三、Master 节点专属操作

1. 自定义配置并初始化集群

导出默认配置,修改镜像源、节点IP、CRI套接字,适配国内环境和Docker运行时

bash 复制代码
# 导出默认配置 
kubeadm config print init-defaults > kubeadm.yaml 
# 自定义配置(根据自己机器IP修改) 
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 sed -i 's/ criSocket.*/ criSocket: unix:\/\/\/run\/cri-dockerd.sock/' kubeadm.yaml 
# 初始化集群 
kubeadm init --config kubeadm.yaml

重要 :保存终端输出的 kubeadm join 命令,Worker节点入群必备

2. 配置 kubectl 管理员权限

让普通用户可通过kubectl管理集群

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

3. 部署 Calico 网络插件

K8s 无自带网络,必须部署CNI插件实现Pod通信

bash 复制代码
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

等待1-2分钟,Calico Pod全部Running,Master节点状态变为Ready


四、Worker 节点入群操作

1. 节点前置准备

所有Worker节点完整执行前文所有节点前置操作(关Swap、网络配置、安装K8s组件)

2. 执行入群命令

bash 复制代码
kubeadm join 192.168.30.130:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:xxxx \ --cri-socket=unix:///var/run/cri-dockerd.sock

3. 节点打标签(区分角色)

bash 复制代码
kubectl label nodes cka-worker1 cka-worker2 node-role.kubernetes.io/worker=

五、集群状态验证

bash 复制代码
# 查看所有节点状态(全部Ready为正常) 
kubectl get nodes
 # 查看所有核心Pod(全部Running为正常) 
kubectl get pod -A

六、核心概念答疑(高频必懂)

1. 桥接流量转发&iptables规则作用

属于Linux系统底层基建,所有容器环境通用:

  • 开启IP转发:将服务器变为小型路由器,允许容器、跨节点数据包转发

  • 加载br_netfilter:让iptables防火墙可以管控网桥模式的容器流量

  • 桥接调用iptables:支撑K8s Service负载均衡、端口映射、网络策略等核心功能

无此配置:容器跨节点不通、Service失效、集群网络彻底瘫痪

2. kubeadm / kubelet / kubectl 三者作用

  • kubelet:节点核心进程(所有节点必装),接收Master指令,负责创建、启停、监控节点上的Pod,是节点的核心管家

  • kubeadm:集群搭建工具,专门用于初始化Master节点、部署集群核心组件、生成节点入群命令,简化集群搭建

  • kubectl:集群命令行遥控器,用于查询、创建、删除集群所有资源,管理整个K8s集群

3. Calico 网络插件作用

属于K8s上层网络应用,依赖底层网络配置运行:

  • 为每个Pod自动分配独立IP

  • 实现跨节点Pod互通,规划集群路由

  • 提供网络隔离策略,限制Pod访问权限

  • 支撑K8s Service、负载均衡等网络功能

无Calico:仅单机容器互通,跨节点Pod无法通信,集群无法运行业务

4. 底层网络配置 和 Calico 的核心区别

  • 底层桥接/iptables配置:系统级地基,负责打通服务器网络通路,无任何IP管理、路由规划功能,所有容器环境都需要

  • Calico插件:K8s专属上层应用,在底层通路通畅的基础上,做精细化的Pod组网、IP分配、网络管控

通俗比喻:底层配置是修路铺路 ,Calico是分配门牌号、规划通行规则

5. 安装顺序是否必须固定?

核心结论:核心顺序绝对不能颠倒、不能跳过,仅节点并行操作可灵活

固定强制顺序:关闭Swap → 底层网络配置 → 安装容器运行时 → 安装K8s三件套 → 初始化Master → 配置kubectl权限 → 部署Calico → Worker入群

可灵活操作:所有节点的前置准备工作可并行执行,无需逐个节点串行

乱序后果:kubelet启动失败、Calico部署异常、节点NotReady、集群网络瘫痪


七、总结

  1. 底层网络配置是系统基础,Calico是K8s专属组网工具,二者层级不同、缺一不可;

  2. K8s三大核心组件分工明确,kubelet驻留节点、kubeadm搭建集群、kubectl管理集群;

  3. 严格遵循固定安装顺序,是集群安装成功的核心前提。

相关推荐
汪汪大队u2 小时前
从 Docker Compose 到 Kubernetes:物联网管理系统迁移实战(续1)
物联网·docker·容器·kubernetes
Elastic 中国社区官方博客2 小时前
使用 Elasticsearch 与 Kibana 中的 PromQL 调查 Kubernetes 基础设施问题
大数据·数据库·elasticsearch·搜索引擎·信息可视化·kubernetes·全文检索
馨谙2 小时前
云原生 Kubernetes 核心概念与组件详解
云原生·容器·kubernetes
云达闲人2 小时前
搭建DevOps企业级仿真实验环境:011Kubernetes 核心架构与组件
运维·kubernetes·devops·k8s 核心架构·k8s 组件解析·devops 实验环境·proxmox 虚拟化
苍煜2 小时前
Kubernetes 核心认知与集群架构(从Docker过渡到K8s)
docker·架构·kubernetes
修先生11 小时前
Kubernetes Dashboard 官方图形面板国内安装
云原生·容器·kubernetes
颯沓如流星16 小时前
【 Docker Desktop】基于Windows + WSL2 的环境配置, 快速部署一套Kubernetes Cluster
windows·docker·kubernetes
布吉岛的石头17 小时前
K8s Ingress配置踩坑实录:生产环境500+并发负载均衡最佳实践
容器·kubernetes·负载均衡
showyoui18 小时前
一次 GKE Sidecar 场景下的连通性排查实录
docker·微服务·容器·kubernetes·service_mesh