前提,已安装好k8s
1.下载calico yaml文件
curl https://docs.projectcalico.org/manifests/calico.yaml -O
2.修改yaml文件
vim calico.yaml,找到
- name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16"
将value修改为自己kubeadm init时指定的pod-network-cidr,实测不指定也没关系
增加两行命令(必须要改,有多个集群的网卡名称不一样时,使用正则表达式)
- name: IP_AUTODETECTION_METHOD
value: "interface=(ens.*|enp)" # ens
value要根据实际网卡配置,这可以让calico找到用于通信的网卡
增加后为- name: CLUSTER_TYPE
value: "k8s,bgp"
- name: IP_AUTODETECTION_METHOD
value: "interface=enp3s0" # ens 根据实际网卡开头配置
# Auto-detect the BGP IP address.
- name: IP
value: "autodetect"
3.kubectl apply -f calico.yaml即可成功
4.kubectl get pod -n kube-system查看pod是否成功启动
至此成功,我中间没有遇到错误,pod大概一两分钟就running了
如果coredns状态不对,可以尝试vim /etc/resolv.conf
修改为114.114.114.114
有可能calico pod没拉下来,可以提前ds pod使用查看需要拉取的镜像,一共有四个镜像calico/kube-controllers、calico/cni、calico/pod2daemon-flexvol、calico/node
docker pull docker.io/calico/cni:v3.22.2