- kubernetes 要求集群内各节点(包括 master 节点)能通过 Pod 网段互联互通。
- calico 使用 IPIP 或 BGP 技术(默认为 IPIP)为各节点创建一个可以互通的 Pod 网络。
- Calico 从 v3.13 开始,集成了 eBPF 数据平面(系统内核5.3+)
官网:https://www.tigera.io/project-calico/
官方文档:https://projectcalico.docs.tigera.io/about/about-calico
~]# cd /opt/k8s/work
# #此下载的是最新版本的
]# curl https://docs.projectcalico.org/manifests/calico.yaml -O
]# vim calico.yaml
...
typha_service_name: "calico-typha"
# IP automatic detection
- name: IP_AUTODETECTION_METHOD
value: "interface=ens33" #根据实际网卡名称匹配
- name: CALICO_IPV4POOL_IPIP
value: "Never"
- name: CALICO_IPV4POOL_CIDR
value: "10.68.0.0/16"
- name: cni-bin-dir
hostPath:
path: /opt/k8s/bin
...
- 将 Pod 网段地址修改为
10.68.0.0/16
;与我们的全局变量以及kubelet config配置里的CLUSTER_CIDR变量的值保持一致
]# kubectl apply -f calico.yaml
]# kubectl get pods -n kube-system -o wide
~]# for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "cd /opt/k8s/work && curl -L https://github.com/projectcalico/calico/releases/download/v3.24.3/calicoctl-linux-amd64 -o calicoctl && chmod +x calicoctl && mv calicoctl /usr/local/bin"
done
~]# calicoctl version
Client Version: v3.24.3
Git commit: d833a9e38
~]# calicoctl node status