在kubernetes中的pod之间进行通信

Lir*_*von 3 kubernetes

我有这样的事情:

           POD-1
             |
 -------------------------
 ?|?        ?|?        ?|?
service-1 service-2 service-3
Run Code Online (Sandbox Code Playgroud)

如何从pod中的服务器与服务后面的pod中的其他服务器进行通信?

Han*_*ena 9

您需要为要访问的窗格提供服务.您只需使用pod的相应服务的内部端点即可.

例如,让我们认为有一个mysql与其对应的pod和服务mysql-svc,类型为ClusterIP暴露端口3306,如下所示.

apiVersion: v1
kind: Service
metadata:
  name: mysql-svc
spec:
  ports:
  - name: db-port
    protocol: "TCP"
    port: 3306
    targetPort: 3306
  selector:
    app: mysql
Run Code Online (Sandbox Code Playgroud)

并且有一个单独的python应用程序pod使用该mysql.你可以使用mysql://mysql-svc:3306/dbName内部端点访问pod内的mysql服务器mysql-svc

如果您的pod位于两个不同的命名空间(命名空间中的mysql和dev命名空间中的python app qa),则可以使用它mysql-svc.dev.svc.cluster.local.


cod*_*ach 6

如果您有其他带有 pod 的服务,您可以使用集群内部 DNS 轻松访问:

对于foo命名空间中bar的服务,url 是foo.bar.svc.cluster.local. 最后一部分cluster.local可以根据您部署集群的方式进行更改。kops允许您为其指定不同的值。

在同一个命名空间内通信时,你甚至不需要bar你可以只做http://foo/foo:port使用不同的协议(如 mongo/rabbit/postgrest 等)