天天看点

升级 etcd datastore 模式的calico

版本兼容性

calico kubernetes 新增功能
v3.21 1.20、1.21、1.22 ​​calico 可以选择non-privileged and non-root 运行​​
v3.20 1.19、1.20、1.21 resources management 支持Golang API
v3.19 1.19、1.20、1.21 ​​VPP data plane​​,​​kubectl 管理calico​​
v3.18 1.18、1.19、1.20 veth_mtu 可以自动设置,避免包过大导致网络不通
v3.17 1.17、1.18、1.19

下载manifest

下载文件后,手动修改相关配置,至少也要修改​

​etcd_endpoints​

# 1、网络和网络策略管理都是用Calico
# 默认下载最新版本
curl https://docs.projectcalico.org/archive/v3.17/manifests/calico-etcd.yaml -O    

# 2、网络策略管理用Calico和网络用flannel
curl https://docs.projectcalico.org/archive/v3.17/manifests/canal-etcd.yaml -O      

我的修改内容

# Auto-detect the BGP IP address.
            - name: IP
              value: "autodetect"
            - name: IP_AUTODETECTION_METHOD
              value: "can-reach=www.baidu.com"
            # Enable IPIP
            - name: CALICO_IPV4POOL_IPIP
              value: "CrossSubnet"
            # Enable or Disable VXLAN on the default IP pool.
            - name: CALICO_IPV4POOL_VXLAN
              value: "Never"
            - name: CALICO_IPV4POOL_CIDR
              value: "10.96.0.0/12"      

备份原来的cm、deploy

如果不放心,可以备份之前版本的相关yaml
kubectl get cm -n kube-system  calico-config -oyaml > calico-config.yaml
kubectl get deploy -n kube-system  calico-kube-controllers -oyaml > calico-kube-controllers.yaml      

升级calico

# 会进行滚动升级
kubectl apply -f calico.yaml

# 持续关注升级状态
watch kubectl get pods -n kube-system      

确认calico pod 状态

kubectl get pods -n kube-system|grep calico
calico-kube-controllers-58dc97fd86-f4pnl         1/1     Running   0          16h
calico-node-28mm2                                1/1     Running   0          15h
calico-node-97wvk                                1/1     Running   0          15h
calico-node-9g2t9                                1/1     Running   0          15h
calico-node-czl6j                                1/1     Running   0          16h      

安装calicoctl

有四种方式安装,这里以binary举例

移除旧的calicoctl 实例,安装新的​​calicoctl​​ 并且配置后管理​​calico​​

下载binary包,并配置环境变量

curl -O -L  https://github.com/projectcalico/calicoctl/releases/download/v3.17.6/calicoctl
chmod +x calicoctl      

配置calicoctl 连接 etcd

这里etcd集群没有配置证书

使用配置文件的方式连接

apiVersion: projectcalico.org/v3
kind: CalicoAPIConfig
metadata:
spec:
  datastoreType: "etcdv3"
  etcdEndpoints: "http://etcd1:2379,http://etcd2:2379"
  ...      

使用环境变量的方式连接

ETCD_ENDPOINTS=http://etcdip:2379 calicoctl get bgppeers      
ETCD_ENDPOINTS=http://192.168.10.16:2379 calicoctl version
Client Version:    v3.17.3
Git commit:        5eb50600
Cluster Version:   v3.17.3
Cluster Type:      k8s,bgp,kubeadm      

官方文档

继续阅读