База знаний LinxCloud Services

Организация доступа к приложению в Kubernetes

Способы доступа к сервисам внутри кластера есть в официальной документации.

С помощью Linx Cloud можно обеспечить доступ к сервисам любым из этих способов:

NodePort

Открывается порт на worker-узле.

Ограничение:

Изначально, в целях безопасности, при создании кластера Kubernetes публичные IP-адреса не установливаются автоматически на master-узлах и worker-узлах. Пользователь может самостоятельно назначить IP-адреса узлам по завершении создания кластера.

Load Balancer

Предоставляется балансировщик нагрузки, при этом с ервис контейнеров Kubernetes интегрирован с облачной платформой Linx Cloud:

  • С помощью Load Balancer платформа может сама создать балансировщики в отказоустойчивой конфигурации active-standby, в таком случае трафик прозрачно переключается на запасной балансировщик, если происходит отказ основного балансировщика. Для организации такой конфигурации используются два экземляра HAProxy с настроенным протоколом VRRP между ними.
  • Чтобы подключить балансировщик к кластеру Kubernetes, нужно создать манифест с типом «сервис» и типом сервиса «Load Balancer». После деплоя созданного манифеста по умолчанию происходит обращение к OpenStack API Linx Cloud и создание балансировщика.

    Примечание

    Автоматически при создании балансировщика нагрузки ему назначается публичный IP-адрес, если в этом не нужно, то надо в манифест добавить аннотацию service.beta.kubernetes.io/openstack-internal-load-balancer: "true". Так будет создан внутренний балансировщик, к которому можно будет обращаться только из виртуальных сетей, которые доступны только вам через Linx Cloud.

Если же вы самостоятельно настраивает балансировку в Kubernetes, то вы должны сами создать балансировщик, обеспечить его отказоустойчивость и провести его интеграцию с кластером Kubernetes.

Пример манифеста для внутреннего балансировщика нагрузки:

1apiVersion: v1
2kind: Service
3metadata:
4  name: nginx
5  labels:
6    k8s-app: nginx-backend
7  annotations:
8    service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
9spec:
10  type: LoadBalancer
11  externalTrafficPolicy: Cluster
12  selector:
13    k8-app: nginx-backend
14  ports:
15    - port: 80
16      name: http
17      targetPort: http
18    - port: 443
19      name: https
20      targetPort: https

 

Ingress

Ingress-контроллер интегрируется с балансировщиком OpenStack в Linx Cloud. Бывает неудобно создавать баланcировщик для каждого сервисп, это может привести к трудностям в управлении балансировщиками на большом масштабе.

Но вместо нескольких балансировщиков на каждый сервис можно использовать развернутый Ingress Controller, настроенный на работу с отказоустойчивым балансировщиком и балансировку по DNS-именам. В таком случае создаются несколько ресурсов Ingress, использующих этот Ingress Controller: по одному ресурсу на каждый сервис, к которому надо предоставить доступ.

Более полную информацию о работе с Ingress читайте в здесь.

Что вас интересует?
Получить демо-доступ

Спасибо за ваш запрос, мы свяжемся с вами в ближайшее время!