在国内部署k8s最大的难点是镜像下载,比如这个错误信息:
Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
由于众所周知的原因,国内的网络环境是很难从k8s.gcr.io等镜像源里面下载镜像。这种情况下的普遍解决办法是:
- 直接使用国内镜像代理仓库(如阿里云代理仓库)进行镜像拉取下载,pull成功拉取之后,再将镜像tag打成
k8s.gcr.io
对应的镜像。但这种方式有时候会遇到版本滞后等问题。 - 有时候访问
mirrorgooglecontainers
是没问题的,也可以从mirrorgooglecontainers
上获取镜像,pull之后再将镜像tag打成k8s.gcr.io
对应的镜像。 - 在nat网关处部署代理服务,对
k8s.gcr.io
域名进行直接代理。这种方案应该是最简单的。
在国内使用k8s,一般建议将imagePullPolicy策略改为IfNotPresent,即如果本地有镜像就优先使用本地镜像,不每次都进行额外的拉取动作,或者在上面的步骤中,直接将镜像放到自建harbor私有仓库里面,后续直接指向harbor私有仓库的地址。
补充上述第一条中阿里云代理仓库的地址,其地址为:registry.aliyuncs.com/google_containers
比如以下载 k8s.gcr.io/coredns:1.6.5
为例,就可以代理为:registry.aliyuncs.com/google_containers/coredns:1.6.5
详细步骤如下:
首先尝试直接从k8s.gcr.io上拉取
# docker pull k8s.gcr.io/coredns:1.6.5
Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
看到以上这个错误,就知道无法直接访问了,于是直接使用代理仓库去拉取
# docker pull registry.aliyuncs.com/google_containers/coredns:1.6.5
1.6.5: Pulling from google_containers/coredns
c6568d217a00: Pull complete
fc6a9081f665: Pull complete
Digest: sha256:7ec975f167d815311a7136c32e70735f0d00b73781365df1befd46ed35bd4fe7
Status: Downloaded newer image for registry.aliyuncs.com/google_containers/coredns:1.6.5
registry.aliyuncs.com/google_containers/coredns:1.6.5
然后对拉取完成的镜像进行tag打标签
# docker tag registry.aliyuncs.com/google_containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5
执行docker images可以看到刚打好的镜像名称
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/coredns 1.6.5 70f311871ae1 1 years ago 41.6MB
registry.aliyuncs.com/google_containers/coredns 1.6.5 70f311871ae1 1 years ago 41.6MB
我们要的镜像就成功被拉取啦,你可以把多余的代理镜像的tag删掉,不删也没啥问题。
© 版权声明
本站所有文章,仅代表文章作者个人观点,如对观点有疑义时不用怀疑,您绝对是对的。
您也可以联系文章作者本人进行修改,若内容侵权或非法,可以联系我们进行处理。
任何个人或组织,转载、发布本站文章到任何网站、书籍等各类媒体平台,必须在文末署名文章出处并链接到本站相应文章的URL地址。
本站文章如转载自其他网站,会在文末署名原文出处及原文URL的跳转链接,如有遗漏,烦请告知修正。
如若本站文章侵犯了原著者的合法权益,亦可联系我们进行处理。
您也可以联系文章作者本人进行修改,若内容侵权或非法,可以联系我们进行处理。
任何个人或组织,转载、发布本站文章到任何网站、书籍等各类媒体平台,必须在文末署名文章出处并链接到本站相应文章的URL地址。
本站文章如转载自其他网站,会在文末署名原文出处及原文URL的跳转链接,如有遗漏,烦请告知修正。
如若本站文章侵犯了原著者的合法权益,亦可联系我们进行处理。
THE END
暂无评论内容