EC2 Ubuntu实例部署K8s集群遇6443连接拒绝及Pod异常求助
Kubernetes集群部署异常排查与修复建议
1. 检查节点基础状态
- 执行
kubectl get nodes确认节点状态,若显示NotReady,执行kubectl describe node ip-172-31-46-185查看Conditions字段,定位NetworkUnavailable等核心异常。 - 检查kubelet运行状态:
systemctl status kubelet,确认服务无崩溃或配置错误。
2. 解决Flannel Pod Pending问题
Flannel依赖集群初始化时指定的10.244.0.0/16 Pod网段,若初始化未配置会导致调度失败:
- 检查kubeadm初始化命令是否包含
--pod-network-cidr=10.244.0.0/16,若缺失,修改kube-controller-manager配置:- 编辑静态Pod配置:
vi /etc/kubernetes/manifests/kube-controller-manager.yaml - 在
command列表中添加--cluster-cidr=10.244.0.0/16 - 保存后kubelet会自动重启该组件
- 编辑静态Pod配置:
- 移除控制节点调度污点(单节点集群需允许Pod调度到控制节点):
kubectl taint nodes --all node-role.kubernetes.io/control-plane- - 重新应用Flannel配置:
kubectl apply -f <你的flannel.yaml路径> - 查看Flannel Pod调度日志:
kubectl describe pod kube-flannel-ds-b7c2w -n kube-flannel,根据Events字段排查具体阻塞原因。
3. 修复kube-proxy CrashLoopBackOff
- 查看崩溃日志:
kubectl logs kube-proxy-rgm5g -n kube-system --previous - 常见修复方案:
- 重置iptables规则:
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X,然后删除Pod触发重启:kubectl delete pod kube-proxy-rgm5g -n kube-system - 检查
/var/lib/kube-proxy/config.conf中的apiserver地址是否为172.31.46.185:6443,确认节点能正常访问该地址。
- 重置iptables规则:
4. 修复kube-scheduler READY 0/1问题
- 查看调度器日志:
kubectl logs kube-scheduler-ip-172-31-46-185 -n kube-system - 常见修复:
- 编辑静态Pod配置
/etc/kubernetes/manifests/kube-scheduler.yaml,确保command中包含--bind-address=0.0.0.0(或节点内网IP),且kubeconfig路径正确。 - 验证RBAC权限:执行
kubectl get clusterrolebinding kube-scheduler,若权限缺失,创建以下RBAC绑定文件并应用:
执行apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kube-scheduler roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:kube-scheduler subjects: - kind: ServiceAccount name: kube-scheduler namespace: kube-systemkubectl apply -f kube-scheduler-rbac.yaml
- 编辑静态Pod配置
5. 验证CNI配置正确性
检查节点上的Flannel CNI配置文件/etc/cni/net.d/10-flannel.conflist是否存在且内容正确:
{ "name": "cbr0", "cniVersion": "0.3.1", "plugins": [ { "type": "flannel", "delegate": { "hairpinMode": true, "isDefaultGateway": true } }, { "type": "portmap", "capabilities": { "portMappings": true } } ] }
若文件缺失,手动创建后重启kubelet:systemctl restart kubelet
内容的提问来源于stack exchange,提问作者jackazjimmy
相关产品推荐
相关产品推荐

