Как получить доступ внутрь кластера Kubernetes?

«Как получить доступ внутрь кластера Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для доступа к ресурсам внутри кластера Kubernetes есть несколько основных методов, которые я использую в зависимости от задачи:

1. Временный доступ к поду для отладки:

kubectl exec -it <pod-name> -c <container-name> -- /bin/bash

Я часто добавляю флаг --namespace для работы в конкретном неймспейсе.

2. Проброс портов для локального доступа:

kubectl port-forward pod/<pod-name> 8080:80
# Или через сервис
kubectl port-forward svc/<service-name> 8080:80

Этот метод идеален для быстрой отладки веб-приложений без их публикации наружу.

3. Доступ через сервисы:

  • NodePort — для тестовых сред
  • LoadBalancer — в облачных провайдерах (AWS ELB, GCP Load Balancer)
  • Ingress Controller (Nginx, Traefik) — для HTTP/HTTPS трафика с маршрутизацией

4. Для production-доступа я настраиваю:

  • VPN (WireGuard, OpenVPN) + внутренние LoadBalancer
  • Bastion-хосты в облачных сетях (AWS VPC, GCP VPC)
  • Teleport или kubectl proxy с RBAC и аутентификацией

Пример безопасного доступа через Teleport:

tsh kubectl exec -it pod-name -- /bin/bash

Ключевой принцип: минимальные привилегии (least privilege) через RBAC и аутентификацию сертификатами или OIDC.