他の場所の説明を見つけることができないHelmのエラーがいくつか発生しています。 2つのエラーは次のとおりです。
Error: no available release name found
Error: the server does not allow access to the requested resource (get configmaps)
2つのエラーの詳細は、以下のコードブロックにあります。
Ubuntu 16.04にKubernetesクラスターをインストールしました。マスター(K8SMST01)と2つのノード(K8SN01およびK8SN02)があります。
これは1.6以上のWeaveネットワークを使用してkubeadmを使用して作成されました。
展開、サービス、ポッドなどに関しては、すべてが完璧に動作しているようです。DNSは正常に動作しているようです。つまり、ポッドはDNS名(myservicename.default)を使用してサービスにアクセスできます。
「helm create」および「helm search」の使用は機能しますが、耕うん機の展開との相互作用は機能しないようです。 Tillerは、Helmインストールドキュメントに従ってインストールおよび実行されます。
root@K8SMST01:/home/blah/charts# helm version
Client: &version.Version{SemVer:"v2.3.0",
GitCommit:"d83c245fc324117885ed83afc90ac74afed271b4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.3.0", GitCommit:"d83c245fc324117885ed83afc90ac74afed271b4", GitTreeState:"clean"}
root@K8SMST01:/home/blah/charts# helm install ./mychart
Error: no available release name found
root@K8SMST01:/home/blah/charts# helm ls
Error: the server does not allow access to the requested resource (get configmaps)
実行中のポッドは次のとおりです。
root@K8SMST01:/home/blah/charts# kubectl get pods -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE
etcd-k8smst01 1/1 Running 4 1d 10.139.75.19 k8smst01
kube-apiserver-k8smst01 1/1 Running 3 19h 10.139.75.19 k8smst01
kube-controller-manager-k8smst01 1/1 Running 2 1d 10.139.75.19 k8smst01
kube-dns-3913472980-dm661 3/3 Running 6 1d 10.32.0.2 k8smst01
kube-proxy-56nzd 1/1 Running 2 1d 10.139.75.19 k8smst01
kube-proxy-7hflb 1/1 Running 1 1d 10.139.75.20 k8sn01
kube-proxy-nbc4c 1/1 Running 1 1d 10.139.75.21 k8sn02
kube-scheduler-k8smst01 1/1 Running 3 1d 10.139.75.19 k8smst01
tiller-deploy-1172528075-x3d82 1/1 Running 0 22m 10.44.0.3 k8sn01
weave-net-45335 2/2 Running 2 1d 10.139.75.21 k8sn02
weave-net-7j45p 2/2 Running 2 1d 10.139.75.20 k8sn01
weave-net-h279l 2/2 Running 5 1d 10.139.75.19 k8smst01
RBACの問題だと思います。ヘルムは1.6.1のRBACの準備ができていないようです。
HelmのGithubでこの問題が未解決です。
https://github.com/kubernetes/helm/issues/2224
「kubeadm v1.6.1を使用してクラスターを初めてインストールする場合、初期化はデフォルトでRBAC制御アクセスを設定します。これは、Tillerがインストール、インストール済みコンポーネントのスキャンなどを行うために必要な権限を台無しにします。 、しかしヘルムリスト、ヘルムインストールなどはすべて機能しません。許可の欠落などが原因です。」
一時的な回避策が提案されています:
「コマンドkubectl create clusterrolebinding permissive-binding --clusterrole = cluster-admin --user = admin --user = kubelet --group = system:serviceaccounts;を使用してRBACを「無効」にします。」
しかし、私はその妥当性について話すことはできません。幸いなことに、これは既知の問題であり、修正するための作業が行われています。お役に立てれば。
GitHubの問題からkujengaによって提供されたソリューション 他の変更なしで機能しました:
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
CentOS 7でのkubeadmセットアップで同じ問題が発生しました。
Helmは、「helm init」時にサービスアカウントを作成せず、デフォルトのアカウントにはconfigmapからの読み取り権限がないため、目的のデプロイメント名を確認するためのチェックを実行できません。用途は独特です。
これは私にそれを過ぎてしまった:
kubectl create clusterrolebinding add-on-cluster-admin \
--clusterrole=cluster-admin \
--serviceaccount=kube-system:default
しかし、それはデフォルトのアカウントに大量のパワーを与えています。私はこれをやったので、仕事に取りかかることができました。 Helmは、独自のサービスアカウントの作成を「helm init」コードに追加する必要があります。
kubernetesのすべてのアドオンは「デフォルト」サービスアカウントを使用します。したがって、Helmは「デフォルト」サービスアカウントでも実行されます。許可を与える必要があります。それにロールバインディングを割り当てます。
読み取り専用権限の場合:
kubectl create rolebinding default-view --clusterrole=view \ --serviceaccount=kube-system:default --namespace=kube-system
管理者アクセスの場合:例:パッケージをインストールします。
kubectl create clusterrolebinding add-on-cluster-admin \ --clusterrole=cluster-admin \ --serviceaccount=kube-system:default
以下のコマンドを使用して、別のネームスペースにティラーサーバーをインストールすることもできます。
helm init --tiller-namespace test-namespace
このソリューションは私のために働いています: https://github.com/helm/helm/issues/3055#issuecomment-397296485
$ kubectl create serviceaccount --namespace kube-system tiller
$ kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
$ helm init --service-account tiller --upgrade
$ helm update repo
$ helm install stable/redis --version 3.3.5
しかし、その後、何かが変わりました。 kubectlコマンドに-insecure-skip-tls-verify = trueフラグを追加する必要があります!私はgcloud container clusterと対話していることを知っているので、それを修正する方法がわかりません。
https://github.com/kubernetes/helm/issues/2224#issuecomment-356344286 ごとに、次のコマンドでもエラーが解決されました。
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
https://github.com/kubernetes/helm/issues/3055
helm init --service-account default
これは、RBAC(serviceaccount)コマンドが機能しなかったときに機能しました。
これはRBACの問題です。 cluster-adminロールを持つサービスアカウントが必要です。また、HELMの初期化中にこのサービスアカウントを渡す必要があります。
たとえば、tillerという名前のサービスアカウントを作成した場合、hemlコマンドは次のようになります。
helm init --service-account=tiller
この問題を解決するためにこのブログをフォローしました。 https://scriptcrunch.com/helm-error-no-available-release/