请教 k8s 国内网络访问不了镜像问题的解决方案

2022-05-07 09:12:22 +08:00
 klo424

由于国内网络问题,k8s 的官方镜像在腾讯云服务器上访问不到,导致一些错误。

我是在安装 nginx-ingress 遇到的问题。

在执行了 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/cloud/deploy.yaml 后,发现官方镜像访问超时。

我在我自己电脑(有代理)上试了下 docker 直接拉取,也是超时的。

这么看,代理也是行不通的,我又尝试了修改 deploy.yaml 文件中的镜像源,如下:

# 替换 k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660

docker.io/liangjw/kube-webhook-certgen:v1.1.1@sha256:23a03c9c381fba54043d0f6148efeaf4c1ca2ed176e43455178b5c5ebf15ad70


# 替换 k8s.gcr.io/ingress-nginx/controller:v1.2.0@sha256:d8196e3bc1e72547c5dec66d6556c0ff92a23f6d0919b206be170bc90d5f9185

docker.io/dyrnq/ingress-nginx-controller:v1.2.0@sha256:2746adf7d60c782b83f6fa6e1ceb938878b9f5b16c217e530ba8895f94221a04

替完后重新 kubectl apply -f https://cdn.jsdelivr.net/gh/kade-code/k8s-mirror@master/deploy3.yaml 就会报错。

这个错误我 google 了,说是不让改里面的字段,我也试了把之前的 deployment 删掉,也是不行,就无解了,然后改镜像源的方案我就放弃了。

其间,我查找了 github 的 issue ,https://github.com/kubernetes/ingress-nginx/issues/6335#issuecomment-1011850699,也没有一个能解决我的问题的。

也尝试过 docker pull 镜像源,然后改成官方源的 tag ,也是不起作用。

折腾了 2 天,实在没有办法,特来请教,希望大佬们支支招。

6773 次点击
所在节点    Kubernetes
56 条回复
klo424
2022-05-07 10:16:07 +08:00
klo424
2022-05-07 10:20:03 +08:00
@tomqin #5
@wd #6
@ckxZzz #9
@hzfyjgw #10
试过改 tag 了,不起作用。
![改 tag]( https://s3.bmp.ovh/imgs/2022/05/07/7937e44bb7d44be0.png)
klo424
2022-05-07 10:21:57 +08:00
@ration #11
@XiLingHost #19
我现在改了 yml 文件,但问题是报错,无法生效。
klo424
2022-05-07 10:23:42 +08:00
@stille #20 这个我也试过😂,我 docker 加了这个镜像,也是拉不了。
klo424
2022-05-07 10:24:56 +08:00
@mysalt #15 Trojan 服务端没有呢😂
etby
2022-05-07 10:31:22 +08:00
自建仓库是最好的,还可以用阿里云等免费的,实在不行上传到 DockerHub 使用国内 mirrors 试试
ncepuzs
2022-05-07 10:31:59 +08:00
Trojan 服务端没有,你不会临时开台按时计费的非大陆地区 VPS 装一下吗?
上面将镜像下载到本地然后改 tag 之类的很明显是有用的,不知道到你这儿怎么就没用了
另外,Windows 上 SS(R) 之类的全局代理又不是所有软件都会读取和使用……
hhshenhuaxx
2022-05-07 10:32:27 +08:00
@klo424 要在命令行通过 curl 或者 wget 也能访问才行,因为你 docker pull 命令是在命令行执行的。
mysalt
2022-05-07 10:32:52 +08:00
@klo424 DigitalOcean 开台机器配置下吧,k8s 安装完再关闭。另外不建议用各种替代镜像或者什么仓库,我原来折腾过很久,大概率要么不维护,要么要改一大串东西,不值当。
stille
2022-05-07 10:36:53 +08:00
@klo424 能具体点? 因为我没搞过 k8s,不知道你具体的场景,如果是改 daemon.json 应该是 k8s.dockerproxy.com
liuhan907
2022-05-07 10:40:48 +08:00
不是,你直接把 yaml 里面的 image 换成云的镜像不就可以了,为什么会这么折腾?
julyclyde
2022-05-07 10:50:40 +08:00
kubelet 有个参数
pod-infra-container-image
klo424
2022-05-07 10:53:10 +08:00
@ncepuzs #27 Trojan 服务端我没有搞过,不知道怎么弄,如果别的方法都不行,我就去试试看。但按理说改 tag 和改镜像都应该可以,我也不知道为什么到了我这不行,可能被我设置来设置去的搞坏了吧😂
@hhshenhuaxx #28 另外我又试了下 curl google.com ,是可以的。
https://imgur.com/g4tscwV
klo424
2022-05-07 11:00:00 +08:00
@stille #30 直接 docker pull k8s.dockerproxy.com/ingress-nginx/kube-webhook-certgen:v1.1.1 是好使的,改 daemon.json 不行呢?
https://imgur.com/undefined
klo424
2022-05-07 11:00:46 +08:00
@liuhan907 #31 这个前面说过很多次了,报错,不生效。
hzfyjgw
2022-05-07 11:12:02 +08:00
@klo424 #22 现在已经不是你的镜像拉取有问题了,是 error when apply patch ,现在是你 yaml 文件其他的地方的配置错了
klo424
2022-05-07 11:14:34 +08:00
@hzfyjgw #36 应该是这样的,不过我是拷贝的官方文件,只修改了三个 image 的值,不知道有什么问题。
klo424
2022-05-07 11:16:57 +08:00
@julyclyde #32 我看了我的配置文件,没有用到这个参数,应该是正常的吧?
stille
2022-05-07 11:21:43 +08:00
@klo424 我测试 daemon.json 没问题.
无论是 docker pull ingress-nginx/kube-webhook-certgen:v1.1.1 还是 docker pull k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1 都没问题

https://i.ioiox.com/2022/05/07/20220507112005PQUbAP.jpg
https://i.ioiox.com/2022/05/07/202205071120066iJ6pJ.jpg
julyclyde
2022-05-07 11:21:57 +08:00
@klo424 把这个参数改掉,就可以不访问 gcr.io

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/851280

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX