Hyper-V宿主机重启后无法使用microk8s kubectl的解决方法
microk8s kubectl无法连接的问题 问题场景
宿主机重启后,执行microk8s kubectl get node -o wide报错:
Unable to connect to the server: dial tcp
172.31.119.125:16443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
已知master节点IP已变更,更新本地~/.kube/config后可通过普通kubectl连接集群,但microk8s kubectl仍无法正常工作,已尝试清理缓存、重启MicroK8s、搜索旧IP文件等操作,问题未解决。
可行解决方法
检查并更新MicroK8s内部kubeconfig
microk8s kubectl默认使用snap内部的配置文件,而非用户家目录的~/.kube/config。查看该文件内容:cat /var/snap/microk8s/current/credentials/client.config若其中
server字段仍指向旧IP,直接修改为新的master节点IP,或者用以下命令覆盖配置:microk8s config > /var/snap/microk8s/current/credentials/client.config修改完成后重启MicroK8s:
microk8s stop && microk8s start验证apiserver绑定地址
检查MicroK8s的apiserver启动参数是否绑定了旧IP:cat /var/snap/microk8s/current/args/kube-apiserver查找
--advertise-address或--bind-address参数,若设置了旧IP,将其修改为新的master节点IP,然后重启MicroK8s。检查Hyper-V网络可达性
- 在宿主机ping新的master节点IP,确认网络连通性;
- 检查虚拟机防火墙规则,确保16443端口(K8s apiserver端口)处于开放状态;
- 验证Hyper-V虚拟交换机配置,确保虚拟机获取的IP在正确的网段且无冲突。
重置MicroK8s(谨慎操作)
若以上方法均无效,可尝试重置MicroK8s集群(会清空所有集群资源,需提前备份重要数据):microk8s reset重置完成后重新初始化集群:
microk8s start
内容的提问来源于stack exchange,提问作者Will Huang

