Calico for Kubernetes
文章目录
本文出自官方文档,原文连接
前期准备
Calico
支持使用ETCD
与Kubernetes API
作为数据的存储。官方文档建议在自建的Kubernetes
中使用Kubernetes API
作为后端存储,混合部署时使用ETCD
,如在OpenShift
与Kubernetes
组成混合云时使用Etcd
。混合云的场景我想应该比较少见,详细情况就去查看官网吧,这里使用Kubernetes API
作为存储后端
安装
集群小于50
节点
注意: 使用Calico
时Pod
的网络默认将使用192.168.0.0/16
的网段。如果宿主机也是该网段内,需要调整calio.yaml
文件内的CALICO_IPV4POOL_CIDR
|
|
将Calico
的网络模式修改为BGP
默认Calico
的网络模式是IPIP
的。如果要更高效的转发,使用BGP
下载calicoctl
|
|
修改默认配置项
修改calico.yaml
文件,搜索DaemonSet
关键字,在calico/node
容器的ENV
中,增加以下ENV
-
禁用
IPIP
1 2
- name: CALICO_IPV4POOL_IPIP value: "off"
-
指定
Pod
的网络地址范围。如果不指定,默认的Pod
段是192.168.0.0/16
,这样无论怎么配置,都不会真正实现BGP
。仍然使用的是IPIP
隧道模式1 2
- name: CALICO_IPV4POOL_CIDR value: 172.20.0.0/16
-
应用
1
kubectl apply -f calico.yaml
-
验证
1
kubectl get pods -n kube-system -o wide
容器的IP应该是在172.20.0.0/16
子网内的。否则没成功。新建集群删除重新配置,直接修改无效。官网原文有这么一段话:
calico/node can be configured to create a default IP pool for you, but only if none already exist in the cluster
创建BGPConfiguration
准备YAML
文件bgp.yaml
,详细参数意义请参考官方文档
|
|
应用
|
|
创建BGP Peer
给准备运行Router Reflector
的节点打上标签
|
|
增加BGP Peer
运行的节点规则与建立连接的规则
|
|
确保相应主机有指定的Label
|
|
验证
查看BGP Peer
|
|
查看路由表
|
|
此时,去往不同主机的Pod
网段的路由应该走宿主机网卡,而不是tunl0
接口。如果仍是tunl0
接口,说明还是IPIP
网络
文章作者 UnknowName
上次更新 2021-07-21