При отправке запроса к API выдает NPE на шаге api.listPodForAllNamespaces. Не могли бы вы посоветовать, какая здесь должна быть правильная конфигурация?
Вам нужно отредактировать свой вопрос и добавить полную трассировку стека исключения.
Код развернут в кластере kubernetes, и я отправляю запрос в API через терминал, используя curl
tgdavies, я обновил начальный пост с полной трассировкой стека
Можете ли вы предоставить сведения об учетной записи службы, прикрепленной к этому развертыванию, если нет, вам нужно будет создать учетную запись службы с соответствующими разрешениями и подключиться к развертыванию.
Как говорит ошибка:
pods is forbidden: User \"system:serviceaccount:sds-test:default\" cannot list resource \"pods\"
Это означает, что учетная запись службы default
в пространстве имен sds-test
не имеет соответствующих разрешений для перечисления модулей. Вероятно, вы не указываете учетную запись службы при развертывании. K8s автоматически назначит вам сервисный аккаунт default
.
Вам нужно создать ServiceAccount
. Предоставьте ему необходимый доступ, используя Role
и RoleBinding
. Затем обновите свой Deployment
/Pod
, чтобы использовать только что созданный ServiceAccount
. Подробности о которых можно узнать здесь
Спасибо за ответ testfile. Можно ли использовать существующую учетную запись службы, я вижу это при запуске «kubectl get serviceaccounts»: ИМЯ СЕКРЕТЫ ВОЗРАСТ по умолчанию 0 66
@vehk возможно, хотя и не рекомендуется. В сервисной учетной записи default
нет ничего особенного, поэтому вы можете привязывать к ней роли, как и к любой другой сервисной учетной записи. Однако рекомендуется создать специальную учетную запись службы для вашего приложения, чтобы вы могли следовать принципу наименьших привилегий. Если вы добавите роль в учетную запись службы по умолчанию, все, что работает в этом пространстве имен, получит эти разрешения.
Где вы запускаете свой код? Я использую клиент go, и я получил NPE, когда неправильно настроил переменные среды.