Короткий ответ
kubeconfig — это файл с данными для подключения к одному или нескольким кластерам (адрес API сервера, учётные данные, сертификаты), а контекст внутри него — именованная комбинация "кластер + пользователь + namespace по умолчанию"; переключение контекста определяет, к какому кластеру и под каким пользователем будут выполняться команды kubectl.
Как это работает подробнее
по умолчанию kubectl читает файл ~/.kube/config (или путь из переменной KUBECONFIG), который может содержать несколько записей clusters, users и contexts; активный контекст (current-context) определяет, какая комбинация используется при выполнении команд без явного указания --context.
Пример кода
Команды и вывод
kubectl config get-contexts
kubectl config current-context
kubectl config use-context prod-clusterЧто использовать на практике
- Практика. при работе с несколькими кластерами (например, dev и prod) критично перед выполнением потенциально опасной команды проверять текущий контекст (
kubectl config current-context), чтобы случайно не применить изменения не в том окружении. Для автоматизации (CI/CD) обычно используют отдельный ServiceAccount с ограниченными правами и отдельный kubeconfig, а не личные учётные данные инженера.
Подводные камни
- Риски. выполнить деструктивную команду (
kubectl delete,kubectl applyс неверным манифестом), не проверив активный контекст, и затронуть продакшен вместо тестового кластера; хранить kubeconfig с правами полного администратора в общедоступном месте или в репозитории с кодом; не использоватьkubectl config get-contextsдля ревизии накопившихся за долгое время контекстов.