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 без подключения к Интернету .