Skip to content

Commit

Permalink
Add custom apps in the k8s-pod-recovery service
Browse files Browse the repository at this point in the history
At startup, there might be pods that are left in unknown states.
The k8s-pod-recovery service takes care of
recovering these unknown pods in specific namespaces.
To fix this for custom apps that are not part of starlingx,
we modify the service to look into the /etc/k8s-post-recovery.d
directory for conf files. Any app that needs to be recovered by this
service will have to create a conf file e.g the app-1 will create
/etc/k8s-post-recovery.d/APP_1.conf which will contain the following:
namespace=app-1-namespace

Closes-Bug: 1917781
Signed-off-by: Mihnea Saracin <[email protected]>
Change-Id: I8febdb685d506cff3c34946163612cafdab3e3a8
  • Loading branch information
Mihnea Saracin authored and Mihnea Saracin committed Mar 19, 2021
1 parent 3d8ffbc commit 852ec5e
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
7 changes: 7 additions & 0 deletions kubernetes/k8s-pod-recovery/centos/files/k8s-pod-recovery
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

export PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
export KUBECONFIG=/etc/kubernetes/admin.conf
CONF_DIR=/etc/k8s-post-recovery.d
SLEEP_DELAY_SEC=15

NAME=$(basename $0)
Expand Down Expand Up @@ -100,6 +101,12 @@ function _unknown_pods {
# Target specific namespaces and pods on this host
SUPPORTED_NAMESPACES=('openstack' 'monitor')

shopt -s nullglob
for conf_file in ${CONF_DIR}/*.conf; do
grep -q '^namespace=' $conf_file || continue
SUPPORTED_NAMESPACES+=($(grep '^namespace=' $conf_file | awk -F '=' '{print $2}'))
done

if [ "$1" == 'recover' ]; then
# Recovers pods that are: Running/Unknown and Pending/Init:Unknown
for ns in ${SUPPORTED_NAMESPACES[@]}; do
Expand Down
3 changes: 3 additions & 0 deletions kubernetes/k8s-pod-recovery/centos/k8s-pod-recovery.spec
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@ Requires: systemd

%define local_dir /usr/local
%define local_sbindir %{local_dir}/sbin
%define k8s_recovery_conf_dir /etc/k8s-post-recovery.d

%prep

%install
install -d %{buildroot}%{k8s_recovery_conf_dir}
install -d %{buildroot}%{local_sbindir}
install -m 755 %{SOURCE0} %{buildroot}%{local_sbindir}/k8s-pod-recovery
install -p -D -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/k8s-pod-recovery.service
Expand Down Expand Up @@ -50,3 +52,4 @@ fi
%defattr(-,root,root,-)
%{local_sbindir}/k8s-pod-recovery
%{_unitdir}/k8s-pod-recovery.service
%{k8s_recovery_conf_dir}

0 comments on commit 852ec5e

Please sign in to comment.