在 Debian 上使用 kubeadm 部署 Kubernetes 集群
一 环境准备与前置条件
sudo swapoff -a,并在 /etc/fstab 中注释 swap 行。sudo apt update && sudo apt upgrade -ysudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release二 安装容器运行时
sudo apt install -y containerdsudo mkdir -p /etc/containerd && containerd config default | sudo tee /etc/containerd/config.tomlsudo systemctl restart containerd && sudo systemctl enable containerdcurl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker && sudo systemctl enable docker
三 安装 kubeadm kubelet kubectl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
sudo systemctl enable --now kubelet
apt-mark hold 防止组件被意外升级导致版本不一致。四 初始化控制平面与配置 kubectl
sudo kubeadm init --apiserver-advertise-address=<master-ip> --pod-network-cidr=10.244.0.0/16
# 或使用 Calico 时:
# sudo kubeadm init --apiserver-advertise-address=<master-ip> --pod-network-cidr=192.168.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
# 或新版 Calico Operator 方式:
# kubectl apply -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
# kubectl apply -f https://docs.projectcalico.org/manifests/custom-resources.yaml
kubectl get nodes
kubectl cluster-info
kubectl get pods -n kube-system
kubeadm join ... 命令,用于 Worker 加入集群。五 加入工作节点与常用运维
kubeadm init 输出中的完整命令,或重新生成:# 重新生成 join 命令(在 Master 上)
kubeadm token create --print-join-command
# Worker 上执行输出的命令,例如:
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
sudo ufw allow 6443/tcp
sudo ufw allow 10250/tcp
sudo ufw allow 10251/tcp
sudo ufw allow 10252/tcp
sudo ufw allow 10255/tcp
sudo ufw reload
sudo kubeadm resetsudo rm -rf /etc/cni/net.dsudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X