Случайные символы при описании пространств имен kubernetes - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь соединить мои развертывания Kubernetes вместе через DNS.

У меня есть развертывание 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?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Я исправил это, используя имя и порт метаданных Сервиса.

Например, это мое определение сервиса:

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
0 голосов
/ 27 апреля 2018

О ваших вопросах:

1- Kubernetes не рекомендует избегать создания имен, потому что в основном он обеспечивает уникальность модулей, а также, в первой части хэша группирует все модули с одним и тем же контроллером реплики.

Так что просто совет, не трогай его. https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#pod-template-hash-label

2- kubectl get services -o wide сообщит вам, на каком порту прослушивается ваше приложение. Вам просто нужно использовать кластерный ip + порт, такой как CLUSTER_IP: PORT, чтобы иметь возможность обращаться к вашему сервису.

...