你这里的「备节点」通常指 Kubernetes 集群中的 Worker 节点(工作节点)加入已有集群,或者是指 高可用架构中的备 Master 节点。下面我分两种情况说明,在 Debian 上如何做。
# 关闭 swap
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
# 加载内核模块
cat <<EOF | tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
modprobe br_netfilter
# 内核参数
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
apt update
apt install -y containerd
配置 containerd:
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
systemctl restart containerd
systemctl enable containerd
apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt update
apt install -y kubelet kubeadm kubectl
systemctl enable kubelet
kubeadm token create --print-join-command
输出类似:
kubeadm join 192.168.1.10:6443 \
--token xxxx \
--discovery-token-ca-cert-hash sha256:xxxx
kubeadm join 192.168.1.10:6443 \
--token xxxx \
--discovery-token-ca-cert-hash sha256:xxxx
kubectl get nodes
看到新节点为 Ready 即成功。
如果是 多 Master 高可用架构,还需要:
kubeadm init phase upload-certs --upload-certs
kubeadm token create --print-join-command
kubeadm join <VIP>:6443 \
--token xxx \
--discovery-token-ca-cert-hash sha256:xxx \
--control-plane \
--certificate-key xxx
节点 NotReady
→ 检查 CNI(Calico / Flannel)是否安装
swap 未关闭
→ kubelet 会启动失败
时间不同步
→ 安装 chrony 或 ntp
如果你能说明:
我可以给你更精确的命令。