k8s1.21-镜像准备
【前言】
- 需求:离线部署提前下载镜像
- 环境:在一台可上网的服务器上安装了kubeadm 1.21.0 的机器上完成下载
1. 更换阿里镜像源
【报错】
直接用kubeadm下载报错如下:
[root@k8s-1-21 ~]# kubeadm config images pull
W0706 10:55:11.149871 6561 version.go:102] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get "https://dl.k8s.io/release/stable-1.txt": dial tcp 34.107.204.206:443: connect: connection timed out
W0706 10:55:11.149926 6561 version.go:103] falling back to the local client version: v1.21.2
failed to pull image "k8s.gcr.io/kube-apiserver:v1.21.2": output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
To see the stack trace of this error execute with --v=5 or higher
【分析】
国外的镜像下不下来也无所谓,反正我们初始化集群的时候可以指定镜像仓库。
所以我们此时也把镜像源的参数加上,下载阿里云的镜像。
【解决】
添加--image-repository registry.aliyuncs.com/google_containers
参数,指定镜像源
[root@k8s-1-21 ~]# kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
W0706 10:58:05.269162 6878 version.go:102] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get "https://dl.k8s.io/release/stable-1.txt": dial tcp 34.107.204.206:443: connect: connection timed out
W0706 10:58:05.269222 6878 version.go:103] falling back to the local client version: v1.21.2
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-apiserver:v1.21.2
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-controller-manager:v1.21.2
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-scheduler:v1.21.2
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-proxy:v1.21.2
[config/images] Pulled registry.aliyuncs.com/google_containers/pause:3.4.1
[config/images] Pulled registry.aliyuncs.com/google_containers/etcd:3.4.13-0
failed to pull image "registry.aliyuncs.com/google_containers/coredns:v1.8.0": output: Error response from daemon: manifest for registry.aliyuncs.com/google_containers/coredns:v1.8.0 not found: manifest unknown: manifest unknown
, error: exit status 1
To see the stack trace of this error execute with --v=5 or higher
如上可见,除了coredns:v1.8.0 这个镜像没有其他镜像都成功下载了。
下边我们解决coredns:v1.8.0 这个镜像的问题。
2. coredns:v1.8.0 not found
阿里没有找到 coredns:v1.8.0这个镜像
我是去公网搜了一个,pull下来,改成registry.aliyuncs.com/google_containers/coredns:v1.8.0
,试了是可以用的。
[root@master-01 ~]# docker search coredns:v1.8.0
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
louwy001/coredns-coredns k8s.gcr.io/coredns/coredns:v1.8.0 1
开始想用阿里云的latest版本,然后吧tag改成1.8.0 ,试了一下一直启动不起来
[root@edge-master ~]# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-59d64cd4d4-78cz5 0/1 Running 0 9m30s coredns-59d64cd4d4-x4t45 0/1 Running 0 9m57s
3. 离线部署镜像使用
提供两个方案
【方案一】
- 把刚才下载的镜像传到每台服务器
- init.yaml 文件修改为阿里云镜像仓库
imageRepository: registry.aliyuncs.com/google_containers
【方案二】
- 将刚才下载的镜像push到私有镜像仓库
- init.yaml 文件修改为私有镜像仓库
imageRepository: harbocto.xxx.com.cn/kubernetes