如何解决使用yaml
有人可以提供参考/基本思想如何在不同集群中的Pod之间进行通信。 假设群集A具有Pod A,群集B具有PodB。那么我们如何确保Pod A可以使用yaml与Pod B通信? -预先感谢
解决方法
将此答案作为社区Wiki发布,以获得更好的可见性并在用户@David Maze在评论中发布该解决方案时添加一些其他资源:
如果Pod位于不同的群集中,它们将无法彼此直接通信(不使用NodePort或LoadBalancer服务,否则无法从其自己的群集外部访问目标服务)。
在最常见的设置下,从Pod1
与Cluster1
到Pod2
的{{1}}来通信Cluster2
的方式是:
-
类型为
-
NodePort
类型为 -
LoadBalancer
-
Ingress
资源-特定于HTTP
/HTTPS
流量
Service
的Service
的以上所有解决方案都将在很大程度上取决于您的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 A.B.C.D
您应该能够看到:
<--- REDACTED --->
<p><em>Thank you for using nginx.</em></p>
<--- REDACTED --->
其他资源:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。