Sag*_*ann 1 kubernetes minikube nginx-ingress
我已经在 Minikube 上设置了一个“hello world”入口,如教程中所述。唯一的区别 - 我删除了特定的主机名以使用 \'*\' 代替。然而,它似乎只能与 minikube ( ) 提供的入口控制器一起使用minikube addons enable ingress。当我尝试禁用它并使用helm install nginx-ingress stable/nginx-ingress它时,我无法再访问 Hello World 示例网站。我收到“连接被拒绝”错误:
$ kubectl get ingress\nNAME HOSTS ADDRESS PORTS AGE\nexample-ingress * 192.168.64.6 80 6m23s\n\n$ minikube ip\n192.168.64.6\n\n$ curl -iv "192.168.64.6"\n* Rebuilt URL to: 192.168.64.6/\n* Hostname was NOT found in DNS cache\n* Trying 192.168.64.6...\n* connect to 192.168.64.6 port 80 failed: Connection refused\n* Failed to connect to 192.168.64.6 port 80: Connection refused\n* Closing connection 0\ncurl: (7) Failed to connect to 192.168.64.6 port 80: Connection refused\nRun Code Online (Sandbox Code Playgroud)\n\n如果我切换回内置插件,它会再次工作:
\n\n$ helm uninstall nginx-ingress\nrelease "nginx-ingress" uninstalled\n\n$ minikube addons enable ingress\n\xe2\x9c\x85 ingress was successfully enabled\n\n$ curl -iv "192.168.64.6"\n* Rebuilt URL to: 192.168.64.6/\n* Hostname was NOT found in DNS cache\n* Trying 192.168.64.6...\n* Connected to 192.168.64.6 (192.168.64.6) port 80 (#0)\n> GET / HTTP/1.1\n> User-Agent: curl/7.38.0\n> Host: 192.168.64.6\n> Accept: */*\n> \n< HTTP/1.1 200 OK\nHTTP/1.1 200 OK\n* Server openresty/1.15.8.2 is not blacklisted\n< Server: openresty/1.15.8.2\nServer: openresty/1.15.8.2\n< Date: Sun, 09 Feb 2020 07:06:58 GMT\nDate: Sun, 09 Feb 2020 07:06:58 GMT\n< Content-Type: text/plain; charset=utf-8\nContent-Type: text/plain; charset=utf-8\n< Content-Length: 59\nContent-Length: 59\n< Connection: keep-alive\nConnection: keep-alive\n\n< \nHello, world!\nVersion: 1.0.0\nHostname: web-9bbd7b488-wsvsw\n* Connection #0 to host 192.168.64.6 left intact\nRun Code Online (Sandbox Code Playgroud)\n\n是否可以在 minikube 上正确安装并使用此 helm 图表?
\n我禁用了 ingress 插件,并使用你提到的 helm 图表安装了 nginx ingress。我测试了它并为您提供了解决方案。
当你跑步时:
$ kubectl get services nginx-ingress-controller
Run Code Online (Sandbox Code Playgroud)
你应该看到这个输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-ingress-controller LoadBalancer 10.96.245.213 <pending> 80:30240/TCP,443:31224/TCP 50s
Run Code Online (Sandbox Code Playgroud)
请注意,EXTERNAL-IP 处于挂起状态。
minikube不会自己分配这个IP,你需要手动分配。
运行kubectl edit svc nginx-ingress-controller并添加externalIPs字段spec:如下:
spec:
externalIPs:
- 192.168.39.241 # minikube ip
Run Code Online (Sandbox Code Playgroud)
现在让我们看看为什么会这样。通常,当在云环境中运行 kubernetes 时,创建 LoadBalancer 类型的服务时,云控制器会创建一个负载均衡器并更新服务的 IP,但是因为您在没有云特定功能运行的 minikube 上运行它,所以您需要添加地址手动。
这可以通过与集群关联的任何接口的任何 IP 进行,因此在拥有更多节点时它也应该可以工作。您可以添加节点的任何接口的 IP,kuberentes 将绑定该接口上的端口,从现在起您可以向其发送流量,它将转发到适当的服务/pod。
让我知道这很有帮助。
| 归档时间: |
|
| 查看次数: |
2009 次 |
| 最近记录: |