【发布时间】:2022-12-24 01:50:11
【问题描述】:
我从出厂设置重置了我的整个 Docker 桌面并启用了 kubernetes。
然后,我运行kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.4/deploy/static/provider/cloud/deploy.yaml 并等待入口准备就绪。
然后,我部署我的应用程序,其中包括多个服务和一个入口定义。
入口如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 100m
spec:
ingressClassName: nginx
rules:
- host: test.project.com
http:
paths:
- path: "/.*"
pathType: "Prefix"
backend:
service:
name: test-frontend
port:
number: 80
检查服务,我得到:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
test-frontend ClusterIP 10.104.106.210 <none> 80/TCP 40m
kubectl get services -n ingress-nginx回报
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.100.44.33 <pending> 80:30753/TCP,443:31632/TCP 51m
ingress-nginx-controller-admission ClusterIP 10.97.85.58 <none> 443/TCP 51m
kubectl get ingresses回报
NAME CLASS HOSTS ADDRESS PORTS AGE
test-ingress nginx test.project.com 80 31m
如您所见,Docker Desktop 或 Ingress 没有像通常那样将入口正确绑定到本地主机。过去几周我一直在做的事情是不断停止、重新启动、重建和重置我的部署、服务、入口、节点、我的计算机和 Docker 桌面,直到它突然开始工作。我一直无法找出真正修复它的原因,它是否有效以及何时停止工作似乎几乎是随机的。
我能找到的唯一有趣的事情涉及 test-ingress 的事件:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Sync 35m (x3 over 42m) nginx-ingress-controller Scheduled for sync
Normal Sync 27m (x2 over 28m) nginx-ingress-controller Scheduled for sync
Normal Sync 7m55s (x2 over 14m) nginx-ingress-controller Scheduled for sync
编辑:我的桌面重新启动后它又开始工作了。关于如何防止这种情况或下次如何更快地修复它的任何想法,请留待解决,因为这是第 5 次或第 6 次发生这种情况。
【问题讨论】:
-
您使用的是哪个操作系统?安装了什么 Docker 桌面版本?我昨天才使用 docker desktop 4.2.0 在 Windows 上创建了一个设置,需要 1 分钟才能获得
localhost地址。即使现在ingress也缺少地址,但它仍然有效。您的服务有效吗?因为根据我在 Windows 上的经验,这个地址并不准确。我将minikube与hyperv驱动程序一起使用,但它仍然是localhost但实际上它是一个 VM 地址。 -
带有 Docker 桌面 4.2.0 的 Windows 10。我可以在没有主机分配的情况下将设置保留一个多小时。该服务确实有效,我可以看到 HTTP 就绪检查通过并返回 200。
-
ingress有效吗?你能打域吗?试图了解问题是否只是地址未显示或地址无法完全正常工作。还使用了 WSL2 还是 hyper-v?
标签: kubernetes-ingress nginx-ingress docker-desktop