现在我在 Windows 10 上使用 WSL 2 和 Docker Desktop。
我创建了一个 YAML 脚本来为我的微服务创建一个入口,如下所示。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-srv
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: posts.com
http:
paths:
- path: /posts
pathType: Prefix
backend:
service:
name: posts-clusterip-srv
port:
number: 4000
我按照这个安装指南安装了ingress-nginx
我在指南中运行了这个命令。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml
但是当我跑
kubectl get pods --namespace=ingress-nginx
时,ingress-nginx-controller
显示ImageInspectError
当我运行命令
kubectl apply -f ingress-srv.yaml
时,它显示了一条错误消息。
任何人都可以告诉我问题是什么吗?
我使用此命令
ingress-nginx
删除了命名空间 kubectl delete all --all -n ingress-nginx
并再次运行部署脚本。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml
但是问题还是发生了。
部署 ingress-nginx 控制器时出现问题。在部署入口之前,您需要首先解决那里的问题。因为,只有 nginx 控制器知道如何处理入口资源。
由于没有太多有关控制器部署失败的信息,您最好添加有关错误的更多详细信息。您可以描述控制器 Pod 并分享其事件和状态以进一步研究这一点。
这是因为文件系统损坏。
当我运行 ingress-nginx 部署命令时,由于驱动器存储大小不足,导致 docker-desktop 崩溃。
所以我删除了所有损坏的、未使用的或悬空的 docker 镜像。
docker system prune
我还删除了 ingress-nginx 并重新安装。
kubectl delete -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml
之后效果很好。
kubectl get pods --namespace=ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-tgkfx 0/1 Completed 0 74m
ingress-nginx-admission-patch-28l7q 0/1 Completed 3 74m
ingress-nginx-controller-7844b9db77-4dfvb 1/1 Running 0 74m