注意:由于 1.2 中使用 ovn 20.03,文件目录相对之前有调整,因此升级过程中无法对外提供服务,会存在一段时间的网络中断。
- 给 node 增加 annotation
- kubectl annotate no --all ovn.kubernetes.io/allocated=true
- 给 ip 增加 label
- kubectl get ip --no-headers | while read line;do
- ip=$(echo $line | awk '{print $1}')
- subnet=$(echo $line | awk '{print $5}')
- kubectl label ip $ip $subnet= --overwrite
- done
- 停止 kube-ovn-controller
- kubectl scale deployment -n kube-system --replicas=0 kube-ovn-controller
- 停止 ovn-central
- kubectl scale deployment -n kube-system --replicas=0 ovn-central
- 移动 ovndb 文件,需要在所有 master 机器执行响应操作
- mkdir -p /etc/origin/ovn/
- cp /etc/origin/openvswitch/ovnnb_db.db /etc/origin/ovn/
- cp /etc/origin/openvswitch/ovnsb_db.db /etc/origin/ovn/
- 下载相关 yaml 文件
- wget https://raw.githubusercontent.com/alauda/kube-ovn/release-1.2/yamls/crd.yaml
- wget https://raw.githubusercontent.com/alauda/kube-ovn/release-1.2/yamls/ovn.yaml
- wget https://raw.githubusercontent.com/alauda/kube-ovn/release-1.2/yamls/kube-ovn.yaml
修改 yaml
- 如果 ovn-central 为高可用模式,修改 ovn.yaml 文件,ovn-central deployment 的
replicas
和NODE_IPS
修改为和旧的一致. - 修改 kube-ovn.yaml,如果 ovn-controller deployment 的 command 中的 —default-cidr=$POD_CIDR —node-switch-cidr=$JOIN_CIDR 和旧的不一致,修改为旧的一致
- 如果 ovn-central 为高可用模式,修改 ovn.yaml 文件,ovn-central deployment 的
- 更新 OVN,等待所有 Pod Ready,手动删除所有 ovs-ovn Pod,运行
kubectl ko diagnose all
确认状态正常
kubectl apply -f crd.yaml
kubectl apply -f ovn.yaml
- 更新 Kube-OVN,等待所有 Pod Ready,手动删除所有 kube-ovn-cni Pod,运行
kubectl ko diagnose all
确认状态正常
kubectl apply -f kube-ovn.yaml