高级配置
calico

K3s 默认自带一个用于强制执行网络策略的控制器。即便你无需切换到任何容器网络接口(CNI)来实施 Kubernetes 网络策略,但像 Calico 这样的其他 CNI 能帮助弥补 Kubernetes 网络策略可能存在的一些功能不足。更多信息请参阅:https://github.com/k3s (opens in a new tab) - io/k3s/issues/1308。

以下文档假定你想切换到 Calico 的策略引擎,因此要设置 --disable-network-policy@server:*。

1. 创建不使用 Flannel 的集群

默认情况下,K3s 会部署 Flannel CNI 来处理环境中的网络连接。由于在本示例中我们打算使用 Calico,所以必须禁用默认的 CNI。这可以在创建集群时通过使用 --k3s-arg 标志来实现。

使用以下命令创建集群:

k3d cluster create "${clustername}" \
  --k3s-arg '--flannel-backend=none@server:*' \
  --k3s-arg '--disable-network-policy@server:*' \
  --k3s-arg '--cluster-cidr=192.168.0.0/16@server:*'

在这个示例中:

"${clustername}" 替换为集群名称(或者设置一个变量)。

集群将使用 “192.168.0.0/16” CIDR,如果你想更改默认的 CIDR,务必同时在 custom-resources.yaml 中进行修改。

2. 安装 Calico

安装 Calico 的一个简单方法是使用 Tigera 运算符。该运算符有助于我们在环境中配置、安装和升级 Calico。

使用以下命令安装运算符:

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/tigera-operator.yaml

该运算符会定期检查安装清单。我们通过这个清单来指示 Tigera 运算符安装 Calico。

使用以下命令创建安装清单:

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/custom-resources.yaml

此时,安装工作正在进行中,我们可以使用以下命令进行验证:

kubectl get tigerastatus

一分钟后,你应该会看到类似以下的结果:

NAME        AVAILABLE   PROGRESSING   DEGRADED   SINCE
apiserver   True        False         False      30s
calico      True        False         False      10s
ippools     True        False         False      70s

很棒,Calico 已启动并运行!

3. IP 转发

默认情况下,Calico 会禁用容器内的 IP 转发。在使用负载均衡器的某些场景下,这可能会引发问题。你可以在此处了解更多关于负载均衡器的信息。为解决这个问题,我们必须在 calico-node 容器组中开启 IP 转发标志。

使用以下命令通过运算符启用转发:

kubectl patch installation default --type=merge --patch='{"spec":{"calicoNetwork":{"containerIPForwarding":"Enabled"}}}'

4. 接下来做什么?

查看我们的其他指南,以下是一些建议:

为你的设置添加额外的节点。请参阅相关内容。

暴露你的服务。请参阅相关内容。

参考资料

https://rancher.com/docs/k3s/latest/en/installation/network-options/
https://docs.tigera.io/calico/latest/getting-started/kubernetes/k3s/quickstart