В чем разница между фланелевой (сетевой слой) и входной в kubernetes? - PullRequest
0 голосов
/ 17 октября 2018

Я устанавливаю 2 VPC на GCP, я настраиваю kubeadm для каждого, назовем их kubemaster и kubenode1.Поэтому я запустил kubeadm на kubemaster и kubenode1, который:

  • kubeadm init на kubemaster
  • kubeadm join на kubenode1

Когда я пытался kubectl apply -f (a deployment which contains a pod with simple webapps inside) и kubectl apply -f (a NodePort type of Service which target the deployment port)

После этого я просто получаю доступ к веб-приложениям из своего браузера (на моей локальной машине, а не на GCP), он просто не работает так, как я пробовал на мини-кубе (я настраиваю миникуб с тем же кубектломпримените, как указано выше).Я копаю в поиске, и многие говорят о Ingress и сетевом уровне (фланель в примере с веб-сайтом kubernetes)

Мой вопрос: что это за Ingress и фланель?Какой из них необходим или оба вообще не нужны, если я просто хочу, чтобы мой веб-приложение запускалось?Как друг друга работает против других?Потому что, насколько я понимаю, расслоение выглядит следующим образом:

Traffic -> Services -> Deployments/Pods

Куда эти входные и фланелевые костюмы подходят?Если дело не в них обоих, почему мои приложения не работают должным образом (я открываю все порты в настройках GCP, так что это не проблема безопасности, я полагаю), я попытался настроить Uber Kubernetes Dashboard-UI, запустить kubectl proxy, и все же мой браузер не можетдоступ к обеим службам (мое веб-приложение внутри развертывания, а также Dashboard API), возможно, я немного растерялся.

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

Говоря в общем, короткий, фланелевый или межсетевой сетевой уровень - это то, что позволяет модулям общаться друг с другом в Кубернетесе.Ingress Controller, с другой стороны, - это то, что принимает объекты Ingress и превращает их в правила для приема и пересылки (в основном) HTTP (S) трафика в службы поддержки через сеть pod-to-pod.

Как вы можетес технической точки зрения, вам нужен только первый (сеть pod-to-pod), так как вы можете напрямую предоставлять свой сервис где-нибудь с помощью сервиса NodePort или LoadBalancer, хотя очень удобно использовать Ingress, если вы предоставляете несколько сервисов (почти так же, как выделать с vhosts на классических установках веб-сервера.

0 голосов
/ 17 октября 2018

Я хочу добавить еще несколько пунктов вместе с выходящими ответами.

После этого я просто получаю доступ к веб-приложениям из своего браузера (на моей локальной машине, а не в GCP), он просто не работает какчто я пробовал на миникубе

Открывали ли вы правила безопасности / правила брандмауэра для NodePort?В каком экземпляре вы открыли и какой экземпляр вы нажимаете для доступа к своему приложению?

Мой вопрос: что это за вход и фланель?

Я рекомендую вам прочитатьофициальные документы.Но в любом случае, поскольку вы задали вопрос, я хотел бы сказать несколько слов.

  • Flannel - это сеть с оверлейной передачей для контейнеров, в которой подсеть для контейнера может охватывать несколько узлов (что противоположно собственному сетевому хосту докера н / ж, NAT и т. Д.).Каждый контейнер получает свой IP каждый раз, когда появляется.flannel больше походит на контрольную панель для контейнерной сети, которая является внутренней по отношению к K8s
  • Ingress - это интеллектуальный маршрутизатор для балансировщика нагрузки (или пока простой, мы можем сказать, что он выставляет приложение на внешнюю сторону K8s).Работает на уровне приложений.Как только вы достигнете точки входа, он будет перенаправлен в сервис (который зависит от правил входа), а затем в модуль приложения.

Я вижу, вы говорили о ClusterIP.Как правило, ClusterIP - это IP для сервиса K8s, который является не чем иным, как магией «Правил таблиц IP».Kube-Proxy отвечает за написание правил таблицы ip в каждом узле, как только вы определите «Сервис».Эти правила таблицы ip или ClusterIP указывают на фактический IP-адрес pod (IP-адрес, назначенный фланелевым демоном).Я надеюсь, что вы можете понять, как фланель и "Ingress" вписываются в картину или работают вместе или ответственны за трафик приложения. ( Пожалуйста, исправьте, если я ошибаюсь .. !! )

  • Можете ли вы вставить содержимое yaml контроллера ингресс-контроллера?Какие правила вы определили?
  • Поскольку вы используете GCP, почему бы вам не попробовать GKE?Я имею в виду, что его легко развернуть, кроме того, вы можете получить доступ к своему приложению с помощью LoadBalancer вместо зависимости от Ingress (Во всяком случае, это не мое дело :-))
0 голосов
/ 17 октября 2018

Фланель и Ингресс - совершенно разные вещи.

flannel - это плагин сетевого интерфейса CNI или контейнера, задачей которого является сетевое взаимодействие между контейнерами.Как говорит coreOS:

каждому контейнеру назначается IP-адрес, который можно использовать для связи с другими контейнерами на том же хосте.Для связи по сети контейнеры привязаны к IP-адресам хост-машин и должны полагаться на сопоставление портов для достижения желаемого контейнера.Это затрудняет приложениям, работающим внутри контейнеров, объявление своих внешних IP-адресов и портов, поскольку эта информация им недоступна.

Фланель решает проблему, предоставляя каждому контейнеру IP-адрес, который можно использовать для передачи контейнеров.контейнерная связь.Он использует инкапсуляцию пакетов для создания виртуальной оверлейной сети, охватывающей весь кластер.В частности, фланель предоставляет каждому хосту IP-подсеть (по умолчанию / 24), из которой демон Docker может назначать IP-адреса отдельным контейнерам.

Kubernetes поддерживает некоторые другие плагины CNI: Calico,переплетение и т. д. Они различаются в зависимости от функциональности (например, поддерживают такие функции, как NetworkPolicy для ограничения ресурсов)

Ingress - это объект Kubernetes, который обычно работает на прикладном уровне сетевого стека (HTTP) и позволяет вамВнешний сервис доступен, он также предоставляет такие функции, как маршрутизация HTTP-запросов, сходство сеансов на основе файлов cookie, завершение трафика HTTPS и так далее.(так же, как веб-сервер Nginx или Apache)

...