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
-
禁用
IPIP1 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 -
应用
1kubectl apply -f calico.yaml -
验证
1kubectl 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