Настройка Kubernetes - PullRequest
       11

Настройка Kubernetes

0 голосов
/ 14 мая 2019

Я бы хотел настроить свою экосистему микросервисов в kubernetes.У меня есть одна среда, скажем, TEST, в которой я развернул app1, app2, app3 и DB.База данных является общей для службы.Предположим, что все мои службы развернуты в пространстве имен, называемом «стабильный».Теперь у меня есть другое пространство имен с именем "dev", в котором я развернул только app1.
Теперь я хочу получить доступ к app2 и БД в "стабильном" пространстве имен из app1 в пространстве имен "dev", если оба не развернуты в "dev".».т.е. когда я пытаюсь получить доступ к любому сервису из пространства имен dev, он должен попытаться соединиться в том же пространстве имен, и если он не существует, он должен перейти к «stable».

Я хочу добиться перекрестного взаимодействия пространства имен с условием, что если его нет в текущем пространстве имен, перенаправьте в следующее пространство имен.Возможно ли это?

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Вам потребуется служба loadbalancer со всеми восходящими потоками, определенными для такого аварийного переключения. Может быть достигнуто с Istio, если вы хотите, чтобы это централизованно конфигурировалось.

0 голосов
/ 15 мая 2019

Kubernetes поддерживает 2 основных режима поиска Сервиса - «переменные среды» и «DNS» .Когда вы пытаетесь соединить сервисы в разных пространствах имен, вы должны использовать полное имя SVC (имя SV с пространством имен), например your_svc1.namespace2.svc.cluster.local

Согласно документации:

Когда вы создаете Службу, она создает соответствующую запись DNS.Эта запись имеет вид ..svc.cluster.local, что означает, что если контейнер только использует, он будет преобразован в службу, которая является локальной для пространства имен.Это полезно для использования одной и той же конфигурации в нескольких пространствах имен, таких как разработка, подготовка и производство.Если вы хотите охватить пространства имен, вам нужно использовать полное доменное имя (FQDN).Дополнительная информация о " пространствах имен и DNS ".

Вы также можете использовать " Сервисы без селекторов ", где конечные точки могут быть определеныпользователем.Другим примером является " Тип службы ExternalName " с примером .

. По второму вопросу, пожалуйста, обратитесь к " PodПолитика DNS"

Это полезно, когда вам нужно настроить вышестоящие серверы имен или суффиксы домена поиска, настроенные в resolv.conf.Вы можете сделать это с помощью опции dnsConfig во время создания модуля, как в примере ниже.Вы можете найти больше информации здесь .

apiVersion: v1
kind: Pod
metadata:
  namespace: default
  name: dns-example
spec:
  containers:
    - name: test
      image: nginx
  dnsPolicy: "None"
  dnsConfig:
    nameservers:
      - 1.2.3.4
    searches:
      - ns1.svc.cluster.local
      - ns2.svc.cluster.local
    options:
      - name: ndots
        value: "2"
      - name: edns0
...