2016-08-23 10 views
0

У меня есть составной сервис S.c, который потребляет 2 атомарные службы S.a и S.b, где все три службы запущены в кластере Кубернетес. Что бы быть лучше рисунок наkubernetes услуги связи внутри кластера

1) Создание Sa, Sb, как обезглавленные службы и пусть Sc интегрировать с ними через внешний Loadbalancer как NGINX + (который использует DNS распознаватель для поддержания обновленных серверных стручков)

2) Созданием Sa , Sb с помощью clusterIP и разрешить Sc доступ к ним/разрешать их через DNS-кластер (приложение skyDNS). Что будет внутренне использовать балансировку нагрузки на основе IP-таблицы для контейнеров.

Примечание: Мой кластер k8s работает на настраиваемом решении (на виртуальной машине) У нас есть много составных сервисов, которые потребляют от 1 до многих атомных сервисов (например, пример выше).

Редактировать: В нескольких сценариях мне также нужно будет выставлять службы во внешнюю сеть , подобно Sb, нужен доступ как от Sc, так и снаружи. В этом было бы разумнее создать Sb в качестве службы безглавых, иначе DNS-резольвер всегда возвращал бы только адрес clusterIP, и весь внешний запрос также будет перенаправлен на адрес clusterIP. Моя задача состоит в том, оба сценария (внутри- против интер) конфликтуют друг с другом

Например: Nginx-сервис (который имеет clusterIP) и Nginx-безголовый-сервис (без головы)

/# nslookup nginx-service 
Server: 172.16.48.11 
Address 1: 172.16.48.11 kube-dns.kube-system.svc.cluster.local 

Name:  nginx-service 
Address 1: 172.16.50.29 nginx-service.default.svc.cluster.local 

/# nslookup nginx-headless-service 
Server: 172.16.48.11 
Address 1: 172.16.48.11 kube-dns.kube-system.svc.cluster.local 

Name:  nginx-headless-service 
Address 1: 11.11.1.13 wrkfai1asby2.my-company.com 
Address 2: 11.11.1.15 imptpi1asby.my-company.com 
Address 3: 11.11.1.4 osei623a-sby.my-company.com 
Address 4: 11.11.1.6 osei511a-sby.my-company.com 
Address 5: 11.11.1.7 erpdbi02a-sbyold.my-company.com 

ответ

1

Использование DNS + кластера IP-адреса - это более простой подход и не требует раскрытия ваших услуг в общедоступном Интернете. Если вам не нужны конкретные функции балансировки нагрузки от nginx, я бы рекомендовал перейти с №2.

+0

Спасибо за ваш ответ. –

+0

Каковы ваши мысли, когда у нас есть служба, которая должна быть доступна как внутри кластера, так и снаружи. См. Редактировать. –

+0

Если вы можете разрешить DNS и перенаправлять кластерные IP-адреса в кластер, # 2 все равно будет работать (здесь есть [Google конкретный ответ] (http://stackoverflow.com/questions/32618437/why-cant-i-access-my -kubernetes-service-via-its-ip/32619002 # 32619002), которые могут быть полезны). Если это трудно или невозможно при настройке вашей сети, обезглавленная служба, работающая с nginx, была бы достойной опцией. –