Patch script for restarting kubelet and isolcpus_plugin services
This provides an example patch script for restarting kubelet and isolcpus_plugin services. TESTING: - PASS: Verified restart of kubelet and isolcpus_plugin services with designer patch install and remove. Story: 2008760 Task: 44541 Signed-off-by: Jim Gauld <james.gauld@windriver.com> Change-Id: Idf624051b7238f39c4238ad72a7d7ffe14395b8b
This commit is contained in:
parent
5ddeeda2d8
commit
426486ce05
@ -8,4 +8,5 @@ patch-scripts/EXAMPLE_MTCE
|
|||||||
patch-scripts/EXAMPLE_VIM
|
patch-scripts/EXAMPLE_VIM
|
||||||
patch-scripts/EXAMPLE_SYSINV
|
patch-scripts/EXAMPLE_SYSINV
|
||||||
patch-scripts/EXAMPLE_SERVICE
|
patch-scripts/EXAMPLE_SERVICE
|
||||||
|
patch-scripts/EXAMPLE_KUBELET
|
||||||
enable-dev-patch
|
enable-dev-patch
|
||||||
|
26
patch-scripts/EXAMPLE_KUBELET/centos/EXAMPLE_KUBELET.spec
Normal file
26
patch-scripts/EXAMPLE_KUBELET/centos/EXAMPLE_KUBELET.spec
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
Name: EXAMPLE_KUBELET
|
||||||
|
Summary: StarlingX In-Service kubelet Patch Script Example
|
||||||
|
Version: 1.0
|
||||||
|
Release: %{tis_patch_ver}%{?_tis_dist}
|
||||||
|
License: Apache-2.0
|
||||||
|
Group: base
|
||||||
|
Packager: Wind River <info@windriver.com>
|
||||||
|
Source0: kubelet-restart-example
|
||||||
|
|
||||||
|
%install
|
||||||
|
install -Dp -m 700 %{S:0} %{buildroot}%{_patch_scripts}/%{name}
|
||||||
|
|
||||||
|
%description
|
||||||
|
%{summary}
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr(-,root,root,-)
|
||||||
|
%{_patch_scripts}/*
|
||||||
|
|
||||||
|
%post
|
||||||
|
cp -f %{_patch_scripts}/%{name} %{_runtime_patch_scripts}/
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
%preun
|
||||||
|
cp -f %{_patch_scripts}/%{name} %{_runtime_patch_scripts}/
|
||||||
|
exit 0
|
3
patch-scripts/EXAMPLE_KUBELET/centos/build_srpm.data
Normal file
3
patch-scripts/EXAMPLE_KUBELET/centos/build_srpm.data
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
COPY_LIST="scripts/*"
|
||||||
|
TIS_PATCH_VER=1
|
||||||
|
|
110
patch-scripts/EXAMPLE_KUBELET/scripts/kubelet-restart-example
Normal file
110
patch-scripts/EXAMPLE_KUBELET/scripts/kubelet-restart-example
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (c) 2022 Wind River Systems, Inc.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# This script provides an example in-service patching restart,
|
||||||
|
# triggering a restart of the patching daemons themselves
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# The patching subsystem provides a patch-functions bash source file
|
||||||
|
# with useful function and variable definitions.
|
||||||
|
#
|
||||||
|
. /etc/patching/patch-functions
|
||||||
|
|
||||||
|
#
|
||||||
|
# We can now check to see what type of node we're on, if it's locked, etc,
|
||||||
|
# and act accordingly
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Declare an overall script return code
|
||||||
|
#
|
||||||
|
declare -i GLOBAL_RC=$PATCH_STATUS_OK
|
||||||
|
|
||||||
|
# kubelet doesn't run on storage nodes
|
||||||
|
if is_storage
|
||||||
|
then
|
||||||
|
exit $GLOBAL_RC
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $PATCH_FLAGDIR/kubelet.restarted ]
|
||||||
|
then
|
||||||
|
# Check to see if kubelet is running
|
||||||
|
systemctl status kubelet.service|grep -q "Active: active (running)"
|
||||||
|
if [ $? -eq 0 ]
|
||||||
|
then
|
||||||
|
# issue a systemd daemon-reload once the rpms have been installed
|
||||||
|
# and before the processes have been restarted.
|
||||||
|
systemctl daemon-reload
|
||||||
|
|
||||||
|
# Ask pmon to stop kubelet and isolcpu_plugin so that it won't raise
|
||||||
|
# any alarms as we force a restart
|
||||||
|
loginfo "$0: pmond stopping kubelet"
|
||||||
|
OLDPID=`pgrep -f /usr/bin/kubelet`
|
||||||
|
pmon-stop kubelet
|
||||||
|
pmon-stop isolcpu_plugin
|
||||||
|
|
||||||
|
# Wait up to 30 seconds for service stop and enter a systemd
|
||||||
|
# auto-restart state
|
||||||
|
let -i UNTIL=$SECONDS+30
|
||||||
|
while [ $UNTIL -ge $SECONDS ]
|
||||||
|
do
|
||||||
|
# Check to see if the process has stopped and switched states
|
||||||
|
systemctl status kubelet.service | grep -q "Active: activating (auto-restart)"
|
||||||
|
if [ $? -eq 0 ]
|
||||||
|
then
|
||||||
|
# Now that we are waiting on systemd to restart. Tell pmon
|
||||||
|
# to start this back up and enter it's delayed monitoring
|
||||||
|
# state
|
||||||
|
loginfo "$0: pmond starting kubelet"
|
||||||
|
pmon-start kubelet
|
||||||
|
pmon-start isolcpu_plugin
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check every second to catch this auto-restart state
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
let -i UNTIL=$SECONDS+15
|
||||||
|
while [ $UNTIL -ge $SECONDS ]
|
||||||
|
do
|
||||||
|
# Check to make sure the service is running
|
||||||
|
systemctl status kubelet.service | grep -q "Active: active (running)"
|
||||||
|
if [ $? -eq 0 ]
|
||||||
|
then
|
||||||
|
# Verify that it's not still the old process
|
||||||
|
NEWPID=`pgrep -f /usr/bin/kubelet`
|
||||||
|
if [ $? -eq 0 -a "$OLDPID" != "$NEWPID" ]
|
||||||
|
then
|
||||||
|
touch $PATCH_FLAGDIR/kubelet.restarted
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Still not running? Let's wait 5 seconds and check again
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
|
systemctl status kubelet.service|grep -q "Active: active (running)"
|
||||||
|
STATUS=$?
|
||||||
|
NEWPID=`pgrep -f /usr/bin/kubelet`
|
||||||
|
if [ $STATUS -ne 0 -o $? -ne 0 -o "$OLDPID" = "$NEWPID" ]
|
||||||
|
then
|
||||||
|
# Still not running new kubelet! Clear the flag and mark the RC as failed
|
||||||
|
loginfo "$0: Failed to restart kubelet"
|
||||||
|
rm -f $PATCH_FLAGDIR/kubelet.restarted
|
||||||
|
GLOBAL_RC=$PATCH_STATUS_FAILED
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Exit the script with the overall return code
|
||||||
|
#
|
||||||
|
exit $GLOBAL_RC
|
Loading…
Reference in New Issue
Block a user