36 lines
987 B
Bash
Executable File
36 lines
987 B
Bash
Executable File
#!/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"
|