私はKubespray経由でKubernetesを正常にデプロイしましたが、すべてが正常に動作しているようです。kubectlを介してクラスターにアクセスし、ノード、ポッド、サービス、シークレットなどを一覧表示できます。新しいリソースを適用することも可能で、ダッシュボードエンドポイントはダッシュボードログインページを取得します。
さまざまなサービスアカウント(デフォルト、kubernetes-dashboard、kubernetes-admin、...)のトークンを使用してログインしました...ログインするたびに、たとえば、kubesprayダッシュボード警告禁止ポップアップで説明されているのと同じポップアップが表示されます。
そのため、説明したようにデフォルトのサービスアカウントにclusterrolebindingを適用しました。デフォルトのアカウントトークンでログインすると、
Unknown Server Error (404)
the server could not find the requested resource
Redirecting to previous state in 3 seconds...
後でログインページにリダイレクトするボックス。を介してダッシュボードに接続した場合も同じ動作ですkubectl proxy
。アクセスは、パブリッククラスターIP経由のHTTPSとプロキシ経由のHTTPです。
Kubernetes 1.16.2と最新のKubesprayマスターコミット18d19d9eを使用しています
編集:私はクラスターを破棄して再プロビジョニングし、Kubesprayでプロビジョニングされた新しいインスタンスを取得して、すべてのステップを確定的にし、さらに情報を追加しました...
kubectl -n kube-system logs --follow kubernetes-dashboard-556b9ff8f8-jbmgg --
ログイン試行中に私に与えます
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/csrftoken/login request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 POST /api/v1/login request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/login/status request from 10.233.74.0:57458: {}
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/csrftoken/token request from 10.233.74.0:57458: {}
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 POST /api/v1/token/refresh request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/login/status request from 10.233.74.0:57458: {}
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/csrftoken/token request from 10.233.74.0:57458: {}
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 POST /api/v1/token/refresh request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/overview/default?filterBy=&itemsPerPage=10&name=&page=1&sortBy=d,creationTimestamp request from 10.233.74.0:57458: {}
2019/12/16 12:35:03 Getting config category
2019/12/16 12:35:03 Getting discovery and load balancing category
2019/12/16 12:35:03 Getting lists of all workloads
2019/12/16 12:35:03 the server could not find the requested resource
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Outcoming response to 10.233.74.0:57458 with 404 status code
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 Getting pod metrics
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 No metric client provided. Skipping metrics.
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Incoming HTTP/2.0 GET /api/v1/systembanner request from 10.233.74.0:57458: {}
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Incoming HTTP/2.0 GET /api/v1/login/status request from 10.233.74.0:57458: {}
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Incoming HTTP/2.0 GET /api/v1/rbac/status request from 10.233.74.0:57458: {}
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:03 [2019-12-16T12:35:03Z] Outcoming response to 10.233.74.0:57458 with 200 status code
2019/12/16 12:35:12 Metric client health check failed: the server could not find the requested resource (get services heapster). Retrying in 30 seconds.
2019/12/16 12:35:42 Metric client health check failed: the server could not find the requested resource (get services heapster). Retrying in 30 seconds.
ダッシュボードを動作させるための奇妙な回避策を見つけましたが、これは本番環境では使用できません。おそらく誰かがこれを説明できます:
- サービスアカウントを例にとります
kube-system:default
(注:このアカウントはcluster-admin
現時点では割り当てられていません - トークンを取得してログインします
- ダッシュボードには明らかに「禁止されたポップアップ」が表示されます
- ログインしたまま実行します
kubectl create clusterrolebinding default-admin --clusterrole cluster-admin --serviceaccount=kube-system:default
- ダッシュボードセッションを保持しているブラウザタブを更新します。すべてが正しく表示されます。
したがって、ログアウトして再度ログインすることはできません。常にclusterrolebindingを削除してログインし、その後clusterrolebindingを再度適用する必要があります。
これは、kubesprayでプロビジョニングされたクラスターに強く関連しているようです。kubesprayでこれを再現できる人はいますか?