依赖的镜像拉不下来,或者内网环境无法访问 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