#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