Назад к вопросам
Middle
67
questionbank

Какие способы публикации приложений из Kubernetes вы знаете?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Service Type

  • ClusterIP: Внутренний IP-адрес, доступный только внутри кластера.
  • NodePort: Открывает порт на каждом узле кластера, трафик перенаправляется на Pod.
  • LoadBalancer: Интегрируется с облачным провайдером для создания внешнего балансировщика нагрузки.

Ingress

Предоставляет маршрутизацию HTTP/S трафика на основе правил. Требует контроллера Ingress (например, Nginx Ingress).

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

Ingress Gateway (Service Mesh)

В Service Mesh (например, Istio, Linkerd) используется Ingress Gateway для управления входящим трафиком, включая advanced routing, security policies (mTLS) и observability.

apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: my-gateway
spec:
  selector:
    istio: ingressgateway # Uses Istio's default ingress gateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - myapp.example.com

ExternalName Service

Создает CNAME запись в своем DNS, указывающую на внешний FQDN. Не перенаправляет трафик.

apiVersion: v1
kind: Service
metadata:
  name: my-ext-service
spec:
  type: ExternalName
  externalName: api.external.com

HostNetwork

Позволяет Pod'у использовать сетевое пространство узла. Обычно не рекомендуется из соображений безопасности и изоляции.

Использование Third-Party Load Balancers и Reverse Proxies

  • Механизм: Трафик сначала попадает на внешний балансировщик (HAProxy, Nginx Outside Kubernetes) или CDN, который затем перенаправляет его на NodePort или LoadBalancer Service в кластере.
  • Преимущества: Улучшенное кэширование, WAF, более тонкий контроль трафика до кластера.

Публикация через VPN

Для доступа к внутренним сервисам Kubernetes извне, но в контролируемой среде.

Сводная таблица способов публикации:

Метод Уровень Назначение Преимущества Недостатки
Service Type: ClusterIP Внутренний Взаимодействие внутри кластера Простота, безопасность (внутренний) Недоступен извне
Service Type: NodePort Узел Доступ на уровне узла Простота, понятность Использует занятые порты узлов, не Scale
Service Type: LoadBalancer Облачный Внешний доступ через облачный LB Автоматическое масштабирование, интеграция с облаком Затраты на облачный LB, зависимость от провайдера
Ingress L7 (HTTP/S) Маршрутизация HTTP/S трафика Гибкость маршрутизации, централизованное управление Требует Ingress Controller
Ingress Gateway L7 (Service Mesh) Расширенное управление трафиком (mTLS, A/B) Богатые возможности Service Mesh Требует развертывания Service Mesh
ExternalName Service DNS Указание на внешний FQDN Простота указания на внешние сервисы Не перенаправляет трафик
HostNetwork Сеть узла Использование сетевого пространства узла Прямой доступ к сети узла Риски безопасности, плохая изоляция
Third-Party LB/RP L4/L7 (Внешний) Расширенные возможности до кластера WAF, CDN, более тонкий контроль Дополнительная инфраструктура
VPN Сеть Контролируемый внешний доступ Безопасность (внутри VPN) Требует настройки VPN