K8S 固定PODIP的方案---Calico


 

1. Calico官網  https://docs.projectcalico.org/archive/v3.18/about/about-calico

2.  我這里是在k8s環境在原有網絡插件flannel的基礎上,增加Calico的方式,故參考官網該鏈接  https://docs.projectcalico.org/archive/v3.18/getting-started/kubernetes/flannel/flannel

    2.1 請確認k8s的 /etc/kubernetes/manifests/kube-controller-manager.yaml 中 這兩個配置項 --cluster-cidr=<your-pod-cidr> and --allocate-node-cidrs=true

    2.2  下載這個文件 curl https://docs.projectcalico.org/archive/v3.18/manifests/canal.yaml -O

    2.3  下載到的canal.yaml文件用到了5個鏡像,其中有一個flannel我們已經有了且已安裝,其余四個手動下載並在每一台k8s環境中都加載安裝     

   

docker pull docker.io/calico/node:v3.18.4
docker pull docker.io/calico/cni:v3.18.4
docker pull docker.io/calico/kube-controllers:v3.18.4
docker pull docker.io/calico/pod2daemon-flexvol:v3.18.4
docker save -o calico-node-v3.18.4.tar calico/node:v3.18.4
docker save -o calico-pod2daemon-flexvol-v3.18.4.tar calico/pod2daemon-flexvol:v3.18.4
docker save -o calico-cni-v3.18.4.tar calico/cni:v3.18.4
docker save -o calico-kube-controllers-v3.18.4.tar calico/kube-controllers:v3.18.4
#安裝步驟需要每台(master和node)均執行
docker load -i calico-node-v3.18.4.tar
docker load -i calico-pod2daemon-flexvol-v3.18.4.tar
docker load -i calico-cni-v3.18.4.tar
docker load -i calico-kube-controllers-v3.18.4.tar

    2.4 修改canal.yaml文件(官網下載后,有幾個地方必須修改才行,打√的是新增的  具體見以下截圖)

 

    2.5 執行該文件加載服務 kubectl apply -f canal.yaml

 

3.  calicoctl

    我這里是直接下載安裝calicoctl單個文件到操作系統之上, 該文件傳到那台宿主機上,就可以在那台上使用calicoctl命令

curl -O -L https://github.com/projectcalico/calicoctl/releases/download/v3.18.4/calicoctl
chmod +x calicoctl
將該文件放到目錄 /usr/local/bin/
 
        

4.  固定IP的方式

    4.1  cat /etc/cni/net.d/10-calico.conflist

    4.2 

     "ipam": {
              "type": "calico-ipam"
          },

4.3  使用固定的PODIP,在自己的yaml文件中增加 "cni.projectcalico.org/ipAddrs": "[\"192.168.0.1\"]"

5.  固定IP池的方式

    5.1  cat /etc/cni/net.d/10-calico.conflist

    5.2 

  "ipam": {
              "type": "calico-ipam"
          },

  5.3 編輯一個 ippool.yaml文件

 5.3 注意使用 calicoctl 命令對ippool.yaml文件進行創建和銷毀,當然它還有很多指令可以用, -h 可以看更多

5.4 注意使用 我們自己的yaml文件的pod使用該ipool池中指定的ip段


6. 經驗之談,單個IP如果yaml文件卸載再安裝的時候,會報IP已經被占;同樣的取IP池這種情況會使用另外的ip 為了解決該問題。

需要先釋放之前pod占用的ip然后在執行即可。 對於ip池這種除了釋放ip以外,還要重新執行ippool.yaml文件才能使用之前的ip





 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM