Что такое Service в OpenShift/Kubernetes?

«Что такое Service в OpenShift/Kubernetes?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Service в OpenShift (и Kubernetes) — это абстракция, которая определяет постоянную конечную точку для доступа к логической группе динамических Pod'ов. Он обеспечивает стабильное сетевое имя и IP-адрес, абстрагируясь от нестабильности отдельных Pod'ов (их перезапусков, масштабирования, перемещений).

Типы Service и их назначение:

  1. ClusterIP (тип по умолчанию):

    • Назначает Service внутренний IP-адрес из диапазона кластера.
    • Доступен только внутри кластера.
    • Используется для внутренней коммуникации между компонентами приложения.
  2. NodePort:

    • Расширяет ClusterIP.
    • Открывает статический порт на каждой Node кластера.
    • Внешний трафик может попасть в Service через <NodeIP>:<NodePort>.
    • Используется для разработки или когда LoadBalancer недоступен.
  3. LoadBalancer:

    • Расширяет NodePort.
    • Автоматически создает внешний балансировщик нагрузки в облачном провайдере (AWS ELB, GCP Load Balancer).
    • Назначает Service внешний IP-адрес.
    • Стандартный способ для внешнего доступа в облачных средах.
  4. ExternalName:

    • Маппит Service на внешнее DNS-имя (например, my-service.default.svc.cluster.local → api.external.com).
    • Не имеет селектора и не создает прокси.

Пример манифеста Service (тип ClusterIP):

apiVersion: v1
kind: Service
metadata:
  name: backend-service
spec:
  selector:          # Селектор определяет, какие Pod'ы входят в Service
    app: backend
    tier: api
  ports:
  - name: http
    port: 80        # Порт, на котором Service доступен внутри кластера
    targetPort: 8080 # Порт контейнера в Pod'е, на который направляется трафик
  type: ClusterIP   # Тип Service

Особенности в OpenShift:

  • Route: OpenShift предоставляет объект Route (аналог Ingress в Kubernetes) как основной способ безопасного внешнего доступа по HTTP/HTTPS. Route направляет трафик на внутренний Service.
  • Service Mesh: Глубокая интеграция с OpenShift Service Mesh (Istio) для расширенных возможностей: наблюдение, безопасность, управление трафиком.