Kubernetes - 服务之间的沟通

时间:2018-03-15 08:47:30

标签: kubernetes

我目前正在开发一个kubernetes集群。群集正常运行。 我需要在不使用代理的情况下在服务之间建立通信 例如,我有以下服务:

  1. 工人
  2. APP1
  3. APP2
  4. APP3
  5. Worker需要通过SSH直接登录app容器并执行一些命令。 在docker-compose文件中,通过使用链接然后ssh app1,ssh app2很容易。 怎么在Kubernetes呢?

2 个答案:

答案 0 :(得分:0)

您需要创建一个headless Servicespec.clusterIP: None)来选择您的应用程序Pod。这将创建一个DNS条目(类似my-svc.my-namespace.svc.cluster.local),它将解析为您的服务选择的Pod的IP集合。然后,您可以遍历返回的Pod IP列表和ssh到每个。

可以找到更多详细信息here

答案 1 :(得分:0)

有伪代码,

kind: Service
apiVersion: v1
metadata:
  name: worker
  labels:
    app: worker
spec:
  selector:
    app: worker
  ports:
  - protocol: TCP
    port: 22
    targetPort: 22
  type: NodePort 
---
kind: Service
apiVersion: v1
metadata:
  name: app1
  labels:
    app: app1
spec:
  selector:
    app: app1
  ports:
  - protocol: TCP
    port: 22
    targetPort: 22
  type: ClusterIP 
---
kind: Service
apiVersion: v1
metadata:
  name: app2
  labels:
    app: app2
spec:
  selector:
    app: app2
  ports:
  - protocol: TCP
    port: 22
    targetPort: 22
  type: ClusterIP 

然后,在工人上

ssh app1
ssh app2