1. 问题描述, 使用腾讯云VPC(Virtual Private Cloud)即专有网络, 初始化kubernetes init指定公网ip, 初始化失败

kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<公网ip> --ignore-preflight-errors=NumCPU

截取提示错误信息

Nov 23 20:09:16 mm.com kubelet[22940]: E1123 20:09:16.997560 22940 kubelet.go:2252] node "mm.com" not found
Nov 23 20:09:17 mm.com kubelet[22940]: E1123 20:09:17.053858 22940 controller.go:125] failed to ensure node lease exists, will retry in 7s, error: Get https://118.89.82.5:6443/apis/coordination.k8s.io/v1beta1
Nov 23 20:09:17 mm.com kubelet[22940]: E1123 20:09:17.097695 22940 kubelet.go:2252] node "mm.com" not found
Nov 23 20:09:17 mm.com kubelet[22940]: E1123 20:09:17.101372 22940 reflector.go:125] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: Failed to list *v1.Pod: Get

2. 查找原因

1. 确认安全组开启

2. 确认防火墙端口全部开启

3. 对比之前使用KVM VPS的网络ifconfig, 发现VPC专有网络只有内网IP, 使用内网IP是可初始化成功的, 确认原因在网卡这里.

4. 对比VPC与弹性公网IP与ECS公网IP区别, VPC看不实例网卡, 帮指定公网ip初化时失败.

比较点 VPC EIP
支持的网络环境 专有网络 专有银山乡与经典网络
是否能够单独持有 支持 不支持
是否支持在ECS上的弹性插拔 支持 不支持
ECS实例网卡上是否能看到该IP EIP网卡可见模式和多EIP网卡可见模式下可见 经典网络:能看到 专有网络VPC:看不到

3. 解决, 进行腾讯EIP直通, 网卡可见公网ip. 参考地址EIP直通

1. 工单申请EIP

2. 运行脚本前确认ifcfg-eth0原文件未修改, 如有更改请恢复.

3. 下载脚本, 解压, 运行脚本.


wget https://main.qcloudimg.com/raw/7d07d336030fb1324f3d55c891434612/eip_direct.zip

unzip eip_direct.zip


chmod +x eip_direct.sh



./eip_direct.sh install <公网ip>

4. 查看是否成功, 在内网ip下有还有个公网ip.

ip a

5. 登录腾讯云控制台, 在更多中选择直通并确定.

6. 可能碰到的问题

如果你之前开了直通, 且重装了系统, 这时候在系统内无法上网的, 因为之前的IP是直通的.
需要你解绑删除刚刚的直通ip, 重新申请一个IP, 重复2-5步骤.
检查ip a, 不是ifconfig.

7. 重新指定公网IP初始化kubernetes

kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<公网ip> --ignore-preflight-errors=NumCPU