azure - 两个入口控制器,第二个入口控制器的 IP 未显示
问题描述
我在 Azure 中有一个 K8s 集群,其中有两个入口控制器都是公共的:
Controller A
配置为Service A
使用默认重定向到,nginx class
并Controller IoT
配置为Service B
使用自定义类重定向到:
...
args:
- /nginx-ingress-controller
- --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller
- --election-id=ingress-controller-leader
- --ingress-class=iot-nginx
...
物联网入口:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
...
kubernetes.io/ingress.class: "iot-nginx"
cert-manager.io/cluster-issuer: "prod_issuer"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/default-backend: nginx-errors
nginx.ingress.kubernetes.io/custom-http-errors: '403,404,503,400,500'
ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- <service B url>
secretName: letsencrypt-prod-cert-iot
rules:
- host: <service B url>
http:
paths:
- path: /iot
backend:
serviceName: iot
servicePort: 80
这工作得很好,我还使用证书管理器获得了 TLS 证书。公众可以使用 HTTPS 访问这两项服务。
问题是当我运行命令查看入口时,我只看到默认入口控制器的公共 IP 地址?
@Azure:~/https$ kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
letsencrypt-prod-cert <SericeA URL> XX.XXX.XX.XX 80, 443 53d
letsencrypt-prod-cert-iot <SericeB URL> 80, 443 63s
service-A-ingress <SericeA URL> XX.XXX.XX.XX 80, 443 21d
Service-B-ingress-iot <SericeB URL> 80 31m
服务 B 的 IP 地址未显示,可能是什么原因造成的?
更新
我查看了默认类 Nginx 的第一个控制器的 pod 日志,我收到了这个错误:
I0416 08:08:59.531993 6 flags.go:208] "Watching for Ingress" class="nginx"
W0416 08:08:59.532037 6 flags.go:213] Ingresses with an empty class will also be processed by this Ingress controller
-------------------------------------------------------------------------------
NGINX Ingress controller
Release: v0.44.0
Build: f802554ccfadf828f7eb6d3f9a9333686706d613
Repository: https://github.com/kubernetes/ingress-nginx
nginx version: nginx/1.19.6
-------------------------------------------------------------------------------
W0416 08:08:59.532349 6 client_config.go:614] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.
I0416 08:08:59.533011 6 main.go:241] "Creating API client" host="https://10.0.0.1:443"
I0416 08:08:59.553015 6 main.go:285] "Running in Kubernetes cluster" major="1" minor="17" git="v1.17.11" state="clean" commit="3a3612132641768edd7f7e73d07772225817f630" platform="linux/amd64"
F0416 08:08:59.557528 6 main.go:93] No service with name ingress-nginx-1612789874-controller found in namespace default: services "ingress-nginx-1612789874-controller" not found
goroutine 1 [running]:
k8s.io/klog/v2.stacks(0xc0000b0001, 0xc000026200, 0xb8, 0x1e2)
k8s.io/klog/v2@v2.4.0/klog.go:1026 +0xb9
k8s.io/klog/v2.(*loggingT).output(0x26915e0, 0xc000000003, 0x0, 0x0, 0xc0003efb90, 0x25e6c33, 0x7, 0x5d, 0x40e200)
k8s.io/klog/v2@v2.4.0/klog.go:975 +0x19b
k8s.io/klog/v2.(*loggingT).printDepth(0x26915e0, 0xc000000003, 0x0, 0x0, 0x0, 0x0, 0x1, 0xc00002e310, 0x1, 0x1)
k8s.io/klog/v2@v2.4.0/klog.go:732 +0x16f
k8s.io/klog/v2.(*loggingT).print(...)
k8s.io/klog/v2@v2.4.0/klog.go:714
k8s.io/klog/v2.Fatal(...)
k8s.io/klog/v2@v2.4.0/klog.go:1482
main.main()
k8s.io/ingress-nginx/cmd/nginx/main.go:93 +0x170f
...
解决方案
推荐阅读
- android - 导航抽屉的切换按钮不起作用
- javascript - 阻止某些屏幕分辨率查看网站?
- javascript - 处理反应渲染的承诺
- openssl - 仅限客户端的 SSL/TLS 应用程序是否需要证书?
- javascript - Next.js 与 Swagger
- php - 如何使用flutter和php将图像上传到服务器
- visual-studio - 开发模式下网页底部的 Visual Studio 图标 - 为什么?以及如何让它消失?
- java - java.io.IOException:下载错误:代理地址 127.0.0.1:8118 不是有效的 URL
- javascript - 使用 document.name 和 document.id 访问 DOM 元素?
- java - 如何使用 JGit 成功克隆 GIT 存储库?