#!/bin/sh set -eu # Kubernetes removed the kubelet flag: # --pod-infra-container-image # # Timeline: # - Deprecated before v1.27 # - Removed in newer kubelet versions (>=1.27+) # - kubeadm may still write it into: # /var/lib/kubelet/kubeadm-flags.env # # This causes kubelet to fail with: # "unknown flag: --pod-infra-container-image" # # References: # - https://github.com/kubernetes/kubeadm/issues/3281 # - https://github.com/kubernetes/kubernetes/pull/122739 # - https://kubernetes.io/blog/2022/04/07/upcoming-changes-in-kubernetes-1-24/ # # Root cause: # - Sandbox (pause) image is now managed by CRI (containerd/CRI-O), # not kubelet flags. # # Fix: # - Strip the flag from kubeadm-flags.env during upgrade FILE=/var/lib/kubelet/kubeadm-flags.env [ -f "$FILE" ] || exit 0 grep -q -- '--pod-infra-container-image=' "$FILE" || exit 0 sed -i 's/ --pod-infra-container-image=[^"]*//g' "$FILE" echo "Removed deprecated kubelet flag --pod-infra-container-image from $FILE"