我目前正在开发一个kubernetes集群。群集正常运行。 我需要在不使用代理的情况下在服务之间建立通信 例如,我有以下服务:
Worker需要通过SSH直接登录app容器并执行一些命令。 在docker-compose文件中,通过使用链接然后ssh app1,ssh app2很容易。 怎么在Kubernetes呢?
答案 0 :(得分:0)
您需要创建一个headless Service(spec.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