Может ли экземпляр пилота сконфигурирован для запроса как 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-серверов для обслуживания запросов в "другие зоны".
Чтобы использовать эту функцию, необходимо правильно настроить две вещи:
- Добавьте пользовательские зоны в kube-dns ConfigMap
- Установите для 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: