Kubernetes多节点安装需遵循以下步骤并应对关键挑战:
一、环境准备
- 节点规划:至少1个Master(建议3个高可用)、多个Worker。确保节点间SSH互通,禁用swap(
swapoff -a
并注释/etc/fstab
中swap行)。 - 依赖配置:
- 同步时间:
timedatectl set-ntp true
- 关闭防火墙/SELinux(生产环境需放行K8s端口)
- 加载内核模块:
br_netfilter
、overlay
- 同步时间:
二、安装容器运行时
- Docker:
apt-get install docker.io cat > /etc/docker/daemon.json <<EOF {"exec-opts": ["native.cgroupdriver=systemd"]} EOF systemctl restart docker
- containerd:需配置
/etc/containerd/config.toml
并启用SystemdCgroup
。
三、安装Kubernetes组件
- 添加仓库并安装:
apt-get install -y kubelet=1.25.0-00 kubeadm=1.25.0-00 kubectl=1.25.0-00 systemctl enable kubelet
四、初始化Master节点
kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<MASTER_IP>
关键问题:
- 证书错误:若节点IP变更需重新生成证书(
kubeadm certs renew
) - 镜像拉取失败:使用阿里云镜像
registry.aliyuncs.com/google_containers
替换gcr.io
五、Worker节点加入集群
kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash <HASH>
挑战:
- Token过期:
kubeadm token create --print-join-command
生成新token - 网络阻断:确保6443、10250等端口开放(Calico需额外开放BGP端口179)
六、部署CNI网络插件
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
典型故障:
- CoreDNS pending:检查CNI配置文件是否覆盖
podCIDR
- Node NotReady:
journalctl -u kubelet
排查cgroup驱动冲突
七、实践经验
- 版本控制:严格统一kubeadm/kubelet/CRI版本,避免API兼容性问题
- 资源预留:Master节点需至少2核4GB内存,避免OOM导致控制平面崩溃
- 持久化存储:提前部署
nfs-client-provisioner
或CSI驱动
八、高级配置
- 高可用集群:使用Keepalived+HAProxy实现多Master负载均衡
- 证书管理:通过
cert-manager
自动续签Let's Encrypt证书
九、调试命令
kubectl get nodes -o wide
查看节点状态kubectl describe pod <pod-name>
诊断Pod调度失败原因kubectl logs -n kube-system <component-pod>
查看组件日志