[英]Communication Between Pods in Different Cluster in K8s using yaml
有人可以提供參考資料/基本想法如何在不同集群中的 Pod 之間進行通信。 假設集群 A 有 Pod A,集群 B 有 Pod B。那么我們如何確保 Pod A 可以使用 yaml 與 Pod B 通信? -提前致謝
將此答案作為社區 wiki 發布以獲得更好的可見性並添加一些額外的資源,因為該解決方案已發布在用戶 @David Maze 的評論中:
如果 pod 位於不同的集群中,則它們無法直接相互通信(不使用 NodePort 或 LoadBalancer 服務,或以其他方式使目標服務可從其自己的集群外部訪問)。
最常見的設置,以通信的方式Pod1
從Cluster1
與Pod2
與Cluster2
是使用:
Service
型NodePort
LoadBalancer
類型的Service
Ingress
資源 - 特定於HTTP
/ HTTPS
流量上述所有解決方案都在很大程度上取決於您的 Kubernetes 集群的部署位置。
例如:
借助GKE
、 AKS
、 EKS
等雲解決方案,您可以使用LoadBalancer
或Ingress
資源的服務類型將流量定向到您的 Pod。
使用裸機解決方案,您需要使用其他工具(如MetalLB
來使用LoadBalancer
類型的服務
您還可以查看此資源:
例如,假設您有 2 個 Kubernetes 集群,可以使用LoadBalancer
類型的服務公開流量。
應用於第一個集群:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
檢查與服務關聯的EXTERNAL-IP
:
$ kubectl get service nginx-service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-service LoadBalancer 10.92.10.48 A.B.C.D 80:30994/TCP 26s
切換到第二個集群並運行:
$ kubectl run -it ubuntu --image=ubuntu -- /bin/bash
$ apt update && apt install curl
$ curl ABCD
您應該能夠看到:
<--- REDACTED --->
<p><em>Thank you for using nginx.</em></p>
<--- REDACTED --->
其他資源:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.