一、k8s初始化
在使用kubeadm初始化k8s節點時,使用了指定了POD的IPV4 CIDR範圍 --pod-network-cidr=10.42.0.0/16
APISERVER_IP="192.168.56.10"
NODE_NAME="k8s-master-1"
sudo kubeadm init \
--kubernetes-version=v1.28.15 \
--skip-phases=addon/kube-proxy \
--apiserver-advertise-address=$APISERVER_IP \
--node-name=$NODE_NAME \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.42.0.0/16 \
--service-cidr=10.43.0.0/16 \
--cri-socket unix:///var/run/containerd/containerd.sock
二、helm部署Cilium
在部署時未配置未明確指定CIDR,由於默認是"10.0.0.0/8",因此創建出阿里的pod會被分配在"10.0.0.0/8"的子網下。
helm install cilium \
--namespace kube-system \
--set operator.replicas=1 \
--set k8sServiceHost=${K8S_HOST_IP} \
--set k8sServicePort=${K8S_HOST_PORT} \
--set hubble.relay.enabled=true \
--set hubble.ui.enabled=true \
.
一般情況會通過helm卸載cilium,重新部署並指定CIDR
sudo helm uninstall cilium -n kube-system
helm install cilium \
--namespace kube-system \
--set operator.replicas=1 \
--set k8sServiceHost=${K8S_HOST_IP} \
--set k8sServicePort=${K8S_HOST_PORT} \
--set hubble.relay.enabled=true \
--set hubble.ui.enabled=true \
--set ipam.mode=cluster-pool \
--set ipam.operator.clusterPoolIPv4PodCIDRList="{10.42.0.0/16}" \
--set ipv4-pod-cidr=10.42.0.0/16 \
.
就算使用helm卸載後,還是有部分配置會殘留,導致部分pod一樣分配在"10.0.0.0/8"的子網下。
三、徹底卸載cilium
# 卸載cilium
sudo helm uninstall cilium -n kube-system
# 刪除CNI配置(每個k8s節點都執行)
sudo rm -rf /etc/cni/net.d/
# 刪除相關crd
sudo kubectl get crd | grep cilium | awk '{print $1}' | xargs sudo kubectl delete crd
使用Helm部署cilium
查看結果
kubectl -n kube-system exec ds/cilium -- cilium-dbg status | grep IPAM