准备calico.yaml

进入calico网站:

Install Calico networking and network policy for on-premises deployments

找到 Install Calico > Kubernetes > Self-managed on-premises > Install Calico networking and network policy for on-premises deployments

 往下滑动页面,找到Install Calico步骤下的Manifest > Install Calico with etcd datastore

 点击Install Calico with etcd datastore然后跳转:

 如下找到Calico.yaml的下载连接,在k8s环境执行:

这个是比较新的版本v3.25.1的 calico:

curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/calico-etcd.yaml -o calico.yaml

也可以根据自己的需要,在calico网站找到以前的版本下载。

下载好calico.yaml.

编辑calico.yaml里的Secret段,data下定义的证书base64加密数据

  • etcd-ca: 
  • etcd-key:
  • etcd-cert: 

====================================

  • 这3个分别是:
  •  etcd的ca证书数据
  • etcd的证书key数据
  • etcd的证书数据

把这三个证书数据经过base64 方式加密,然后把加密后的数据粘贴到yaml中,但是注意负值加密后的数据不要把shell的提示符复制进去:

如:cat /opt/etcd/certs/ca.pem | base64 | tr -d '\n'

修改好后内容如下:

编辑etcd_endpoints:

我的k8s集群3个节点的etcd 的url分别是如下,编辑加到etcd_endpoints:后面

编辑etcd证书在calico pod中的挂载路径

这个可以自己设置,我的设置是:

  •   etcd_ca: "/calico-secrets/etcd-ca"
  •   etcd_cert: "/calico-secrets/etcd-cert"
  •   etcd_key: "/calico-secrets/etcd-key"

编辑自己环境中的pod IP段参数CALICO_IPV4POOL_CIDR

把CALICO_IPV4POOL_CIDR 和其value字段注释放开;

value设置成自己环境上kube-controoller-server中参数--cluster-cidr设置的值,比如我环境上的这个参数设置如下是:

--cluster-cidr=172.17.0.0/16 

 编辑value和kube-controller-server的参数值一样:

友情提示:

不知道如何设置这个参数的检查一下自己环境上kube-contrller-manager的systemd配置文件,找到相关配置项--cluster-cidr 把其赋值拷贝过来即可;

或者是kubelet的kubelet-conf.yaml,里面的配置项podCIDR。其值应该和kube-controller-manager的--cluster-codr 值是一致的,复制过来即可。

添加apiserver环境参数

在calico-node的DaemonSet 中添加env环境变量参数:

  •             - name: KUBERNETES_SERVICE_HOST
  •               value: "192.168.1.10"  # master apiserver 地址
  •             - name: KUBERNETES_SERVICE_PORT
  •               value: "6443"
  •             - name: KUBERNETES_SERVICE_PORT_HTTPS
  •               value: "6443"

添加这几个参数据的目的是给calico添加访问apiserver的环境变量(apiserver的masterIP和端口6443),为了解决在拉起calico后calico-node的报错Failed to reach apiserver error=<nil>,有这个错calico-node会反复重启CrashBackoff

修改IP_AUTODETECTION_METHOD 参数 

修改IP_AUTODETECTION_METHOD参数,这个根据自己环境上的实际情况修改,我的环境中:

网卡设备名称是ens开头如ens33这种,那就修改成interface=ens.*,如果你的环境上的网卡设备是eth那么改成interface=eth.*即可;

 calico-controller添加apiserver环境参数

 如果在使用kubectl apply -f calico.yaml后,caloco-contller一直重启CrashBackoff,检查日志报错Failed to reach apiserver error=<nil>,那么和calico-node同理,需要添加apiserver环境参数,在calico-controller的Deployment中添加env段中参数项:

  •             - name: KUBERNETES_SERVICE_HOST
  •               value: "192.168.1.10"  # master apiserver 地址
  •             - name: KUBERNETES_SERVICE_PORT
  •               value: "6443"
  •             - name: KUBERNETES_SERVICE_PORT_HTTPS
  •               value: "6443"

 启动calico部署:

kubectl apply -f calico.yaml

启动成功!

 注意查看READY列,需要保证健康状态都是1/1 ,否则说明calico工作不正常。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐