Вопрос с собеседования · DevOps

Какие бывают Service в Kubernetes и чем Service отличается от Ingress?

MiddleKubernetesnginx
Ещё спрашивают так:
  • Чем ClusterIP отличается от NodePort и LoadBalancer?
  • Как трафик снаружи попадает в под?
Коротко

Service — стабильное имя и виртуальный IP для набора подов по меткам, балансировка на уровне L4. Типы: ClusterIP — только внутри кластера (по умолчанию), NodePort — порт на каждом узле, LoadBalancer — внешний балансировщик облака. Ingress — правила L7 (HTTP): маршрутизация по домену и пути, TLS, на один внешний вход — много сервисов; работает через ingress-контроллер (nginx, Traefik).

  • Внутри кластера сервис доступен по DNS: orders.shop.svc.cluster.local
  • Headless Service (clusterIP: None) — DNS возвращает IP подов, нужен StatefulSet
  • Gateway API — более выразительная замена Ingress

А ещё В Service попадают только поды, прошедшие readiness

Подробно

Путь запроса снаружи:

клиент → облачный LB → ingress-контроллер (L7: хост, путь, TLS)
       → Service orders (ClusterIP) → один из готовых подов

Как работает Service. Контроллер ведёт список адресов готовых подов (EndpointSlice). kube-proxy на каждом узле программирует правила iptables или IPVS: обращение к виртуальному IP заменяется адресом случайного пода. Балансировка — по соединениям, поэтому долгие соединения (gRPC, HTTP/2) распределяются неравномерно — нужна L7 балансировка на клиенте или в service mesh.

Ingress:

spec:
  tls: [{ hosts: [api.example.com], secretName: api-tls }]
  rules:
    - host: api.example.com
      http:
        paths:
          - path: /orders
            pathType: Prefix
            backend: { service: { name: orders, port: { number: 80 } } }

Без установленного ingress-контроллера объект Ingress ничего не делает.

Что хотят услышать

  • Назначение Service и его типы.
  • Ingress как L7-маршрутизация и роль контроллера.
  • Связь с readiness и проблема долгих соединений.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Service — стабильный адрес подов (L4), Ingress — HTTP-маршруты
  • ✗Ingress — L4-балансировка внутри кластера, а Service — HTTP-маршрутизация по домену и пути
  • ✗ClusterIP по умолчанию доступен из интернета, NodePort — только внутри кластера
  • ✗Ingress работает без ingress-контроллера, его обрабатывает сам kube-proxy

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования