在 Debian 上用 kubeadm 搭建可用的 Kubernetes 集群
一 环境与前置准备
sudo swapoff -a 并注释 /etc/fstab 中的 swap 行);按需放行防火墙端口(如 6443、10250 等);确保 kubelet 能开机自启(sudo systemctl enable kubelet)。二 安装容器运行时与 Kubernetes 组件
sudo apt-get update && sudo apt-get install -y docker.iosudo systemctl start docker && sudo systemctl enable dockersudo apt-get update && sudo apt-get install -y containerdsudo systemctl start containerd && sudo systemctl enable containerdcurl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpgecho "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/$version/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl && sudo apt-mark hold kubelet kubeadm kubectlapt-key add 和 kubernetes-xenial 源,功能可用但新方式(signed-by + keyrings)更安全、可维护;若网络访问受限,可替换为国内镜像源(如 pkgs.k8s.io 的国内镜像)。三 初始化控制平面与配置 kubectl
sudo kubeadm init --pod-network-cidr=10.244.0.0/16sudo kubeadm init --pod-network-cidr=192.168.0.0/16mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f https://docs.projectcalico.org/manifests/calico.yamlkubectl cluster-info、kubectl get nodes(节点状态应为 Ready)。四 加入工作节点与验证
kubeadm token create --print-join-command,复制输出的完整 kubeadm join ... 命令。sudo kubeadm join <Master-IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>kubectl get nodes(所有节点 Ready)kubectl create deployment nginx-app --image=nginx --replicas=2kubectl expose deployment nginx-app --name=nginx-web-svc --type=NodePort --port=80 --target-port=80kubectl get svc nginx-web-svc(在 NodePort 字段可见端口,如 31743)curl http://<任意节点IP>:<NodePort>。五 常见问题与优化建议
apt-mark hold kubelet kubeadm kubectl 锁定版本,升级前先在测试环境验证。kubeadm init 后执行 kubectl taint nodes --all node-role.kubernetes.io/control-plane- 以允许调度系统 Pod 到控制平面。