带有 containerd 的 Kubeadm 无法使用本地加载的图像

带有 containerd 的 Kubeadm 无法使用本地加载的图像

我正在尝试在裸机服务器(RHEL8)中使用 containerd 构建 kubernetes。

没有互联网连接,所以我手动下载了所需的图像(例如 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 config images pull)在使用 docker 和 CentOS7 时运行良好。

答案1

事实证明,我必须将图像加载到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

答案2

要手动拉取图像,请执行以下操作:

kubeadm config images list
kubeadm config images pull

还有一个部分在没有互联网连接的情况下运行 kubeadm在 Kubernetes 文档中。

相关内容