【K8s网络】安装Calico系统要求

参考: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 模式:

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 加密)
posted @ 2021-08-09 13:59  Varden  阅读(2596)  评论(0编辑  收藏  举报