聊聊如何让办公网络直连Kubernetes集群PodIP/ClusterIP/Service DNS等
· 阅读需 9 分钟
想象一下,如果您日常使用的研发测试 Kubernetes 集群,能够有以下效果:
- 在办公网络下直接访问 Pod IP
- 在办公网络下直接访问 Service Cluster IP
- 在办公网络下直接访问集群内部域名,类似 service.namespace.svc.cluster.local
会不会很方便,很优雅?
笔者近期就给内部的一个新集群做过类似的调整,特此分享一些心得。
PS: 这里的 直接访问/直连 指的是不借助 Ingress/hostnetwork:true/NodePort 等常规方式,直接访问 k8s 内部 IP or DNS,起到 网络拉平 的效果。
先决条件 - 三层路由方案
办公网段跟 Kubernetes 集群大概率是不同的网段,所以要想打通最自然的想法是依赖路由。相应的,Kubernetes 跨主机网络方案,我们最好也选择三层路由方案或者 Host-GW,而非 Overlay,不然数据包在封包解包过程中可能会失去路由方向。
我们的集群选用的是 Calico,且关闭了 IPIP 模式。具体的 IPPool 配置如下:
-> calicoctl get IPPool -o yaml
apiVersion: projectcalico.org/v3
items:
- apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: default-pool
spec:
blockSize: 24
cidr: 10.233.64.0/18
# 关闭IPIP模式
ipipMode: Never
natOutgoing: true
nodeSelector: all()
vxlanMode: Never
kind: IPPoolList
