Я пытаюсь собрать kubernetes с containerd на голом-металлическом сервере (RHEL8).
Нет подключения к Интернету, поэтому я вручную загрузил нужные изображения (например. k8s.gcr.io/kube-scheduler:v1.22.1)и загрузил их с помощью «импорта изображения ctr».
Похоже, изображения успешно загружены.
#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 config images pull)хорошо работала с Docker и CentOS7.
Оказалось, что мне пришлось загружать изображения в пространство имен k8s.io
containerd, чтобы 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 без подключения к Интернету .