我在 VMware vSphere 私有云上裸机部署了 Kubernetes 集群。
规格:
- 操作系统:Ubuntu 20.04.3 Cloud Image(也在尝试 18.04 和 21.04)
- Kubernetes:1.23.1(也在尝试 1.21.8)- 使用 kubeadm 和 kube-proxy 解聚(使用 strictARP 和 ipvs 模式)
- CRI:码头工人 20.10.12
- MetalLB v0.11.0(第 2 层模式)
- 纤毛 1.11.1
- 192.168.50.0/24 子网中的所有节点
当我简单地添加部署时:
kubectl create deployment nginx --image k8s.gcr.io/nginx:latest
并曝光:
kubectl expose deployment nginx --type=LoadBalancer --port=80
一切似乎都很好。服务从 MetalLB 池中获取 ExternalIP:
nginx LoadBalancer 10.96.56.118 198.168.50.152 80:32325/TCP 4s
kube-ipvs0 接口上发布的新 ip 地址:
kube-ipvs0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default
...
inet 198.168.50.152/32 scope global kube-ipvs0
valid_lft forever preferred_lft forever
...
但是我无法从所有通过 ExternalIP 的 K8s 节点以及其他 LAN 访问服务,curl 返回:
curl: (7) Failed to connect to 192.168.50.152 port 80: No route to host
ClusterIP 运行良好,我可以从节点访问它。