Может ли экземпляр пилота сконфигурирован для запроса как k8s, так и консула?

Мы запускаем сервисы в k8s и не-k8s. Услуги не-k8s зарегистрированы в Консуле. Мы думаем о добавлении istio в наш стек, и в идеале мы хотим, чтобы сервисы k8s вызывали сервисы не-k8s. Итак, у меня есть несколько вопросов по этому поводу

1) Запрашивает ли один экземпляр поддержки Pilot и k8s, и консул?
2) Можно ли настроить istio для поддержки такой среды?

Я попытался прочитать istio docs, но не могу найти, можно ли настроить Pilot для запроса и консула, и k8. Ссылочные ссылки на документы / блоги также будут полезны. Заранее спасибо!

1 ответ

Начиная с Kubernetes v1.6, kube-dns поддерживает настройку пользовательских зон dns (например, .consul.local) с внешним распознавателем и для внешних DNS-серверов для обслуживания запросов в "другие зоны".

Чтобы использовать эту функцию, необходимо правильно настроить две вещи:

  1. Добавьте пользовательские зоны в kube-dns ConfigMap
  2. Установите для pod dnsPolicy значение ClusterFirst
    (ищите подробности в разделе "Политика DNS Pod" связанного документа)

Если для dnsPolicy установлено значение "ClusterFirst", DNS-запрос сначала отправляется на уровень кэширования DNS в kube-dns. Отсюда суффикс запроса проверяется и затем пересылается в соответствующий DNS. В этом случае имена с суффиксом кластера (например, ".cluster.local") отправляются в kube-dns. Имена с суффиксом домена-заглушки (например, ".acme.local") будут отправлены в настроенный пользовательский преобразователь. Наконец, запросы, которые не соответствуют ни одному из этих суффиксов, будут перенаправлены в вышестоящий DNS.

Вот пример добавления пользовательской карты для зоны .consul.local и пользовательские вышестоящие услуги.

apiVersion: v1
kind: ConfigMap
metadata:
  name: kube-dns
  namespace: kube-system
data:
  stubDomains: |
    {“consul.local”: [“10.150.0.1”]}
  upstreamNameservers: |
    ["8.8.8.8", "8.8.4.4"]

Чтобы применить эту конфигурацию, сохраните ее в файл kube-dns-consul-stubdomain.yml и выполните команду (настройте имя зоны и IP-адрес сервера в соответствии с вашими потребностями):

kubectl create -f kube-dns-consul-stubdomain.yml

Это пример конфигурации модуля с помощью dnsPolicy.

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - image: busybox
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Always
  hostNetwork: true
  dnsPolicy: ClusterFirst

Эти ресурсы могут оказаться полезными для понимания деталей функции частных зон DNS:

Другие вопросы по тегам