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