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