注意事项:

  1. kubelet 配置必须增加 --network-plugin=cni 选项
  2. kubec-proxy 组件不能采用 --masquerade-all 启动,因为会与 Calico policy 冲突,并且需要加上–proxy-mode=ipvs(ipvs模式),–masquerade-all=true(表示ipvs proxier将伪装访问服务群集IP的所有流量,)

一、停止flanneld服务

yaml形式安装的flanneld切换calico

  1. 利用之前部署的flanneld文件删除掉flanneld网络

    kubectl delete -f kube-flanneld.yaml`
  2. 删除路由
    我们删除网卡会自动删除这两个网卡的路由
ip link delete cnio
ip link delete flannel.1

删掉其他路由

ip route delete 10.244.0.0/24 via 192.168.25.61 dev eth0
ip route delete 10.244.1.0/24 via 192.168.25.61 dev eth0
ip route 172.17.92.0/24 dev docker0 proto kernel scope link src 172.17.92.1
  1. 清除网络规则

    iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

二进制安装的flanneld切换calico

  1. 关闭flanneld服务

    systemctl stop flanneld.service
    systemctl disable flanneld.service
  2. 执行上面的删除路由和网络规则的动作
  3. 修改docker.service文件

    vi /usr/lib/systemd/system/docker.service
    ##删掉该行与flanneld相关的配置
    EnvironmentFile=/run/flannel/subnet.env

重载并且重启

systemctl daemon-reload
systemctl restart docker
systemctl status docker

二、部署calico

参考与官网:https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises
镜像由于在国外很难下载,这里提前在别处准备好并且打包过来在节点上用,
cdsn的calico离线镜像下载地址:https://download.csdn.net/download/qq_25611295/15633642
下载部署文件:

curl https://docs.projectcalico.org/v3.9/manifests/calico-etcd.yaml -o calico.yaml

镜像打包命令:

docker image save docker.io/calico/kube-controllers:v3.9.6 |gzip -9 >calico_kube-controllers.tar.gz
docker image save docker.io/calico/cni:v3.9.6|gzip -9 >calico_cni.tar.gz
docker image save docker.io/calico/pod2daemon-flexvol:v3.9.6|gzip -9 >pod2daemon-flexvol.tar.gz
docker image save docker.io/calico/node:v3.9.6|gzip -9 >calico_node.tar.gz

具体步骤如下:
配置连接etcd地址,如果使用https,还需要配置证书。(ConfigMap,Secret)
根据实际网络规划修改Pod CIDR(CALICO_IPV4POOL_CIDR)
选择工作模式(CALICO_IPV4POOL_IPIP),支持BGP,IPIP

vi calico.yaml,找到下面行并修改

  1. calico.yaml中添加etd的ssl
    etcd-key: (cat /opt/etcd/ssl/server-key.pem |base64 -w 0)

etcd-cert: (cat /opt/etcd/ssl/server.pem |base64 -w 0)
etcd-ca: (cat /opt/etcd/ssl/ca.pem |base64 -w 0)
将对应的都添进去,将注释去掉:

# etcd-key: null     将对应ssl下的证书转换成base64编码放进来,并去掉注释
# etcd-cert: null
# etcd-ca: null
  1. calico.yaml中指定secert的配置落地的位置,直接去掉注释就可以
最后修改:2021 年 06 月 09 日 10 : 51 PM
如果觉得我的文章对你有用,请随意赞赏