Skip to content

Commit

Permalink
optimize ovs upgrade script (#2512)
Browse files Browse the repository at this point in the history
  • Loading branch information
zhangzujian committed Mar 17, 2023
1 parent f8aabdf commit 36329d5
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 25 deletions.
40 changes: 15 additions & 25 deletions dist/images/upgrade-ovs.sh
@@ -1,30 +1,20 @@
#!/bin/bash

dsGenVer=`kubectl get ds -n kube-system ovs-ovn -o jsonpath={.metadata.generation}`
podNames=`kubectl get pod -n kube-system | grep ovs-ovn | awk '{print $1}'`
for pod in $podNames
do
podGenVer=`kubectl get pod -n kube-system $pod -o jsonpath={.metadata.labels.pod-template-generation}`
if [ $dsGenVer == $podGenVer ]
then
echo "pod $pod alreay upgraded"
continue
fi
echo "upgrade pod $pod"
kubectl delete pod -n kube-system $pod
set -e

desireNum=$(kubectl get daemonset -n kube-system | grep ovs-ovn | awk {'print $2'})
currentNum=$(kubectl get daemonset -n kube-system | grep ovs-ovn | awk {'print $3'})
readyNum=$(kubectl get daemonset -n kube-system | grep ovs-ovn | awk {'print $4'})
availableNum=$(kubectl get daemonset -n kube-system | grep ovs-ovn | awk {'print $6'})
echo "daemonset ovs-ovn, desire $desireNum, current $currentNum, ready $readyNum, available $availableNum"
while [ $desireNum != $currentNum ] || [ $desireNum != $readyNum ] || [ $desireNum != $availableNum ]
do
desireNum=$(kubectl get daemonset -n kube-system | grep ovs-ovn | awk {'print $2'})
currentNum=$(kubectl get daemonset -n kube-system | grep ovs-ovn | awk {'print $3'})
readyNum=$(kubectl get daemonset -n kube-system | grep ovs-ovn | awk {'print $4'})
availableNum=$(kubectl get daemonset -n kube-system | grep ovs-ovn | awk {'print $6'})
echo "ovs-ovn upgrade, desire $desireNum, current $currentNum, ready $readyNum, available $availableNum"
sleep 0.5
POD_NAMESPACE=${POD_NAMESPACE:-kube-system}

dsGenVer=`kubectl -n $POD_NAMESPACE get ds ovs-ovn -o jsonpath={.metadata.generation}`
for node in `kubectl get node -o jsonpath='{.items[*].metadata.name}'`; do
# delete pod with old version
kubectl -n $POD_NAMESPACE delete pod -l app=ovs,pod-template-generation!=$dsGenVer --field-selector spec.nodeName=$node
# wait the pod with new version to be created and delete it
while true; do
pod=`kubectl -n $POD_NAMESPACE get pod -l app=ovs,pod-template-generation=$dsGenVer --field-selector spec.nodeName=$node -o name`
if [ ! -z $pod ]; then
kubectl -n $POD_NAMESPACE delete $pod --wait=false
break
fi
sleep 0.1
done
done
5 changes: 5 additions & 0 deletions kubeovn-helm/templates/post-upgrade.yaml
Expand Up @@ -54,6 +54,11 @@ spec:
containers:
- name: post-upgrade-job
image: "{{ .Values.global.registry.address}}/{{ .Values.global.images.kubeovn.repository }}:{{ .Values.global.images.kubeovn.tag }}"
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
command:
- sh
- -c
Expand Down

0 comments on commit 36329d5

Please sign in to comment.