https://blog.youkuaiyun.com/qq_21187515/article/details/101363521
------------------
Kubernetes集群里有三种IP地址,分别如下:
Node IP:Node节点的IP地址,即物理网卡的IP地址。
Pod IP:Pod的IP地址,即docker容器的IP地址,此为虚拟IP地址。
- 同Service下的pod可以直接根据PodIP相互通信
- 不同Service下的pod在集群间pod通信要借助于 cluster ip
Cluster IP:Service的IP地址,此为虚拟IP地址。
Service的IP地址,此为虚拟IP地址。外部网络无法ping通,,他没有一个“实体网络对象”来响应,Cluster IP只能结合Service Port组成一个具体的通信端口,单独的Cluster IP不具备通信的基础,并且他们属于Kubernetes集群这样一个封闭的空间
目前我测试下来,calico网络下,集群里所有的容器之间,是可以互相ping 的通的,即便是在不同的node上
1. 安装
使用kubectl apply -f 安装yaml, https://docs.projectcalico.org/archive/v3.16/manifests/calico.yaml
2. calico有些node无法安装成功,是running状态但是一直不成功,pod里的docker中也无法访问外网
有一个node,使用brctl show看了下网桥,发现比正常的node上多了一个br-a00dc0297f46,导致一直无法安装成功
CALICO_IPV4POOL_IPIP:是否启用IPIP模式,启用IPIP模式时,Calico将在node上创建一个tunl0的虚拟隧道。
IP Pool可以使用两种模式:BGP或IPIP。使用IPIP模式时,设置 CALICO_IPV4POOL_IPIP="always",不使用IPIP模式时,设置为"off",此时将使用BGP模式。
IPIP是一种将各Node的路由之间做一个tunnel,再把两个网络连接起来的模式,启用IPIP模式时,Calico将在各Node上创建一个名为"tunl0"的虚拟网络接口。
- name: CALICO_IPV4POOL_IPIP
value: "off"
其中enss 是物理网卡的前缀,
# 定义ipv4自动发现网卡规则
- name: IP_AUTODETECTION_METHOD
value: "interface=enss.*"
# 定义ipv6自动发现网卡规则
- name: IP6_AUTODETECTION_METHOD
value: "interface=enss.*"