簡體   English   中英

使用yaml在K8s中不同集群中的Pod之間進行通信

[英]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 服務,或以其他方式使目標服務可從其自己的集群外部訪問)。


最常見的設置,以通信的方式Pod1Cluster1Pod2Cluster2是使用:

  • ServiceNodePort
  • LoadBalancer類型的Service
  • Ingress資源 - 特定於HTTP / HTTPS流量

上述所有解決方案都在很大程度上取決於您的 Kubernetes 集群的部署位置。

例如:

借助GKEAKSEKS等雲解決方案,您可以使用LoadBalancerIngress資源的服務類型將流量定向到您的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM