内容简介:在使用 Kubernetes 时,我们需要经常访问 gcr.io 镜像仓库,由于众所周知的原因,gcr.io 在中国无法访问。gcr.azk8s.cn 是 gcr.io 镜像仓库的代理站点,原来可以通过 gcr.azk8s.cn 访问 gcr.io 仓库里的镜像,但是目前 *.azk8s.cn 已经仅限于 Azure 中国的 IP 使用,不再对外提供服务了。为了能够顺利访问 gcr.io 镜像仓库,我们需要在墙外自己搭建一个类似于 gcr.azk8s.cn 镜像仓库代理站点。$ yum install -y
在使用 Kubernetes 时,我们需要经常访问 gcr.io 镜像仓库,由于众所周知的原因,gcr.io 在中国无法访问。gcr.azk8s.cn 是 gcr.io 镜像仓库的代理站点,原来可以通过 gcr.azk8s.cn 访问 gcr.io 仓库里的镜像,但是目前 *.azk8s.cn 已经仅限于 Azure 中国的 IP 使用,不再对外提供服务了。为了能够顺利访问 gcr.io 镜像仓库,我们需要在墙外自己搭建一个类似于 gcr.azk8s.cn 镜像仓库代理站点。
前提条件
- 一台能够翻墙的服务器
- 一个域名和域名相关的SSL证书(docker pull 镜像时需要验证域名证书)
安装配置 Docker
添加 Docker yum 仓库
$ yum install -y yum-utils
$ yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/doc ... .repo
安装 Docker
$ yum install -y docker-ce docker-ce-cli containerd.io
配置 Docker
如下配置 Docker,设置 Docker 的日志格式为 json,日志文件大小为 100M,最多保存 3 个日志;接下来设置 Docker 镜像私有仓库和官方镜像加速地址;设置 Docker 的数据目录到 /data/docker;最后设置 Docker 的 Storage Driver 为 overlay2。
$ mkdir /etc/docker
$ cat << EOF > /etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"insecure-registry": [
"hub.yyy.com"
],
"registry-mirror": " https://q00c7e05.mirror.aliyuncs.com" ,
"data-root": "/data/docker",
"exec-opts": ["native.cgroupdriver=systemd"],
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
启动 Docker
$ systemctl enable docker && systemctl start docker
安装 Docker Compose
$ curl -L " https://github.com/docker/comp ... pose- $(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
$ ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version
docker-compose version 1.25.4, build 1110ad01
启动镜像仓库代理
启动前准备
从 github 下载 registry-proxy 配置文件:
$ git clone https://github.com/findsec-cn/registry-proxy.git
$ cd registry-proxy
将域名的证书放置到 cert 目录下,其中 server.crt 为 ssl 证书文件, server.key 为 ssl 私钥。
修改 nginx.conf 配置文件,将配置文件中的域名替换成自己的域名(yyy.com):
$ sed -i 's/xxx.com/yyy.com/g' nginx.conf
启动镜像仓库代理
启动镜像仓库代理:
$ docker-compose up -d
查看启动日志:
$ docker-compose logs -f
解析域名
将 hub.yyy.com、gcr.yyy.com 解析到此服务器的地址上。
我们可以通过 http://hub.yyy.com 查看镜像仓库缓存的镜像;可以通过gcr.yyy.com下载镜像。
使用镜像仓库代理
我们只需要将 k8s.gcr.io 替换成 gcr.yyy.com/google-containers;将 gcr.io 替换成 gcr.yyy.com 就可以下载 gcr.io 仓库里的镜像了。
比如我们要下载镜像:
$ docker pull k8s.gcr.io/pause:3.1
可以如下通过镜像仓库代理下载:
$ docker pull gcr.yyy.com/pause:3.1
比如我们要下载镜像:
$ gcr.io/kubernetes-helm/tiller:v2.16.3
$ gcr.io/google-containers/etcd:3.2.24
可以如下通过镜像仓库代理下载:
$ gcr.yyy.com/kubernetes-helm/tiller:v2.16.3
$ gcr.yyy.com/google-containers/etcd:3.2.24
如果你用 kubeadm 部署 Kubernetes 集群,可以在 kubeadm 配置文件中设置镜像地址为:gcr.yyy.com/google-containers
$ cat kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: v1.18.1
......
imageRepository: gcr.yyy.com/google-containers
更多文章请关注我们的微信公众号:
也可以加入 Kubernetes 技术实战 QQ 群一起交流学习:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。