Kubernetes集群部署
准备工作
(所有节点执行)
- 三台ubuntu
- master:192.168.11.100
- node1:192.168.11.11
- node2:192.168.11.22
设置主机名
(各自设置)
- master 节点
1
2sudo hostnamectl set-hostname master
exec bash - node1 节点
1
2sudo hostnamectl set-hostname node1
exec bash - node2 节点
1
2sudo hostnamectl set-hostname node2
exec bash
添加 hosts 解析
(所有节点执行)1
2
3
4
5sudo tee -a /etc/hosts <<EOF
192.168.11.100 master
192.168.11.11 node1
192.168.11.22 node2
EOF
禁用 swap
(所有节点)1
2sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab
配置内核参数
(所有节点)1
2
3
4
5
6
7
8
9
10
11
12
13sudo tee /etc/modules-load.d/k8s.conf <<EOF
br_netfilter
EOF
sudo modprobe br_netfilter
sudo tee /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sudo sysctl --system
安装 containerd
(所有节点)
- 更新 apt 源
1
sudo apt update
- 安装 containerd
1
sudo apt install -y containerd
- 创建配置目录(如果不存在)
1
sudo mkdir -p /etc/containerd
- 生成默认配置文件
1
sudo containerd config default | sudo tee /etc/containerd/config.toml
- 关键:国内镜像 + systemd cgroup
1
2
3sudo sed -i 's|sandbox_image = "registry.k8s.io/pause:.*"|sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9"|g' /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml - 重启并开启 containerd 服务
1
2sudo systemctl restart containerd
sudo systemctl enable containerd - 查看 containerd 状态确认运行中
1
sudo systemctl status containerd
安装 Kubernetes
添加 Kubernetes 源
(所有节点)1
2
3
4
5
6
7
8
9# 1. 添加 Kubernetes 国内 apt 源(阿里云)
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
# 2. 添加 GPG 公钥
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# 3. 更新源
sudo apt-get update
安装 kubelet、kubeadm、kubectl
(kubectl 可只在 master 装)1
2
3
4
5
6# 1. 安装
sudo apt-get install -y kubelet kubeadm kubectl
# 2. 锁定版本,避免系统升级时自动升级
sudo apt-mark hold kubelet kubeadm kubectl
sudo systemctl enable --now kubelet
初始化 master 节点
(只在 master 执行)1
2
3
4
5
6# 初始化 master 节点
sudo kubeadm init \
--apiserver-advertise-address=192.168.11.100 \
--control-plane-endpoint=master \
--pod-network-cidr=10.244.0.0/16 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
如果安装中断,有残留文件,先执行:1
2
3sudo kubeadm reset -f
sudo systemctl restart containerd
sudo rm -rf ~/.kube /etc/kubernetes/pki /etc/kubernetes/manifests
初始化成功后,执行提示中的命令以配置 kubectl:
1 | mkdir -p $HOME/.kube |
安装网络插件
(只在 master 执行)
以 calico 为例:
1 | # 下载yaml |
加入节点
(在 node1 和 node2 执行)
初始化 master 成功后会输出一个 kubeadm join 命令,形如:
1 | kubeadm join 192.168.11.100:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash> |
在 node1 和 node2 上运行这个命令即可加入集群。
如果没保存,可以在 master 上用下面命令重新获取:
1 | kubeadm token create --print-join-command |
验证集群状态
(master 上)1
kubectl get nodes
看到三台机器 STATUS 是 Ready 就说明集群搭建成功。

