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





 
----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
原文地址:https://www.cnblogs.com/xin1006/p/14989365.html