注意:由于 1.2 中使用 ovn 20.03,文件目录相对之前有调整,因此升级过程中无法对外提供服务,会存在一段时间的网络中断。

    1. 给 node 增加 annotation
    1. kubectl annotate no --all ovn.kubernetes.io/allocated=true
    1. 给 ip 增加 label
    1. kubectl get ip --no-headers | while read line;do
    2. ip=$(echo $line | awk '{print $1}')
    3. subnet=$(echo $line | awk '{print $5}')
    4.  
    5. kubectl label ip $ip $subnet= --overwrite
    6. done
    1. 停止 kube-ovn-controller
    1. kubectl scale deployment -n kube-system --replicas=0 kube-ovn-controller
    1. 停止 ovn-central
    1. kubectl scale deployment -n kube-system --replicas=0 ovn-central
    1. 移动 ovndb 文件,需要在所有 master 机器执行响应操作
    1. mkdir -p /etc/origin/ovn/
    2. cp /etc/origin/openvswitch/ovnnb_db.db /etc/origin/ovn/
    3. cp /etc/origin/openvswitch/ovnsb_db.db /etc/origin/ovn/
    1. 下载相关 yaml 文件
    1. wget https://raw.githubusercontent.com/alauda/kube-ovn/release-1.2/yamls/crd.yaml
    2. wget https://raw.githubusercontent.com/alauda/kube-ovn/release-1.2/yamls/ovn.yaml
    3. wget https://raw.githubusercontent.com/alauda/kube-ovn/release-1.2/yamls/kube-ovn.yaml
    1. 修改 yaml

      1. 如果 ovn-central 为高可用模式,修改 ovn.yaml 文件,ovn-central deployment 的 replicasNODE_IPS 修改为和旧的一致.
      2. 修改 kube-ovn.yaml,如果 ovn-controller deployment 的 command 中的 —default-cidr=$POD_CIDR —node-switch-cidr=$JOIN_CIDR 和旧的不一致,修改为旧的一致
    2. 更新 OVN,等待所有 Pod Ready,手动删除所有 ovs-ovn Pod,运行 kubectl ko diagnose all 确认状态正常
    1. kubectl apply -f crd.yaml
    2. kubectl apply -f ovn.yaml
    1. 更新 Kube-OVN,等待所有 Pod Ready,手动删除所有 kube-ovn-cni Pod,运行 kubectl ko diagnose all 确认状态正常
    1. kubectl apply -f kube-ovn.yaml