Azure VM上Kubernetes单节点修改IP后kubelet启动失败、连接被拒求助
问题排查与解决方法
现有操作的核心错误
- 证书生成命令存在拼写错误:
adminserver是非法参数,正确参数应为apiserver,这直接导致你运行的证书生成命令未生效,所以会出现apiserver.crt和原始证书完全一致的情况 - 执行
kubeadm init phase相关命令时未填入实际的新IP值,空参数会默认读取旧的集群配置,相当于没有修改IP绑定 - 遗漏了Azure VM的特有网络配置检查:本地环境没有Azure的网络栈限制,所以操作后可以正常运行,但Azure默认的安全规则会拦截K8s的内部流量
- 未修改
/etc/kubernetes/manifests/下的静态Pod配置,kube-apiserver、etcd仍然绑定旧IP启动,所以会出现新IP连接被拒的报错
正确修复步骤
1. 停止服务并清理残留配置
systemctl stop kubelet # 若使用containerd则替换为systemctl stop containerd systemctl stop docker # 清理旧证书 rm -rf /etc/kubernetes/pki/* # 清理旧iptables规则 iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
编辑以下文件,将所有旧IP替换为新的VM内部IP:
/var/lib/kubelet/config.yaml/etc/default/kubelet/etc/kubernetes/manifests/kube-apiserver.yaml(重点修改--advertise-address、--etcd-servers参数)/etc/kubernetes/manifests/etcd.yaml(重点修改--listen-client-urls、--listen-peer-urls、--initial-advertise-peer-urls参数)
2. 重新生成证书
将以下命令中的<新VM内部IP>替换为实际IP值后执行:
kubeadm init phase certs apiserver --apiserver-advertise-address <新VM内部IP> --apiserver-cert-extra-sans <新VM内部IP>,127.0.0.1,kubernetes,kubernetes.default,kubernetes.default.svc,kubernetes.default.svc.cluster.local
依次执行剩余证书生成命令:
kubeadm init phase certs apiserver-kubelet-clientkubeadm init phase certs front-proxy-cakubeadm init phase certs front-proxy-clientkubeadm init phase certs apiserver-etcd-clientkubeadm init phase certs etcd-cakubeadm init phase certs etcd-healthcheck-clientkubeadm init phase certs etcd/peer --apiserver-advertise-address <新VM内部IP>kubeadm init phase certs etcd/server --apiserver-advertise-address <新VM内部IP>
3. 重新生成kubeconfig并更新配置
kubeadm init phase kubeconfig all --apiserver-advertise-address <新VM内部IP> cp /etc/kubernetes/admin.conf ~/.kube/config
4. 调整Azure网络配置
- 进入Azure门户,打开对应VM的网卡配置页,找到「IP配置」选项,将IP转发设置为开启,否则Azure网络栈会拦截K8s的跨Pod流量
- 检查VM关联的网络安全组(NSG)入站规则,确保6443、2379-2380、10250等K8s必要端口对内部IP放通
5. 重启服务验证
systemctl daemon-reload # 若使用containerd则替换为systemctl restart containerd systemctl restart docker systemctl start kubelet
等待2分钟后执行kubectl get nodes验证集群状态即可。
内容的提问来源于stack exchange,提问作者Razvan
相关产品推荐
相关产品推荐

