Вопрос или проблема
Я недавно обновил kubeadm, kubelet и kubectl до версии 1.30 и провел повторную инициализацию кластера с помощью
sudo kubeadm init phase kubeconfig admin --kubeconfig-dir /tmp/backup/kubelet/$NODE --apiserver-advertise-address $APIIP --cert-dir /etc/kubernetes/
Когда я выполняю
kubectl get nodes
Я вижу свой мастер и узел 1, но мастер все еще на старой версии 1.26 и состояние = NotReady
Я попробовал
sudo kubeadm upgrade plan v1.30 --v=5
Я получаю следующую ошибку
[upgrade/config] Используйте ‘kubeadm init phase upload-config –config your-config.yaml’, чтобы повторно загрузить его. ConfigMap “kubeadm-config” в пространстве имен “kube-system” не был найден
k8s.io/kubernetes/cmd/kubeadm/app/cmd/upgrade.enforceRequirements
Когда я выполняю
kubectl -n kube-system get cm kubeadm-config -o yaml
Я вижу, что этот конфигурационный файл существует, но не уверен в форме файла на жестком диске
kubectl -n kube-system get cm kubeadm-config -o yaml apiVersion: v1
data: ClusterConfiguration: |
apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.k8s.io
kind: ClusterConfiguration
kubernetesVersion: v1.26.4
networking:
dnsDomain: cluster.local
podSubnet: 10.10.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {} kind: ConfigMap metadata: creationTimestamp: “2023-04-14T14:47:57Z” name: kubeadm-config namespace: kube-system
resourceVersion: “224” uid: db3c3f16-9b13-47c1-abfc-09a7322afbcd
Так нужно ли мне создать физический файл и загрузить его? Если да, то как, пожалуйста? Заранее спасибо
Ответ или решение
Проблема с ConfigMap "kubeadm-config": Анализ и Решения
Введение
Ваша ситуация с ошибкой FATAL: the ConfigMap "kubeadm-config" in the "kube-system" namespace was not found
после обновления компонентов Kubernetes до версии 1.30 и повторной инициализации кластера достаточно распространена. Давайте подробно разберем, что произошло и как можно исправить эту ошибку.
Анализ Проблемы
Согласно вашему описанию, вы обновили kubeadm
, kubelet
и kubectl
, но столкнулись с тем, что master-узел по-прежнему работает на версии 1.26 и находится в состоянии NotReady
. Это может быть связано с несколькими факторами:
- Неправильная конфигурация кластера:
kubeadm
требует, чтобы конфигурационные файлы были актуальными для версии, на которую вы пытаетесь обновиться. - Отсутствие ConfigMap: Ошибка указывает на то, что ConfigMap
kubeadm-config
, содержащий настройки вашего кластера, отсутствует или у него устаревшие данные.
Проверка Состояния ConfigMap
Когда вы выполнили команду:
kubectl -n kube-system get cm kubeadm-config -o yaml
Вы подтвердили, что ConfigMap существует, но данные в нему указывают на устаревшую версию кластера (v1.26.4). В этом случае kubeadm
не может корректно выполнить апгрейд, так как нужные параметры отсутствуют или неверны.
Решение Проблемы
Для решения проблемы, следуйте приведенным ниже шагам:
-
Создание конфигурационного файла:
Вам необходимо создать файл конфигурации YAML, если его нет, или обновить существующий. Пример конфигурации:apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration metadata: name: kubeadm-config ... networking: ...
Обратите внимание на то, что необходимо указать актуальные параметры, соответствующие версии Kubernetes, которую вы собираетесь использовать.
-
Создание ConfigMap:
Теперь, после создания (или обновления) конфигурационного файла, загрузите его в Cluster:sudo kubeadm init phase upload-config --config <path-to-your-config-file>
-
Обновление кластера:
После успешной загрузки конфигурации попробуйте снова выполнить апгрейд:sudo kubeadm upgrade plan v1.30 --v=5
-
Проверка состояния узлов:
Убедитесь, что все узлы находятся в состоянииReady
. Для этого выполните:kubectl get nodes
Заключение
Если выполненные шаги не исправили ситуацию, обязательно проверьте журналы kubelet
на мастер-узле для получения дополнительной информации о проблемах. Обратите внимание на возможные конфликты версий и потери соединения с компонентами кластера.
Понимание процессов управления кластером Kubernetes и их конфигураций критично для успешного администрирования высокодоступных систем. Надеюсь, эти рекомендации помогут вам разрешить возникшую ситуацию. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.