Kubernetes集群(z-k8s)配置Cilium完全取代kube-proxy

Cilium完全取代kube-proxy运行Kubernetes 提供优化的网络架构

备注

kubeadm 初始化集群时候就可以跳过安装 kube-proxy :

kubeadm初始化集群时跳过安装kube-proxy
kubeadm init --skip-phases=addon/kube-proxy

但是对于已经部署 kube-proxy 的集群需要谨慎操作(会断网)

已经安装 kube-proxy 的替换

  • 对于已经安装了 kube-proxy 作为 DaemonSet 的Kubernetes集群,则通过以下命令移除 kube-proxy

警告

删除kube-proxy会导致现有服务中断链接,并且停止流量,直到Cilium替换完全安装好才能恢复

移除Kubernetes集群Kube-proxy DaemonSet
kubectl -n kube-system delete ds kube-proxy
# Delete the configmap as well to avoid kube-proxy being reinstalled during a Kubeadm upgrade (works only for K8s 1.19 and newer)
kubectl -n kube-system delete cm kube-proxy
# Run on each node with root permissions:
iptables-save | grep -v KUBE | iptables-restore
  • 设置Helm仓库:

设置cilium Helm仓库
helm repo add cilium https://helm.cilium.io/
  • 执行以下命令启用 cilium kube-proxy free 支持:

Cilium替换kube-proxy
#API_SERVER_IP=192.168.6.101
API_SERVER_IP=z-k8s-api.staging.huatai.me
# Kubeadm default is 6443
API_SERVER_PORT=6443
helm upgrade cilium cilium/cilium --version 1.11.7 \
    --namespace kube-system \
    --set kubeProxyReplacement=strict \
    --set k8sServiceHost=${API_SERVER_IP} \
    --set k8sServicePort=${API_SERVER_PORT}

备注

这里执行 helm upgrade 是因为我采用的是安装 Kubernetes集群(z-k8s) 时已经部署 Cilium网络 ,现在是更新配置。如果在安装时就启用 kube-proxy-free 则使用 helm install

  • 现在我们可以检查cilium是否在每个节点正常工作:

kubectl检查cilium的pods是否在各个节点正常运行
kubectl -n kube-system get pods -l k8s-app=cilium -o wide

完成上述步骤即完成了 Kube-proxy 完全替换成 Cilium ,验证是否工作正常可通过 Kubernetes集群(z-k8s)部署Cilium Ingress