Linux 支持 Kubernetes 集群管理的实践指南
一 架构与组件概览
二 快速上手流程 kubeadm
sudo swapoff -a 并注释 /etc/fstab 中的 swap 行,避免 kubelet 报错与性能劣化。sudo systemctl start docker && sudo systemctl enable dockersudo apt-get update && sudo apt-get install -y apt-transport-https curlcurl -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.listsudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectlsudo systemctl enable --now kubeletsudo kubeadm init --apiserver-advertise-address=<MASTER_IP> --pod-network-cidr=10.244.0.0/16mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/configkubeadm init 输出中的 kubeadm join ... 命令加入;若 token 过期,在主控节点执行 kubeadm token create --print-join-command 重新生成。kubectl apply -f https://docs.projectcalico.org/v3.16/manifests/calico.yamlkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl get nodes 应显示所有节点状态为 Ready。三 高可用与控制平面部署
kubeadm init 配合 --control-plane-endpoint 指向 VIP/LB),或采用自动化工具(如 kops、kubespray)进行大规模与标准化部署。kubectl get pods -n kube-systemkubectl get endpoints kube-controller-manager -n kube-system、kubectl get endpoints kube-scheduler -n kube-system四 日常管理关键操作
kubectl drain <node> --ignore-daemonsetskubectl uncordon <node>kubeadm join 加入;移除可用 kubeadm reset(谨慎操作并先驱逐)。kubectl create deployment nginx --image=nginx:1.25 --replicas=3kubectl expose deployment nginx --port=80 --type=NodePortkubectl get pods,svc,deploy -A五 常见问题与排查要点
kubectl get pods -n kube-system -l k8s-app=calico(或 flannel)sudo systemctl status kubelet,查看日志 journalctl -u kubelet -fkubeadm token create --print-join-command 重新生成。sudo swapoff -a 并持久化;否则 kubelet 可能拒绝启动或性能异常。