Kubernetes(二)--部署集群本地镜像仓库

1,809 阅读2分钟

生产环境下,势必不能够每个机器都导入一遍从海外下载回来的镜像,这方法都不是可以长期使用的。 可以通过搭建本地的私有镜像仓库(docker registry,这个镜像可以在国内直接下载)来解决这个问题。

1、部署docker registry

在master上搭建registry。

1.1 拉取registry镜像

# docker pull docker.io/registry 
# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
docker.io/registry   latest              d1e32b95d8e8        4 weeks ago         33.17 MB

1.2 启动registry

#启动并打开本地5000端口
# docker run -d -p 5000:5000 --name=registry --restart=always --privileged=true  --log-driver=none -v /home/data/registrydata:/tmp/registry registry
其中,/home/data/registrydata是一个比较大的系统分区,今后镜像仓库中的全部数据都会保存在这个外挂目录下。
里边的 /tmp/registry在下载的镜像中对应的是:/var/lib/registry,如果不确定是那个目录,大家最好使用 docker inspect registry查看一下Image相关的信息!

2、更改名称并推送

[root@K8s-node-2 ~]# docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
registry.access.redhat.com/rhel7/pod-infrastructure   latest              34d3450d733b        2 weeks ago         205 MB
gcr.io/google_containers/kubernetes-dashboard-amd64   v1.5.1              1180413103fd        5 weeks ago         103.6 MB

[root@K8s-node-2 ~]# docker tag registry.access.redhat.com/rhel7/pod-infrastructure:latest registry:5000/pod-infrastructure:latest
#打标记
[root@K8s-node-2 ~]# docker tag gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.1 registry:5000/kubernetes-dashboard-amd64:v1.5.1
#上传镜像
[root@K8s-node-2 ~]# docker push registry:5000/pod-infrastructure:latest

[root@K8s-node-2 ~]# docker push registry:5000/kubernetes-dashboard-amd64:v1.5.1

[root@K8s-node-2 ~]# docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
registry.access.redhat.com/rhel7/pod-infrastructure   latest              34d3450d733b        2 weeks ago         205 MB
registry:5000/pod-infrastructure                      latest              34d3450d733b        2 weeks ago         205 MB
gcr.io/google_containers/kubernetes-dashboard-amd64   v1.5.1              1180413103fd        5 weeks ago         103.6 MB
registry:5000/kubernetes-dashboard-amd64              v1.5.1              1180413103fd        5 weeks ago         103.6 MB
gcr.io/google_containers/kubedns-amd64                1.7                 bec33bc01f03        5 months ago        55.06 MB

3、更改所使用的镜像名称

Dashboard是在yaml中定义的,要更改dashboard.yaml中对应的"image:  gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.1"为"image:  registry:5000/kubernetes-dashboard-amd64:v1.5.1"

pod-infrastructure是在node的kubelet配置文件中定义的,
要更改每个node中/etc/kubernetes/kubelet中对应的:
"KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
为"KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=  registry:5000/pod-infrastructure:latest ""。
更改之后需要重启kubelet服务。

4、重建dashboard应用

执行完上一节的"销毁应用"之后,再次执行"启动",即可完成dashboard的重建。(dashboard原来用的是本地的镜像换成了本地仓库的镜像,所以需要修改)