kubernetes 如何允许来自两个不同集群的两个Pod之间的通信,具有相同的Istio控制平面(GCP管理)和相同的网络

crcmnpdw  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(110)

我在同一个VPC和同一个命名空间内的cluster 1和cluster 2中部署了两个工作负载。我需要允许它们之间的通信使用服务,我创建相同的命名空间在两个集群和两个部署与服务

apiVersion: v1
kind: Namespace
metadata:
  labels:
    istio.io/rev: asm-managed-stable
  name: test1
  annotations:
    mesh.cloud.google.com/proxy: '{"managed": true}'
---
apiVersion: v1
kind: Service
metadata:
  name: test-v1
  namespace: test1
spec:
  selector:
    app: test-v1
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080
  type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
  name: test-v2
  namespace: test1
spec:
  selector:
    app: test-v2
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080
  type: ClusterIP

我试图通过url * http://test-v2.test1.svc.cluster.local:8080 * 从第一次部署访问服务test-v2,但没有访问权限。
UPD:我发现问题出在DNS解析上,没有DNS代理就无法多集群解析服务DNS。那么问题是,是否有可能通过dns名称访问服务,而无需istio dns代理?

khbbv19g

khbbv19g1#

可以在内部服务IP内进行通信,以允许使用DNS服务名称进行通信,将dns proxy注解添加到pod

kind: Deployment
metadata:
  name: sleep
spec:
...
  template:
    metadata:
      annotations:
        proxy.istio.io/config: |
          proxyMetadata:
            ISTIO_META_DNS_CAPTURE: "true"
            ISTIO_META_DNS_AUTO_ALLOCATE: "true"

相关问题