Kubeadm с контейнером не может использовать локально загруженные изображения

Я пытаюсь собрать Kubernetes с контейнером на чистом сервере (RHEL8).

Нет подключения к Интернету, поэтому я вручную загрузил необходимые изображения (например, k8s.gcr.io/kube-scheduler:v1.22.1) и загрузил их с помощью «ctr image import».

Кажется, изображения успешно загружены.

      #ctr images ls -q
k8s.gcr.io/coredns/coredns:v1.8.4
k8s.gcr.io/etcd:3.5.0-0
k8s.gcr.io/kube-apiserver:v1.22.1
k8s.gcr.io/kube-controller-manager:v1.22.1
k8s.gcr.io/kube-proxy:v1.22.1
k8s.gcr.io/kube-scheduler:v1.22.1
k8s.gcr.io/pause:3.5

Затем я выполнил «kubeadm init», но это не удалось с ошибками ImagePull.

      #kubeadm init --kubernetes-version=1.22.1 --cri-socket=/run/containerd/containerd.sock
[init] Using Kubernetes version: v1.22.1
[preflight] Running pre-flight checks
        [WARNING FileExisting-tc]: tc not found in system path
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
error execution phase preflight: [preflight] Some fatal errors occurred:

Как я могу позволить kubeadm использовать локальные изображения? Или можно игнорировать эти предполетные ошибки?

Изменить: эта процедура (загрузка изображений вручную вместо выполнения извлечения изображений конфигурации kubeadm) работала хорошо при использовании Docker и CentOS7.

2 ответа

Оказалось, что мне пришлось загружать изображения вk8s.ioпространство имен контейнера, чтобы Kubernetes мог их распознать. Я импортировал изображения в неправильное пространство имен (по умолчанию).

      ctr -n k8s.io images import xxx.tar
...

После загрузки всех образов, которые нужны Kubernetes, kubeadm init работал нормально, не выполняя
kubeadm config images pull. Образы, которые может использовать Kubernetes, показаны на
ctr -n k8s.io images lsилиcrictl images.

      # crictl images
IMAGE                                                          TAG                 IMAGE ID            SIZE
k8s.gcr.io/coredns/coredns                                     v1.8.4              8d147537fb7d1       47.7MB
k8s.gcr.io/etcd                                                3.5.0-0             0048118155842       296MB
k8s.gcr.io/kube-apiserver                                      v1.22.1             f30469a2491a5       130MB
k8s.gcr.io/kube-controller-manager                             v1.22.1             6e002eb89a881       123MB
k8s.gcr.io/kube-proxy                                          v1.22.1             36c4ebbc9d979       105MB
k8s.gcr.io/kube-scheduler                                      v1.22.1             aca5ededae9c8       53.9MB
k8s.gcr.io/pause                                               3.5                 ed210e3e4a5ba       686kB

Чтобы вручную извлечь изображения, выполните следующее:

      kubeadm config images list
kubeadm config images pull

В документации Kubernetes также есть раздел для запуска kubeadm без подключения к Интернету .

Другие вопросы по тегам