kubectl получает узлы из модуля (сетевая политика)
Я пытаюсь запустить Python «kubectl для получения узлов» внутри POD. Как мне настроить сетевую политику для этого модуля?
Я попытался подключить свое пространство имен к пространству имен kube-system, но это не сработало.
Спасибо
1 ответ
Согласно доступу к API из модуля :
Рекомендуемый способ найти apiserver в поде — использовать
kubernetes.default.svc
DNS-имя, которое разрешается в IP-адрес службы, который, в свою очередь, будет перенаправлен на apiserver.Рекомендуемый способ аутентификации на apiserver — использование учетных данных сервисной учетной записи . С помощью kube-system модуль связан с учетной записью службы, а учетные данные (токен) для этой учетной записи службы помещаются в дерево файловой системы каждого контейнера в этом модуле по адресу
/var/run/secrets/kubernetes.io/serviceaccount/token
.
Все, что вам нужно, — это учетная запись службы с достаточными привилегиями и использование DNS-имени сервера API, как указано выше. Пример:
# Export the token value
export TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
# Use kubectl to talk internally with the API server
kubectl --insecure-skip-tls-verify=true \
--server="https://kubernetes.default.svc:443" \
--token="${TOKEN}" \
get nodes
Сетевая политика может быть ограничительной и запрещать этот тип вызова, однако по умолчанию все вышеперечисленное должно работать.