国内顺畅下载k8s.gcr.io的镜像
1. 起因
配置kube-dns是3个k8s.gcr.io的镜像无法下载,报错如下
Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
需要下载的镜像如下:
image: k8s.gcr.io/k8s-dns-kube-dns:1.15.10
image: k8s.gcr.io/k8s-dns-dnsmasq-nanny:1.15.10
image: k8s.gcr.io/k8s-dns-sidecar:1.15.10
2. 解决方法
github配置Dockerfile,使用阿里云镜像构建海外机构建. 再配置阿里云镜像进行下载镜像. 下面就按这个思路一步步操作.
3. 在github配置Dockerfile
登录github https://github.com/ 左上角创建仓库,当然也可以和其他共用. 不同的镜像用不同的目录进行区分,创建目录和创建文件一样就是Add file下的Create new file 不同的是输入目录名后加个/ 这样目录就有了,在后面的空格里输入文件名就好了. 这里文件名就写Dockerfile 内容如下:
FROM k8s.gcr.io/k8s-dns-kube-dns:1.15.10
MAINTAINER Q
依次创建3个目录和Dockerfile,镜像路径就直接从之前grep出来的url复制进去就好了 重复3次我们得到了这样3个目录,目录中各有1个Dockerfile
4. 配置阿里镜像代理
4.1 登陆控制台
登陆阿里云控制台–>容器镜像 https://cr.console.aliyun.com/cn-shanghai/instances
4.2 创建命名空间
如果没有创建过命名空间,那么就创建,如果已经有了可以共用
4.3 创建镜像仓库
第一次会需要到github授权登录一次
4.3 构建规则
这里版本可以和yml里的一样,也可以写latest,推荐第一种因为只会构建一次 依次将3个镜像配置好.
4.4 构建镜像
点击立即构建 复制这里的内容,***是账号隐藏部分,手动补全
4.5 镜像服务密码设置
这里的密码可以和登录密码一样,也可以不一样.
5. 下载镜像
登录后用docker pull下载镜像 如果不清楚怎么下载可以到这个页面查看. 后面的版本号就是刚才这里写的,如果latest就写latest,我这里是1.15.10
5.1 镜像打tag
docker tag registry.cn-shanghai.aliyuncs.com/qiuqin/k8s-dns-sidecar:1.15.10 harbor.intra.com/kube-dns/k8s-dns-sidecar:1.15.10
docker tag registry.cn-shanghai.aliyuncs.com/qiuqin/k8s-dns-kube-dns:1.15.10 harbor.intra.com/kube-dns/k8s-dns-kube-dns:1.15.10
docker tag registry.cn-shanghai.aliyuncs.com/qiuqin/k8s-dns-dnsmasq-nanny:1.15.10 harbor.intra.com/kube-dns/k8s-dns-dnsmasq-nanny:1.15.10
5.2 上传到harbor
docker push harbor.intra.com/kube-dns/k8s-dns-dnsmasq-nanny:1.15.10
docker push harbor.intra.com/kube-dns/k8s-dns-dnsmasq-nanny:1.15.10
docker push harbor.intra.com/kube-dns/k8s-dns-kube-dns:1.15.10
6. 修改yml文件
sed -i 's/k8s.gcr.io/harbor.intra.com\/kube-dns/g' /root/dns/kube-dns/kube-dns.yml
至此就可以尝试部署了
|