Установка Tiller в кластере AWS eks не работает (проблема с разрешениями)

#amazon-web-services #kubernetes #kubernetes-helm #amazon-ebs

#amazon-web-services #kubernetes #kubernetes-helm #amazon-ebs

Вопрос:

Я устанавливаю tiller на кластер EKS с клиентского компьютера. Цель состоит в том, чтобы установить приложение JupyterHub через helm в кластер EKS kubernetes.

Я установил его на один кластер просто отлично, выполнив следующие действия (наш тестовый кластер).

Теперь в нашем кластере prod это не работает. Подробности ниже

подключите kubectl к кластеру

 aws eks update-kubeconfig --name my_cluster
 

создайте учетную запись службы

 kubectl --namespace kube-system create serviceaccount tiller
serviceaccount/tiller created
 

создайте привязку ролей кластера

 kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
clusterrolebinding.rbac.authorization.k8s.io/tiller created
 

инициализация tiller

 helm init --service-account tiller --wait
# ... wait a bit ...
helm version
Client: amp;version.Version{SemVer:"v2.16.7", GitCommit:"5f2584fd3d35552c4af26036f0c464191287986b", GitTreeState:"clean"}
Server: amp;version.Version{SemVer:"v2.16.7", GitCommit:"5f2584fd3d35552c4af26036f0c464191287986b", GitTreeState:"clean"}
 

установите приложение (JupyterHub)

 helm upgrade --install jhub jupyterhub/jupyterhub --namespace jhub --version=2.0.1605648253 --values jhub.config.yaml
UPGRADE FAILED
Error: configmaps is forbidden: User "system:serviceaccount:kube-system:tiller" cannot list resource "configmaps" in API group "" in the namespace "kube-system"
Error: UPGRADE FAILED: configmaps is forbidden: User "system:serviceaccount:kube-system:tiller" cannot list resource "configmaps" in API group "" in the namespace "kube-system"

 

проверьте журналы

 kubectl get event --namespace kube-system
LAST SEEN   TYPE      REASON        OBJECT                               MESSAGE
10s         Warning   FailedMount   pod/tiller-deploy-59bfffd84b-l7lvq   MountVolume.SetUp failed for volume "tiller-token-8bcns" : secret "tiller-token-XXXXX" not found
 

На первый взгляд может показаться, что это проблема с приложением (JupyterHub), но я думаю, что нет, потому что мы сделали еще один дополнительный шаг, который заключается в запуске команды, которая защищает наш кластер, позволяя tiller прослушивать команды только с локального хоста, и это также не работает должным образом.ожидается, и это вообще не зависит от приложения jupyterhub, поэтому я полагаю, что это проблема с kubernetes, helm или tiller

 kubectl patch deployment tiller-deploy --namespace=kube-system --type=json --patch='[{"op": "add", "path": "/spec/template/spec/containers/0/command", "value": ["/tiller", "--listen=localhost:44134"]}]'
Tiller does not have permission --> this error message is not the exact wording, I neglected to copy the exact message, but IIRC it was short and simple and said tiller does not have permission (I'm currently in the process of deleting and re-creating the cluster. I will update this when I have the actual message)
 

Комментарии:

1. Если это новый кластер, есть ли у вас конкретная причина, по которой вам нужна старая версия Helm? Helm 3 не использует Tiller (и отсутствие необходимости управлять им является огромным улучшением).

2. @DavidMaze нет конкретной причины, кроме того, что потребуется приложить некоторые усилия для обновления версии helm в стандартном образе ОС, который мы используем для управления кластером через kubectl, но это может стоить того по указанной вами причине (не требуется tiller)

Ответ №1:

Итак, полное уничтожение кластера и его повторное создание, похоже, решили проблему. Понятия не имею, в чем причина, но это сообщение о событии kubernetes (ниже) могло быть подсказкой. По моему опыту, EBS может быть заведомо ненадежным, вероятно, из-за того, что это аппаратный интерфейс

Сообщение о событии kubernetes:

 kubectl get event --namespace kube-system
LAST SEEN   TYPE      REASON        OBJECT                               MESSAGE
10s         Warning   FailedMount   pod/tiller-deploy-59bfffd84b-l7lvq   MountVolume.SetUp failed for volume "tiller-token-8bcns" : secret "tiller-token-XXXXX" not found