为Kubernetes集群部署本地镜像仓库

在搭建Kubernetes集群的时候,为了方便部署,可以搭建一个集群内的私有镜像仓库。

安装docker

1
2
3
yum install docker
systemctl enable docker
systemctl start docker

拉取registry镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# docker pull docker.io/registry 
Using default tag: latest
Trying to pull repository docker.io/library/registry ...
sha256:0e40793ad06ac099ba63b5a8fae7a83288e64b50fe2eafa2b59741de85fd3b97: Pulling from docker.io/library/registry
b7f33cc0b48e: Pull complete
46730e1e05c9: Pull complete
458210699647: Pull complete
0cf045fea0fd: Pull complete
b78a03aa98b7: Pull complete
Digest: sha256:0e40793ad06ac099ba63b5a8fae7a83288e64b50fe2eafa2b59741de85fd3b97
Status: Downloaded newer image for docker.io/registry:latest
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/registry latest d1e32b95d8e8 4 weeks ago 33.17 MB

启动registry

1
docker run -d -p 5000:5000 --name=registry --restart=always --privileged=true  --log-driver=none -v /data/registrydata:/var/lib/registry registry

其中/data/registrydata为本地目录,/var/lib/registry为镜像内目录。
不确定镜像中对应的目录可以使用docker inspect registry查看images的具体信息。
Volumes字段确定镜像内的具体目录。

更改名称并推送

1
2
3
4
5
6
7
8
9
10
docker search pod-infrastructure
docker search kubernetes-dashboard-amd64
docker pull docker.io/zengshaoyong/pod-infrastructure
docker pull docker.io/siriuszg/kubernetes-dashboard-amd64
docker images
docker tag docker.io/zengshaoyong/pod-infrastructure 10.186.61.103:5000/pod-infrastructure
docker tag docker.io/siriuszg/kubernetes-dashboard-amd64 10.186.61.103:5000/kubernetes-dashboard-amd64
docker images
docker push 10.186.61.103:5000/pod-infrastructure
docker push 10.186.61.103:5000/kubernetes-dashboard-amd64

push完镜像后可以从本机的挂载目录查看镜像仓库:

1
2
3
4
5
6
# pwd
/data/registrydata
# ll docker/registry/v2/repositories/
total 0
drwxr-xr-x 5 root root 55 Mar 20 11:02 kubernetes-dashboard-amd64
drwxr-xr-x 5 root root 55 Mar 20 11:01 pod-infrastructure

可以看到上述信息。

更改镜像地址

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=10.186.61.103:5000/pod-infrastructure:latest"。更改之后需要重启kubelet服务。
Dashboard是在yaml中定义的,要更改dashboard.yaml中对应的image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.1image: 0.186.61.103:5000/kubernetes-dashboard-amd64:latest

本文标题:为Kubernetes集群部署本地镜像仓库

文章作者:Francis

原始链接:http://www.cnops.com/posts/1b893487.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。