參考:https://docs.projectcalico.org/getting-started/kubernetes/requirements
節點要求
-
x86-64、arm64、ppc64le 或 s390x 處理器
-
具有 Linux 內核 3.10 或更高版本 所需依賴項的 。 以下發行版具有所需的內核及其依賴項,並且是 已知與 Calico 和 Kubernetes 配合良好。
- RedHat Linux 7
- CentOS 7
- CoreOS Container Linux stable
- Ubuntu 16.04
- Debian 8
-
Calico 必須能夠管理主機上的cali接口。 當 IPIP 是 啟用(默認),Calico 也需要能夠管理 tunl接口。 啟用 VXLAN 后,Calico 還需要能夠管理 vxlan.calico界面。
注意 :許多 Linux 發行版都包含 NetworkManager。 默認情況下,NetworkManager 不允許 Calico 管理接口。 如果您的節點具有 NetworkManager,在安裝 Calico 之前請完成以下步驟 防止 NetworkManager 控制 Calico 接口。
NetworkManager 操作默認網絡中接口的路由表 命名空間,其中 Calico veth 對被錨定以連接到容器。 這會干擾 Calico 代理正確路由的能力。
在以下位置創建配置文件 /etc/NetworkManager/conf.d/calico.conf阻止 NetworkManager 干擾接口:
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:tunl*;interface-name:vxlan.calico
- 如果您的 Linux 發行版附帶已安裝的 Firewalld 或其他 iptables 管理器,則應將其禁用。 這些可能會干擾 Calico 添加的規則並導致意外行為。
注意 : 如果需要主機防火牆,可以通過 Calico HostEndpoint 和 GlobalNetworkPolicy 進行配置。
鍵/值存儲
Calico v3.20 需要一個所有Calico組件都可以訪問的鍵/值存儲。 在 Kubernetes 上,您可以將 Calico 配置為直接訪問 etcdv3 集群或 使用 Kubernetes API 數據存儲。
網絡要求
確保您的主機和防火牆根據您的配置允許必要的流量。

特權
確保 Calico 具有 CAP_SYS_ADMIN 特權。
提供必要特權的最簡單方法是以 root 身份或在特權容器中運行 Calico。 當作為 Kubernetes 守護進程集安裝時,Calico 通過作為特權容器。 這需要允許 kubelet 以特權方式運行容器。 使用 pod 安全策略可以實現這一點。
Kubernetes 要求
支持的版本
我們針對以下 Kubernetes 版本測試 Calico v3.20。
- v1.19
- v1.20
- v1.21
由於 Kubernetes API 的變化,Calico v3.20 將無法運行 在 Kubernetes v1.15 或更低版本上。 v1.16-v1.18 可能有效,但不再進行測試。 較新的版本也可以使用,但我們建議升級到 Calico 版本 這是針對較新的 Kubernetes 版本進行測試的。
啟用 CNI 插件
Calico 作為 CNI 插件安裝。 kubelet 必須配置 通過傳遞 --network-plugin=cni 使用 CNI 網絡。 (在 kubeadm,這是默認設置。)
其他網絡提供商
Calico 必須是每個集群中唯一的網絡提供商。 我們的確是當前不支持將具有其他網絡提供商的集群遷移到 使用 Calico 網絡。
支持的 kube-proxy 模式
Calico 支持以下 kube-proxy 模式:
- iptables(默認)
- ipvs需要 Kubernetes >=v1.9.3。參考 在 Kubernetes 中啟用 IPVS(https://docs.projectcalico.org/networking/enabling-ipvs) 以 了解更多詳細信息。
IP池配置
為 pod IP 地址選擇的 IP 范圍不能與您網絡中的 IP 范圍任何其他 IP 地址重疊 ,包括:
- Kubernetes 服務集群 IP 范圍
- 分配主機 IP 的范圍
應用層策略要求
- MutatingAdmissionWebhook 啟用
- Istio v1.0 、 v1.1 、 v1.2 、 v1.3 、 v1.6 或 v1.7
請注意,Kubernetes 1.16+ 版需要 Istio 1.2 版或更高版本。 請注意,Istio 1.7 版需要 Kubernetes 1.16+ 版。
內核依賴
提示 :如果您正在使用推薦的發行版之一,您將已經滿足這些。
ip_set
ip_tables(對於 IPv4)
ip6_tables(對於 IPv6)
ipt_REJECT
ipt_rpfilter
ipt_set
nf_conntrack_netlink子系統
nf_conntrack_proto_sctp
sctp
xt_addrtype
xt_comment
xt_conntrack
xt_icmp(對於 IPv4)
xt_icmp6(對於 IPv6)
xt_ipvs, ipt_ipvs
xt_mark
xt_multiport
xt_rpfilter
xt_sctp
xt_set
xt_u32
xt_bpf(對於 eBPF)
vfio-pci
ipip(如果在 IPIP 模式下使用 Calico 網絡)
wireguard(如果使用 WireGuard 加密)
