描述kubernetes名称空间时的随机字符

时间:2018-04-26 22:28:01

标签: dns namespaces kubernetes kubernetes-service kubernetes-deployment

我试图通过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. 如何使用类似形式的my-svc.my-namespace.svc.cluster.local确定我的DNS名称是什么?

2 个答案:

答案 0 :(得分: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)即可访问您的服务。

答案 1 :(得分: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