Appearance
k8s运维(六)安装kubu镜像
由于镜像都是在k8s.gcr.io,外网,需要使用国内镜像下载 1.低版本,可拉去dockerhub的镜像 2.新版本,可同步阿里云镜像
一、低版本安装
安装kubelet kubeadm kubectl
$ yum install -y kubelet-1.16.15 kubeadm-1.16.15 kubectl-1.16.15
查看镜像版本
$ kubeadm config images list
out: k8s.gcr.io/kube-apiserver:v1.16.15 k8s.gcr.io/kube-controller-manager:v1.16.15 k8s.gcr.io/kube-scheduler:v1.16.15 k8s.gcr.io/kube-proxy:v1.16.15 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd:3.3.15-0 k8s.gcr.io/coredns:1.6.2
下载镜像 前往dockerhub查找对应版本镜像,我使用的是kubeimage
对应的image
$ docker pull kubeimage/kube-apiserver-amd64:v1.16.15
$ docker pull kubeimage/kube-controller-manager-amd64:v1.16.15
$ docker pull kubeimage/kube-scheduler-amd64:v1.16.15
$ docker pull kubeimage/kube-proxy-amd64:v1.16.15
$ docker pull kubeimage/pause-amd64:3.1
$ docker pull kubeimage/etcd-amd64:3.3.15-0
$ docker pull coredns/coredns:1.6.2
修改tag 因为要改成以上kubeadm 要求的镜像,所以需要打个tag
$ docker tag kubeimage/kube-apiserver-amd64:v1.16.15 k8s.gcr.io/kube-apiserver:v1.16.15
再删除之前 $ docker rmi kubeimage/kube-apiserver-amd64:v1.16.15
是这个结果,并将其他的image依次这么操作
二、最新版安装
最新版安装,是使用本机登录阿里云docker,再创建阿里云镜像,拉去下来
1.创建阿里云镜像项目
安装
$ yum install -y kubelet-1.21.14 kubeadm-1.21.14 kubectl-1.21.14
查看镜像
$ kubeadm config images list k8s.gcr.io/kube-apiserver:v1.21.14 k8s.gcr.io/kube-controller-manager:v1.21.14 k8s.gcr.io/kube-scheduler:v1.21.14 k8s.gcr.io/kube-proxy:v1.21.14 k8s.gcr.io/pause:3.4.1 k8s.gcr.io/etcd:3.4.13-0 k8s.gcr.io/coredns/coredns:v1.8.0
创建自己的项目 https://github.com/jameswu23/k8s-containers.git 这个是我的copy的项目,对应了指定最新版本号
创建个人实例
创建仓库
- 添加构建规则 1.填写目录 2.填写镜像版本
3.立即构建
4.构建成功
5.最后结果
2.拉去镜像
2.1 添加加速
选择自己的加速地址,添加
2.2 登录阿里云
$ docker login --username=xxx registry.cn-qingdao.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
2.3 拉取,打tag
写个脚本,进行执行
$ vim pull_k8s_images.sh
写入:
set -o errexit
set -o nounset
set -o pipefail
##这里定义版本,按照上面得到的列表自己改一下版本号
KUBE_VERSION=v1.21.14
KUBE_PAUSE_VERSION=3.4.1
ETCD_VERSION=3.4.13-0
DNS_VERSION=v1.8.0 # coredns需要特殊处理
##这是原始仓库名,最后需要改名成这个
GCR_URL=k8s.gcr.io
##这里就是写你要使用的仓库
DOCKERHUB_URL=registry.cn-qingdao.aliyuncs.com/jameswu-kube
##这里是镜像列表,新版本要把coredns需要特殊处理
images=(
kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
#coredns:${DNS_VERSION} # coredns需要特殊处理
)
##这里是拉取和改名的循环语句
for imageName in ${images[@]} ; do
docker pull $DOCKERHUB_URL/$imageName
docker tag $DOCKERHUB_URL/$imageName $GCR_URL/$imageName
docker rmi $DOCKERHUB_URL/$imageName
done
# 处理coredns
coreName=coredns:${DNS_VERSION}
docker pull $DOCKERHUB_URL/$coreName
docker tag $DOCKERHUB_URL/$coreName $GCR_URL/coredns/$coreName
docker rmi $DOCKERHUB_URL/$coreName
授权:
$ chmod +x pull_k8s_images.sh
执行
$ sh pull_k8s_images2.sh
最终我们想要的结果