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
- ダッシュボード セッションを保持しているブラウザ タブを更新すると、すべてが正しく表示されます。
したがって、ログアウトして再度ログインすることはできません。常にクラスターロールバインディングを削除し、ログインしてから再度クラスターロールバインディングを適用する必要があります。
これは kubespray でプロビジョニングされたクラスターに強く関連しているようです。kubespray でこれを再現できる人はいますか?