上一篇我们部署了Flannel网络,并且所有的节点状态已经发现了改变,这一篇我们来了解下另外一个网络插件:Calico。
在安装calico之前,为了避免2个网络插件的冲突,先卸载掉刚才安装的flannel组件
卸载Flannel
kubectl delete -f kube-flannel.yml
安装Calico
1.将calico.yaml文件下载下来。
# 打开这个网址 https://docs.projectcalico.org/manifests/calico.yaml
# 会跳转到calico最新地址(目前最新为v3.25)
# https://calico-v3-25.netlify.app/archive/v3.25/manifests/calico.yaml
wget https://calico-v3-25.netlify.app/archive/v3.25/manifests/calico.yaml
2. 修改calico镜像地址 ,由于外网原因,这里将镜像地址修改为daocloud的镜像地址
image: docker.io/calico/cni:v3.25.0
image: docker.io/calico/cni:v3.25.0
image: docker.io/calico/node:v3.25.0
image: docker.io/calico/node:v3.25.0
image: docker.io/calico/kube-controllers:v3.25.0
修改为
image: m.daocloud.io/docker.io/calico/cni:v3.25.0
image: m.daocloud.io/docker.io/calico/cni:v3.25.0
image: m.daocloud.io/docker.io/calico/node:v3.25.0
image: m.daocloud.io/docker.io/calico/node:v3.25.0
image: m.daocloud.io/docker.io/calico/kube-controllers:v3.25.0
一键修改命令为
sed -i 's#docker.io#m.daocloud.io/docker.io#g' calico.yaml
3.修改配置
添加下面3个值的配置
# ens 根据实际网卡开头配置 如果你的网卡是eth0,那么就需要修改为eth.*
- name: IP_AUTODETECTION_METHOD
value: "interface=ens.*"
# 保持和Pod网段一致,如果不记得可以在/etc/kubernetes/manifests/kube-controller-manager.yaml中查看cluster-cidr的内功
- name: CALICO_IPV4POOL_CIDR
value: "10.96.0.0/12"
# DefaultEndpointToHostAction会导致 在VM环境下无法ping通网关169.254.1.1,详见:Frequently asked questions | Calico Documentation
- name: DefaultEndpointToHostAction
value: "RETURN"
如果不修改可能会遇到下面报错:
root@k8s-master:~# kubectl describe pod -n kube-system calico-node-6xkvc
Name: calico-node-6xkvc
Namespace: kube-system
....
Warning Unhealthy 2m16s (x2 over 2m17s) kubelet Readiness probe failed: calico/node is not ready: BIRD is not ready: Error querying BIRD: unable to connect to BIRDv4 socket: dial unix /var/run/calico/bird.ctl: connect: connection refused
4.安装calico组件
kubectl apply -f calico.yaml
5.验证pod状态
在配置后,重新apply之后会发现calico网络已经安装完毕
至此,calico网络也安装完毕。
虽然学会了2种网络的安装,但是对于现阶段的的环境来说,并没有看出来2种网络之间有什么区别。这些将在后续的文章中来详细讲解。