环境介绍
系统版本 (mini版本,比脸还干净的系统)
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.2 LTS
Release: 24.04
Codename: noble服务器ID列表
master 23.13.6.161
worker1 23.13.6.162
worker2 23.13.6.163
✅ 一、前提条件
所有节点都需要执行以下操作:
1. 修改主机名
# master 节点
sudo hostnamectl set-hostname master
# slave1 节点
sudo hostnamectl set-hostname slave1
# slave2 节点
sudo hostnamectl set-hostname slave22. 修改 hosts 文件
每台机器 /etc/hosts 添加如下内容:
23.13.6.161 master
23.13.6.162 slave1
23.13.6.163 slave23. 关闭 swap
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab4. 关闭防火墙和 SELinux
sudo ufw disable5. 加载内核模块 & 系统参数
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOFsudo modprobe overlay
sudo modprobe br_netfiltercat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOFsudo sysctl --system✅ 二、安装 containerd(所有节点)
1. 安装依赖和 containerd
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 这里可能会下载失败,如果下载失败了 执行一下“rm -f /etc/apt/keyrings/docker.gpg”在重新下载,直到成功为止
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y containerd.io2. 配置 containerd 默认配置
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml编辑 /etc/containerd/config.toml:
搜索
SystemdCgroup,将其改为true
SystemdCgroup = true以下为快速修改命令
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml3. 启动 containerd
sudo systemctl restart containerd
sudo systemctl enable containerd✅ 三、安装 kubeadm、kubelet、kubectl(所有节点)
1. 添加 Kubernetes 源
sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update2. 安装工具
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl✅ 四、初始化 Master 节点
只在 master 节点执行:
1. 初始化集群
sudo kubeadm init
--apiserver-advertise-address=23.13.6.161 \
--image-repository=registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16成功后会输出类似如下命令,供 worker 节点加入用:
kubeadm join 23.13.6.161:6443 --token d3zle4.i36xroja3xrvgwnz \
--discovery-token-ca-cert-hash sha256:a7b01bc2c99ea018e5fc3329d03fe6560175115c4c88a5359c9333896f7106da
2. 配置 kubectl 使用权限
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config✅ 五、安装 Pod 网络插件(master 节点)
这里以 Flannel 为例:
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml✅ 六、Worker 节点加入集群
在 slave1 和 slave2 上执行 kubeadm join 命令,例如:
kubeadm join 23.13.6.161:6443 --token d3zle4.i36xroja3xrvgwnz \
--discovery-token-ca-cert-hash sha256:a7b01bc2c99ea018e5fc3329d03fe6560175115c4c88a5359c9333896f7106da✅ 七、验证集群状态(master 节点)
kubectl get nodes输出应该为:
NAME STATUS ROLES AGE VERSION
master Ready control-plane 5m v1.30.0
slave1 Ready <none> 2m v1.30.0
slave2 Ready <none> 2m v1.30.0✅ 八、可能会用到的命令
转换镜像名称
ctr -n k8s.io images tag \
registry.aliyuncs.com/google_containers/pause:3.9 \
registry.k8s.io/pause:3.9