ClusterIP: Служби доступні стручками / службами в кластері
Якщо я зроблю службу під назвою myservice в просторі імен за замовчуванням типу: ClusterIP, тоді буде створена наступна передбачувана статична DNS-адреса для служби:
myservice.default.svc.cluster.local (або просто myservice.default, або стручками в просторі імен за замовчуванням просто "myservice" буде працювати)
І цю назву DNS можна вирішити лише за допомогою служб і служб всередині кластеру.
NodePort: Служби доступні клієнтам у тій самій локальній мережі / клієнтам, які можуть пінг-хостинг вузлів K8s (і стручки / послуги в кластері) (Примітка. Для безпеки вузли вузлів k8s повинні знаходитись у приватній підмережі, таким чином клієнти в Інтернеті виграють я не зможу дістатися до цієї послуги)
Якщо я зроблю службу під назвою mynodeportservice у просторі імен мій типу типу: NodePort на 3-вузловому Kubernetes Cluster. Тоді буде створена Служба типу: ClusterIP, і вона буде доступна клієнтам всередині кластера за такою передбачуваною статичною DNS-адресою:
mynodeportservice.mynamespace.svc.cluster.local (або просто mynodeportservice.mynamespace)
Для кожного порту, який mynodeportservice прослуховує на вузлі, у діапазоні 30000 - 32767 буде вибрано випадковим чином. Так що зовнішні клієнти, які знаходяться за межами кластеру, можуть звернутися до тієї служби ClusterIP, яка існує всередині кластеру. Скажемо, що наші вузли хостів 3 K8s мають IP-адреси 10.10.10.1, 10.10.10.2, 10.10.10.3, служба Kubernetes прослуховує порт 80, а Nodeport, вибраний навмання, становив 31852.
Клієнт, який існує поза кластером, може відвідувати 10.10.10.1:31852, 10.10.10.2:31852 або 10.10.10.3:31852 (оскільки NodePort слухається кожним вузлом Kubernetes Host) Kubeproxy передасть запит на порт 80 mynodeportservice.
LoadBalancer: Служби доступні всім, підключеним до Інтернету * (Загальна архітектура L4 LB є загальнодоступною в Інтернеті, розміщуючи її в DMZ або надаючи їй приватний і загальнодоступний IP-вузли, а вузли хостів k8s знаходяться в приватній підмережі)
( Примітка. Це єдиний тип сервісу, який не працює в 100% реалізації Kubernetes, як, наприклад, Kubernetes з чистого металу; він працює, коли Kubernetes має інтеграцію постачальників хмарних технологій.)
Якщо ви робите mylbservice, тоді буде породжений VM L4 LB (послуга IP кластера, а також буде неявно породжена служба NodePort). Цього разу наш NodePort має 30222. Ідея полягає в тому, що L4 LB матиме відкритий IP-код 1.2.3.4, і він буде завантажувати баланс і пересилати трафік на 3 вузли хостів K8s, які мають приватні IP-адреси. (10.10.10.1:30222, 10.10.10.2:30222, 10.10.10.3:30222), а потім Kube Proxy передасть його до сервісу типу ClusterIP, який існує всередині кластера.
Ви також запитали: Чи все ще використовується тип послуги NodePort ClusterIP? Так *
Або NodeIP - це насправді IP, знайдений під час запуску kubectl, отримує вузли? Також так *
Дозволяє провести паралель між Основами:
контейнер знаходиться всередині стручка. стручок знаходиться всередині реплікації. реплікація знаходиться всередині розгортання.
Так само:
Служба ClusterIP є частиною служби NodePort. Послуга NodePort є частиною служби балансування навантаження.
На цій діаграмі, яку ви показали, Клієнт був би стручком всередині кластера.
externalIPs
змінюється рівняння? Зокрема, можна призначитиexternalIPs
масив дляClusterIP
типу-сервісу, і тоді служба стає доступною і для зовнішнього IP-адреси? Коли ви вибрали це через NodePort?