CentOS7 K8S Docker私有仓库搭建使用简录

版权声明:本文为原创文章,转载请标明出处。 https://blog.csdn.net/zwjzqqb/article/details/83279561

简单说明:

在搭建部署K8S时,需要从墙外的k8s.gcr.io、gcr.io和quay.io等镜像仓库下载镜像
这个时候就需要科学上网了,但并不是所有的环境都能够科学上网,这个时候就需要搭建私有镜像仓库
本博文首先介绍基于Harbor构建私有镜像仓库的步骤和简单使用过程
官方文档: https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
其后介绍搭建一个专有的K8S私有镜像库

简单搭建:

依据《CentOS7部署安装Docker和Docker Compose工具简录》搭建部署CentOS7 Docker主机

# 下载离线安装包,需要科学上网
cd /opt/
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz
tar -xf harbor-offline-installer-v1.6.1.tgz
cd harbor
# 主配置文件bug不少,建议只更改hostname为本机hostname
sed -i "s/^\(hostname = \).*$/\1$(hostname)/g" harbor.cfg

# 执行安装脚本进行安装
./install.sh
# 简单启停
cd /opt/harbor
docker-compose stop
docker-compose start
# 日志目录:
cd /var/log/harbor
# harbor以docker部署,会同时部署mysql和redis的docker,如果想要删除,则:
# docker ps -q|xargs docker stop
# docker ps -a -q|xargs docker rm

# 访问http://IP:8080 使用 admin/Harbor12345 登陆验证

镜像上传和下载:

克隆另外一台实验机,部署docker,在该机器上进行配置,模拟镜像的上传和下载

echo '192.168.1.90 localrepository'>>/etc/hosts
mkdir -p /etc/docker
echo -e '{\n"insecure-registries":["localrepository"]\n}' > /etc/docker/daemon.json
sed -i 's|^\[Service\]$|&\nEnvironmentFile=-/etc/docker/daemon.json|g' /lib/systemd/system/docker.service
systemctl restart docker
docker login localrepository
docker login k8s.gcr.io
docker login gcr.io
docker login quay.io
# 使用 admin/Harbor12345 登陆
# 认证信息保存在 ~/.docker/config.json 中,同步该文件即可跳过认证步骤

docker pull busybox
docker tag busybox localrepository/library/busybox:latest
docker push localrepository/library/busybox:latest
docker image rmi localrepository/library/busybox:latest
docker pull localrepository/library/busybox:latest

配置K8S专用私有镜像库:

# 首先删除掉搭建的harbor,或者可以使用其他主机进行部署实验
cd /opt/harbor
docker-compose down
cd
rm -rf /opt/harbor

# 拉取构建私有镜像仓库的镜像
# https://hub.docker.com/_/registry/
docker pull registry
docker run -d -p 80:5000 --restart always --name registry registry

# 网络寻找其他玩家保存的K8S所需要的官方镜像,安装到本地
docker load -i k8s_image_1.12.1.tar
docker image ls

# 将安装的这些镜像推送到registry之上
echo "$(hostname -i) k8s.gcr.io quay.io gcr.io">>/etc/hosts
mkdir -p /etc/docker
echo -e '{\n"insecure-registries":["k8s.gcr.io", "quay.io", "gcr.io"]\n}' > /etc/docker/daemon.json
sed -i 's|^\[Service\]$|&\nEnvironmentFile=-/etc/docker/daemon.json|g' /lib/systemd/system/docker.service
systemctl restart docker

docker push k8s.gcr.io/coredns:1.2.2
docker push k8s.gcr.io/etcd:3.2.24
docker push k8s.gcr.io/kube-apiserver:v1.12.1
docker push k8s.gcr.io/kube-controller-manager:v1.12.1
docker push k8s.gcr.io/kube-proxy:v1.12.1
docker push k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3
docker push k8s.gcr.io/kube-scheduler:v1.12.1
docker push k8s.gcr.io/pause:3.1
docker push quay.io/coreos/flannel:v0.10.0-amd64

# 将image发布到自建Registry之上之后
# 可以使用API进行验证
# 参考: https://docs.docker.com/registry/spec/api/
yum -y install epel-release
yum -y install jq
JSON=$(curl k8s.gcr.io/v2/_catalog)
echo ${JSON} | jq .
curl k8s.gcr.io/v2/kube-apiserver/tags/list | jq .

# 在需要安装K8S的主机上进行配置:
echo "192.168.1.90 k8s.gcr.io quay.io gcr.io">>/etc/hosts
mkdir -p /etc/docker
echo -e '{\n"insecure-registries":["k8s.gcr.io", "quay.io", "gcr.io"]\n}' > /etc/docker/daemon.json
sed -i 's|^\[Service\]$|&\nEnvironmentFile=-/etc/docker/daemon.json|g' /lib/systemd/system/docker.service
systemctl restart docker
# 拉取测试:
docker pull k8s.gcr.io/coredns:1.2.2
docker pull k8s.gcr.io/etcd-amd64:3.2.24
docker pull k8s.gcr.io/kube-apiserver:v1.12.1
docker pull k8s.gcr.io/kube-controller-manager:v1.12.1
docker pull k8s.gcr.io/kube-proxy:v1.12.1
docker pull k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3
docker pull k8s.gcr.io/kube-scheduler:v1.12.1
docker pull k8s.gcr.io/pause:3.1
docker pull quay.io/coreos/flannel:v0.10.0-amd64
# 在K8S集群安装中有一步就是从谷歌的k8s.gcr.io镜像库中拉取以上镜像
# 至此,支持K8S集群安装的私有镜像库搭建完毕
# 其实更为简单的方法是直接在安装K8S的节点上使用load命令直接导入所需的镜像
# docker load -i k8s_image_1.12.1.tar

[TOC]

猜你喜欢

转载自blog.csdn.net/zwjzqqb/article/details/83279561