0

我正在尝试通过 DNS 将我的 Kubernetes 部署连接在一起。

我有一个 Java (Spring Boot) 部署和一个 javascript (node.js) 部署,两者都通过默认的 ClusterIP 服务公开。我需要两个服务之间的 websocket 和 REST 通信。

我已经读过我应该使用 DNS,以便这两个服务可以相互通信,但是我在尝试确定这些 DNS 是什么时遇到了麻烦。

例如,

kubectl get pods --all-namespaces

给了我这个:

NAMESPACE NAME default javascript-deployment-65869b7db4-mxfrb default java-deployment-54bfc87fd6-z8wml

  1. 我需要在我的服务配置中指定什么来停止应用这些随机后缀?
  2. 然后,我如何确定我的 DNS 名称需要与 my-svc.my-namespace.svc.cluster.local 类似的形式?
4

2 回答 2

0

关于您的问题:

1- Kubernetes 不建议避免创建名称,因为基本上,它确保 pod 是唯一的,而且哈希的第一部分将所有 pod 与相同的副本控制器分组。

所以就像建议一样,不要碰它。https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#pod-template-hash-label

2-kubectl get services -o wide将为您提供您的应用程序正在侦听的端口。您只需要使用集群 ip + 端口(如 CLUSTER_IP:PORT)就可以访问您的服务。

于 2018-04-26T22:46:31.797 回答
0

我使用服务元数据名称和端口修复了它。

例如,这是我的服务定义:

apiVersion: v1
kind: Service
metadata:
  name: my-big-deployment
spec:
  ports:
  - port: 8000
    protocol: TCP
    targetPort: 8000
selector:
  app: my-service

从集群中的应用程序中,我现在可以通过以下环境变量访问此服务:

MY_BIG_DEPLOYMENT_SERVICE_HOST
MY_BIG_DEPLOYMENT_SERVICE_PORT
于 2018-04-27T16:17:37.530 回答