k8s Pod服务通过IP对外访问
前言
k8s v1.14.2版本提供了5种访问Pod的方式(hostNetwork,hostPort,NodePort,LoadBalancer和Ingress),但都不符合通过PodIp直接访问容器的需求,这边的需求是直接访问Pod的Ip,并指定Ip创建Pod
外部访问逻辑
指定k8s生成PodIp范围关闭calico默认隧道模式(IPIP),添加路由器路由(PodIP范围内的ip跳转到k8s-master节点),允许k8s-master节点转发并添加iptables转发规则,指定Ip创建Pod(可选,看需求)
操作
以下步骤需要重新搭建
1、修改calico配置文件
修改calico.yaml文件配置
vim calico.yaml
把默认IPIP禁用掉,这一步是因为我们访问是通过传统的BGP模式,而calico默认设置为IPIP模式,这一步是为了统一路由协议,能够正确的转发数据包。修改完成后,k8s会在k8s集群内自动添加内部BGP路由。
# Enable IPIP
- name: CALICO_IPV4POOL_IPIP
value: "Off"
同时修改value生成范围(与–pod-network-cidr参数一致,这里的192.168.128.0/17范围