我正在嘗試使用靜態 IP 在 AKS 上制作 Web 應用程式,并且很自然地在 Azure 的檔案中找到了帶有Nginx 入口控制器的解決方案。
這很有效,除了帶有 dns-label 的部分。我的應用程式僅在 上可見<dns-label>.<region>.cloudapp.azure.com,這當然有點煩人(無法將我的網路主機 DNS 路由到 url)。無論如何,它在我分配給集群的靜態 IP 上不可用,我覺得很奇怪。當我 ping IP 時,它會導致來自 Nginx 的 404。我試圖更改 Ingress 主機,但沒有運氣。
當 I 時kubectl describe ingress basic-ingress,一切看起來都很好:
Name: basic-ingress
Namespace: default
Address: XXXXXXXXXX
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
TLS:
tls-secret terminates XXXXXXXXXXXXX.XXXXX.cloudapp.azure.com
Rules:
Host Path Backends
---- ---- --------
platform-dns.eastus.cloudapp.azure.com
/* smp-frontend:80 (XXXXXXXXX, XXXXXXXX, XXXXXXXXXX)
/api/* smp-backend:8080 (XXXXXXX, XXXXXXXXX, XXXXXXXX)
Annotations: cert-manager.io/cluster-issuer: XXXXXXXXXX
kubernetes.io/ingress.allow-http: true
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CreateCertificate 84m cert-manager Successfully created Certificate "XXXXXXXX"
Normal Sync 71m (x4 over 84m) nginx-ingress-controller Scheduled for sync
Normal Sync 71m (x4 over 84m) nginx-ingress-controller Scheduled for sync
uj5u.com熱心網友回復:
Ingress 根據主機名(請求中的主機標頭;第 7 層)路由流量。要僅使用 IP 地址路由流量,您必須配置 Ingress 清單以偵聽通配符。您可以通過洗掉 HTTP 規則中的“主機”欄位來實作:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /testpath
pathType: Prefix
backend:
service:
name: test
port:
number: 80
如果您只想使用 IP,您還可以考慮從 Ingress 轉移到LoadBalancer 服務,該服務通過 Azure 負載均衡器(第 4 層)直接公開您的作業負載。
此處提供了有關如何通過靜態 IP 使用 LoadBalancer 服務的指南。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/367812.html
