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 同意,不得擅自转载本文,否则后果自负