Docker Desktop Nginx入口有时没有外部IP



我从出厂设置重置了整个Docker Desktop并启用了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

正如您所看到的,DockerDesktop或Ingress没有像通常那样将入口正确绑定到localhost。在过去的几周里,我一直在不断地停止、重新启动、重建和重置我的部署、服务、入口、节点、计算机和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次了。

可以尝试

kubectl expose deployment test-ingress-deployment --type=NodePort --port=8080 --name=test-ingress-service -n demo --dry-run=1 -o yaml > mypod-service.yaml

为服务生成yaml模板

然后通过应用yaml文件启动服务

然后应用入口yaml文件

在窗口10上,它将分配一个可以从"minikube ip":9999/*url 访问的随机端口9999

主机名并没有真正设置,而是在主机文件中。入口可以通过ip访问。入口是对多个服务的端点访问,而不考虑名称空间,但服务必须直接公开。

如果主机文件没有用minikube ip和主机名更新,则ingress将被安排同步。

它应该与Hyper-VM 一起工作

https://local/hello

相关内容

  • 没有找到相关文章

最新更新