https://www.toutiao.com/article/7525319487852134962/
由于国内环境问题,安装Ingress-nginx 折腾了好几天都没安装成功,无奈只好开个美国的云服务器,下载镜像,然后传回安装。
tar -xvf ingress-nginx-4.13.0.tgz
查看需要下载哪些镜像:
helm template ingress-nginx ingress-nginx/ \
| grep -oP 'image:\s*\K[^"]+' \
| sort -u > images.list
# cat images.list
registry.k8s.io/ingress-nginx/controller:v1.13.0@sha256:dc75a7baec7a3b827a5d7ab0acd10ab507904c7dad692365b3e3b596eca1afd2
registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.0@sha256:c9f76a75fd00e975416ea1b73300efd413116de0de8570346ed90766c5b5cefb
然后在国外服务器通过docker 下载:
docker pull registry.k8s.io/ingress-nginx/controller:v1.13.0@sha256:dc75a7baec7a3b827a5d7ab0acd10ab507904c7dad692365b3e3b596eca1afd2
docker pull registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.0@sha256:c9f76a75fd00e975416ea1b73300efd413116de0de8570346ed90766c5b5cefb
dcoker打标签打包:
docker tag d9b2df1fa40e registry.k8s.io/ingress-nginx/controller:v1.13.0
docker tag 715a30c71ce6 registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.0
docker save registry.k8s.io/ingress-nginx/controller:v1.13.0 -o ingress-controller.tar
docker save registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.0 -o webhook-certgen.tar
传回国内并导入到k8s容器,镜像已经导入,可是K8S未必能识别:
ctr -n k8s.io images import webhook-certgen.tar
ctr -n k8s.io images import ingress-controller.tar
执行这条命令的目的是为 镜像添加包含 digest 的标签,确保 Kubernetes Pod 能匹配到本地镜像(解决之前的 ImagePullBackOff 问题)
ctr -n k8s.io images tag registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.0 registry.k8s.io/ingress-nginx/kube-webhook-certgen@sha256:c9f76a75fd00e975416ea1b73300efd413116de0de8570346ed90766c5b5cefb
ctr -n k8s.io images tag registry.k8s.io/ingress-nginx/controller:v1.13.0 registry.k8s.io/ingress-nginx/controller@sha256:dc75a7baec7a3b827a5d7ab0acd10ab507904c7dad692365b3e3b596eca1afd2
不然查看ingress-nginx pods状态还是会镜像问题,如查看具体标记值:
kubectl describe pod ingress-nginx-controller-687bf75959-wvrrz -n ingress-nginx | grep Image
Image: registry.k8s.io/ingress-nginx/controller:v1.13.0@sha256:dc75a7baec7a3b827a5d7ab0acd10ab507904c7dad692365b3e3b596eca1afd2
# kubectl describe pod ingress-nginx-controller-687bf75959-wvrrz -n ingress-nginx | grep Image
Image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.6.0@sha256:c9f76a75fd00e975416ea1b73300efd413116de0de8570346ed90766c5b5cefb
Image ID:
Reason: ErrImagePull
Warning Failed 16s (x2 over 93s) kubelet Error: ErrImagePull
Warning Failed 4s (x2 over 93s) kubelet Error: ImagePullBackOff
开始安装,使用helm安装:
创建命名空间:ingress-nginx
helm install ingress-nginx ./ingress-nginx-4.13.0.tgz --namespace ingress-nginx --set controller.image.pullPolicy=IfNotPresent --set admissionWebhooks.patch.image.pullPolicy=IfNotPresent
由于K8S是本地私有化部署:
helm upgrade ingress-nginx ./ingress-nginx-4.13.0.tgz --namespace ingress-nginx --set controller.service.type=NodePort --set controller.service.nodePorts.http=31080 --set controller.service.nodePorts.https=30443
到这边INgress-nginx安装完成,主要是网络问题导致国内镜像不能下载,可以通过国外下载镜像,然后导入。
文档更新时间: 2025-07-13 08:14 作者:admin