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