在 Kubernetes 中,我有一個負載均衡器和 2 個 Web 應用程式(名稱為UI和Kuard),它們都通過服務和入口規則公開可用,類似于:
庫爾德服務:
apiVersion: v1
kind: Service
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |xxx
creationTimestamp: "2022-01-17T15:44:30Z"
labels:
app: kuard
app.kubernetes.io/managed-by: pulumi
name: mykuard
namespace: nginx-test-frwjnfp0
resourceVersion: "975"
uid: 819d94ca-b63d-44d5-9af9-a83da3f4bbd8
spec:
clusterIP: 10.3.250.8
clusterIPs:
- 10.3.250.8
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- port: 8080
protocol: TCP
targetPort: http
selector:
app: kuard
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
庫爾德入口
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: | xxx
kubernetes.io/ingress.class: nginx
pulumi.com/autonamed: "true"
creationTimestamp: "2022-01-17T15:44:42Z"
generation: 2
labels:
app: kuard
app.kubernetes.io/managed-by: pulumi
name: kuard-tuy3sb0v
namespace: nginx-test-frwjnfp0
resourceVersion: "13091"
uid: 4d14f3fc-d116-4233-a717-c38d92741139
spec:
rules:
- host: kuard.xxx.com
http:
paths:
- backend:
service:
name: mykuard
port:
name: http
path: /
pathType: ImplementationSpecific
status:
loadBalancer:
ingress:
- ip: xxx
正如你現在所看到的,我可以通過訪問kuard.xxx.comxxx 是公共 LB IP 來訪問 Kuard 應用程式。
目前,我可以通過在我的 UI 應用程式中進行硬編碼來Kuard從應用程式導航到該應用程式。這很愚蠢,因為我使用的是 WWW 地址而不是內部集群地址。UIkuard.xxx.com
我可以使用哪個 URL(和入口?)以便根據應用程式的內部集群地址而不是 WWW URLKuard在瀏覽器中打開應用程式?UI
I tried hardcoding http://mykuard:80 in the "UI" web app because the service name for the Kuard app is mykuard, but I'm definitely missing something.
uj5u.com熱心網友回復:
你想要的是不可能的。
從瀏覽器訪問服務時,您正在從集群外部發出請求。為此,您需要外部 IP。
內部集群地址 ( <service-name>:<port>) 僅用于內部通信(例如 pod 到 pod),并由您的瀏覽器無法訪問的內部 DNS 決議。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/415425.html
標籤:
