安装最新版Calico

进入calico网站:

https://projectcalico.docs.tigera.io/getting-started/kubernetes/self-managed-onprem/onpremises#install-calico-with-etcd-datastore

1.下载yaml

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

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

  • etcd-key: # etcd的ca证书数据
  • etcd-cert: # etcd的ca证书数据
  • etcd-ca: # etcd的证书数据
1
2
3
4
5
6
# etcd-ca
cat /opt/etcd/ssl/ca.pem | base64 | tr -d '\n'
# etcd-cert
cat /opt/etcd/ssl/ca.pem | base64 | tr -d '\n'
# etcd-key
cat /opt/etcd/ssl/server-key.pem | base64 | tr -d '\n'


3.编辑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”

4.编辑自己环境中的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的参数值一样:

5.添加apiserver环境参数

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

1
2
3
4
5
6
7
# master apiserver
- name: KUBERNETES_SERVICE_HOST
value: "192.168.100.45"
- 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=,有这个错calico-node会反复重启CrashBackoff

6.修改IP_AUTODETECTION_METHOD 参数

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

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

3.4 的版本不需要设置 工作模式bgp (旧版本默认是ipip)

7.calico-controller添加apiserver环境参数

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

1
2
3
4
5
6
7
# master apiserver
- name: KUBERNETES_SERVICE_HOST
value: "192.168.100.45"
- name: KUBERNETES_SERVICE_PORT
value: "6443"
- name: KUBERNETES_SERVICE_PORT_HTTPS
value: "6443"

参考资料