跳到主内容

依赖的镜像拉不下来,或者内网环境无法访问 ghcr.io 怎么办?

答:有三种方法可以解决

  • 第一种,在可以访问 ghcr.io 的网络中,将命令 kubevpn version 中的 image 镜像,转存到自己的私有镜像仓库,然后启动命令的时候,加上 --image 新镜像 即可。 例如:
➜  ~ kubevpn version
KubeVPN: CLI
Version: v2.11.5
Daemon: v2.11.5
Image: ghcr.io/kubenetworks/kubevpn:v2.11.5
Branch: master
Git commit: ac918b5
Built time: 2024-09-03 20:31:08
Built OS/Arch: darwin/arm64
Built Go version: go1.22.6

镜像是 ghcr.io/kubenetworks/kubevpn:v2.11.5,将此镜像转存到自己的镜像仓库。

docker pull ghcr.io/kubenetworks/kubevpn:v2.11.5
docker tag ghcr.io/kubenetworks/kubevpn:v2.11.5 [镜像仓库地址]/[命名空间]/[镜像仓库]:[镜像版本号]
docker push [镜像仓库地址]/[命名空间]/[镜像仓库]:[镜像版本号]

然后就可以使用这个镜像了,如下:

➜  ~ kubevpn connect --image [镜像仓库地址]/[命名空间]/[镜像仓库]:[镜像版本号]
Starting connect
Detected cluster CIDRs: 172.29.0.0/16, 172.21.0.0/16
...
  • 第二种,使用选项 --transfer-image,这个选项将会自动转存镜像到选项 --image 指定的地址。 例如:
➜  ~ kubevpn connect --transfer-image --image registry.example.org/kubevpn/kubevpn:latest
Starting connect
Detected cluster CIDRs: 172.29.0.0/16, 172.21.0.0/16 (cached)
Using traffic manager in namespace "default"
Forwarded ports (TCP/UDP/xDS)
Allocated TUN IP 198.18.0.100
Created TUN device "utun4"
Configured DNS
Now you can access resources in the kubernetes cluster !
➜ ~
  • 第三种,使用 kubevpn image copy 命令将镜像复制到私有仓库:
kubevpn image copy ghcr.io/kubenetworks/kubevpn:latest registry.example.org/kubevpn/kubevpn:latest

然后使用 --image 指定私有仓库镜像:

kubevpn connect --image registry.example.org/kubevpn/kubevpn:latest

如果私有仓库需要认证,可以创建 Kubernetes Secret 并引用:

kubevpn connect --image registry.example.org/kubevpn/kubevpn:latest --image-pull-secret-name my-registry-secret