天天看點

更新 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      

官方文檔

繼續閱讀