Рейтинг:1

Сбой автономной установки kubernetes при использовании containerd в качестве CRI

флаг ao

По какой-то причине мне пришлось построить пустой кластер Kubernetes без подключения к Интернету.

Поскольку dockerhim устарел, я решил использовать containerd в качестве CRI, но автономная установка с kubeadm не удалась при выполнении. инициализация кубеадм из-за тайм-аута.

    К сожалению, произошла ошибка:
            истекло время ожидания условия

    Эта ошибка, вероятно, вызвана:
            - Кубелет не запущен
            - Кублет неисправен из-за неправильной настройки узла (необходимые cgroups отключены)

    Если вы работаете в системе на основе systemd, вы можете попытаться устранить ошибку с помощью следующих команд:
            - 'кубелет статуса systemctl'
            - 'journalctl -xeu кубелет'

И я вижу много журналов ошибок в результате журналctl -u кубелет -f:

11 24 16:25:25 rhel8 kubelet[9299]: E1124 16:25:25.473188 9299 controller.go:144] не удалось убедиться, что аренда существует, повторная попытка через 7 с, ошибка: Get "https://133.117.20.57:6443 /apis/coordinate.k8s.io/v1/namespaces/kube-node-lease/leases/rhel8?timeout=10s": наберите tcp 133.117.20.57:6443: соединение: соединение отклонено
11 24 16:25:25 rhel8 kubelet[9299]: E1124 16:25:25.533555 9299 kubelet.go:2407] "Ошибка при получении узла" err="узел \"rhel8\" не найден"
11 24 16:25:25 rhel8 kubelet[9299]: I1124 16:25:25.588986 9299 kubelet_node_status.go:71] "Попытка зарегистрировать узел" node="rhel8"
11 24 16:25:25 rhel8 kubelet[9299]: E1124 16:25:25.589379 9299 kubelet_node_status.go:93] «Невозможно зарегистрировать узел на сервере API» err="Post \"https://133.117.20.57:6443 /api/v1/nodes\": наберите tcp 133.117.20.57:6443: соединение: соединение отклонено" node="rhel8"
11 24 16:25:25 rhel8 kubelet[9299]: E1124 16:25:25.634625 9299 kubelet.go:2407] "Ошибка при получении узла" err="узел \"rhel8\" не найден"
11 24 16:25:25 rhel8 kubelet[9299]: E1124 16:25:25.735613 9299 kubelet.go:2407] "Ошибка при получении узла" err="узел \"rhel8\" не найден"
11 24 16:25:25 rhel8 kubelet[9299]: E1124 16:25:25.835815 9299 kubelet.go:2407] "Ошибка получения узла" err="узел \"rhel8\" не найден"
11 24 16:25:25 rhel8 kubelet[9299]: E1124 16:25:25.936552 9299 kubelet.go:2407] "Ошибка при получении узла" err="узел \"rhel8\" не найден"
11 24 16:25:26 rhel8 kubelet[9299]: E1124 16:25:26.036989 9299 kubelet.go:2407] "Ошибка получения узла" err="узел \"rhel8\" не найден"
11 24 16:25:26 rhel8 kubelet[9299]: E1124 16:25:26.137464 9299 kubelet.go:2407] "Ошибка при получении узла" err="узел \"rhel8\" не найден"
11 24 16:25:26 rhel8 kubelet[9299]: E1124 16:25:26.238594 9299 kubelet.go:2407] "Ошибка получения узла" err="узел \"rhel8\" не найден"
11 24 16:25:26 rhel8 kubelet[9299]: E1124 16:25:26.338704 9299 kubelet.go:2407] "Ошибка получения узла" err="узел \"rhel8\" не найден"
11 24 16:25:26 rhel8 kubelet[9299]: E1124 16:25:26.394465 9299 event.go:273] Невозможно записать событие: '&v1.Event{TypeMeta:v1.TypeMeta{Вид: "", APIVersion:" "}, ObjectMeta:v1.ObjectMeta{Name:"rhel8.16ba6aab63e58bd8", GenerateName:"", пространство имен:"default", SelfLink:"", UID:"", ResourceVersion:"", Generation:0, CreationTimestamp:v1 .Time{Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}}, DeletionTimestamp:(*v1.Time)(nil), DeletionGracePeriodSeconds:(*int64)( nil), Labels:map[string]string(nil), Annotations:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Finalizers:[]string(nil), ClusterName:"", ManagedFields:[]v1.ManagedFieldsEntry(nil)}, InvolvedObject:v1.ObjectReference{Вид:"Узел", Пространство имен:"", Имя:"rhel8", UID:"rhel8", APIVersion:"", ResourceVersion:"" , FieldPath:""}, Reason:"Starting", Message:"Starting kubelet.", Source:v1.EventSource{Component:"kubelet", Host:"rhel8"}, FirstTimestamp:v1.Time{Time:time. Время {стена: 0xc05f9812b2b227d8, доб: 5706873656, местоположение: (* ti me.Location)(0x55a228f25680)}}, LastTimestamp:v1.Time{Time:time.Time{wall:0xc05f9812b2b227d8, ext:5706873656, loc:(*time.Location)(0x55a228f25680)}}, Count:1, Type: "Обычный", EventTime:v1.MicroTime{Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}}, Series:(*v1.EventSeries)(nil), Действие:"", Связано:(*v1.ObjectReference)(nil), ReportingController:"", ReportingInstance:""}': 'Post "https://133.117.20.57:6443/api/v1/namespaces/default/ события": наберите tcp 133.117.20.57:6443: соединение: соединение отклонено (может повторить попытку после сна)
11 24 16:25:27 rhel8 kubelet[9299]: E1124 16:25:27.143503 9299 kubelet.go:2407] "Ошибка получения узла" err="узел \"rhel8\" не найден"
11 24 16:25:27 rhel8 kubelet[9299]: E1124 16:25:27.244526 9299 kubelet.go:2407] "Ошибка получения узла" err="узел \"rhel8\" не найден"
11 24 16:25:27 rhel8 kubelet[9299]: E1124 16:25:27.302890 9299 remote_runtime.go:116] «Ошибка RunPodSandbox из службы среды выполнения» err = «ошибка rpc: code = Unknown desc = не удалось получить образ песочницы \ "k8s.gcr.io/pause:3.2\": не удалось извлечь образ \"k8s.gcr.io/pause:3.2\": не удалось извлечь и распаковать образ \"k8s.gcr.io/pause:3.2\" : не удалось разрешить ссылку \"k8s.gcr.io/pause:3.2\": не удалось выполнить запрос: Голова \"https://k8s.gcr.io/v2/pause/manifests/3.2\": набрать tcp: поиск k8s.gcr.io на [::1]:53: чтение udp [::1]:39732->[::1]:53: чтение: соединение отклонено"
11 24 16:25:27 rhel8 kubelet[9299]: E1124 16:25:27.302949 9299 kuberuntime_sandbox.go:70] «Не удалось создать песочницу для модуля» err = «Ошибка rpc: code = Unknown desc = не удалось получить образ песочницы \"k8s.gcr.io/pause:3.2\": не удалось извлечь образ \"k8s.gcr.io/pause:3.2\": не удалось извлечь и распаковать образ \"k8s.gcr.io/pause:3.2\" ": не удалось разрешить ссылку \"k8s.gcr.io/pause:3.2\": не удалось выполнить запрос: Head \"https://k8s.gcr.io/v2/pause/manifests/3.2\": набрать tcp : поиск k8s.gcr.io в [::1]:53: чтение udp [::1]:39732->[::1]:53: чтение: соединение отклонено" pod="kube-system/kube-scheduler -rhel8"
11 24 16:25:27 rhel8 kubelet[9299]: E1124 16:25:27.302989 9299 kuberuntime_manager.go:815] "CreatePodSandbox для pod не удалось" err="ошибка rpc: code = Unknown desc = не удалось получить изображение песочницы \" k8s.gcr.io/pause:3.2\": не удалось извлечь образ \"k8s.gcr.io/pause:3.2\": не удалось извлечь и распаковать образ \"k8s.gcr.io/pause:3.2\": не удалось разрешить ссылку \"k8s.gcr.io/pause:3.2\": не удалось выполнить запрос: Head \"https://k8s.gcr.io/v2/pause/manifests/3.2\": набрать TCP: поиск k8s.gcr.io on [::1]:53: чтение udp [::1]:39732->[::1]:53: чтение: соединение отклонено" pod="kube-system/kube-scheduler-rhel8 "
11 24 16:25:27 rhel8 kubelet[9299]: E1124 16:25:27.303080 9299 pod_workers.go:765] «Ошибка синхронизации модуля, пропуск» err="не удалось \"CreatePodSandbox\" для \"kube-scheduler- rhel8_kube-system(e5616b23d0312e4995fcb768f04aabbb)\" with CreatePodSandboxError: \"Не удалось создать песочницу для модуля \"kube-scheduler-rhel8_kube-system(e5616b23d0312e4995fcb768f04aabbb)\": известная ошибка rpc = failed to get sandbox: образ \"k8s.gcr.io/pause:3.2\": не удалось извлечь образ \"k8s.gcr.io/pause:3.2\": не удалось извлечь и распаковать образ \ "k8s.gcr.io/pause:3.2\": не удалось разрешить ссылку \"k8s.gcr.io/pause:3.2\": не удалось выполнить запрос: Head \"https:/ /k8s.gcr.io/v2/pause/manifests/3.2\": набираем tcp: ищем k8s.gcr.io в [::1]:53: читаем udp [::1]:39732->[: :1]:53: чтение: соединение отклонено\"" pod="kube-system/kube-scheduler-rhel8" podUID=e5616b23d0312e4995fcb768f04aabbb

Когда я делаю то же самое с подключением к Интернету, установка проходит успешно. А при использовании docker вместо containerd установка проходит успешно даже при отсутствии подключения к интернету.

Рейтинг:3
флаг ao

Это было вызвано контейнером, у которого есть настройка, чтобы вытащить его sandbox_image с k8s.gcr.io по умолчанию, даже если нет подключения к Интернету.

Этот параметр указан в строке 57 /etc/containerd/config.toml файл.

   [плагины."io.containerd.grpc.v1.cri"]
     <фрагмент>
     sandbox_image = "k8s.gcr.io/pause:3.2"

Мой текущий кластер k8s имеет версию 1.22.1, поэтому он использует паузу: 3.5, а не паузу: 3.2. Изменив его на существующий образ (на этот раз k8s.gcr.io/pause:3.5), я успешно построил свой кластер kubernetes без подключения к Интернету.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.