使用 kubeadm init 初始化 Kubernetes 集群时,需要下载一系列的容器镜像以部署控制平面组件和网络插件。以下是一些通常需要的镜像:
Pause 容器镜像:
这是 Kubernetes 中的“Pause”容器,用作每个 Pod 的基础设施容器。通常由 kubelet 自动拉取。
镜像名:k8s.gcr.io/pause:3.6
Etcd 容器镜像:
Kubernetes 使用 Etcd 作为其键值存储数据库。
镜像名:k8s.gcr.io/etcd:3.5.0-0
Kubernetes 控制平面组件:
API Server、Scheduler、Controller Manager 和 Kubelet 等。
镜像名通常包括:k8s.gcr.io/kube-apiserver、k8s.gcr.io/kube-scheduler、k8s.gcr.io/kube-controller-manager 和 k8s.gcr.io/kube-proxy。
Pod 网络插件:
根据选择的网络解决方案,需要下载相应的 CNI 插件。例如,如果你使用 Calico,需要下载 Calico 的网络插件镜像。
镜像名:calico/cni、calico/kube-controllers、calico/node。
CoreDNS:
Kubernetes 集群的 DNS 服务。
镜像名:k8s.gcr.io/coredns:1.8.0
Dashboard:
Kubernetes 的 Web UI 控制面板(如果需要)。
镜像名:k8s.gcr.io/kubernetes-dashboard-amd64:v2.2.0
请注意,上述镜像版本可能会随着 Kubernetes 版本的更新而变化。在 kubeadm init 过程中,kubeadm 会尝试自动下载这些镜像。如果你处于离线环境或需要预先下载这些镜像,你需要根据你的 Kubernetes 版本查找对应的镜像列表,并使用 docker pull 命令将它们下载到本地。
例如,如果你使用的是 Kubernetes v1.22.0,你可以使用以下命令来获取所需的镜像列表:
kubeadm config images list --kubernetes-version=v1.22.0
然后,使用以下命令下载每个镜像:
docker pull <image>
下载完成后,你可以使用 docker save 命令将它们保存为 tar 文件,并将这些文件传输到你的离线环境中:
docker save -o <image-name>.tar <image>
在离线环境中,使用 docker load 命令加载这些镜像:
docker load -i <image-name>.tar
确保在执行 kubeadm init 之前,所有必要的镜像都已加载到本地。