一、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

image.png