環境
- Kubernetes 1.24
先にmetrics-serverをインストールして kubectl top node
コマンドが使えるようにしておく必要がある(Dashboardはただのビューアーなので
やりたいこと
インストール
例によって公式README参照
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.0/aio/deploy/alternative.yaml
アクセス
まずはポートフォワードで画面を見る
kubectl port-forward service/kubernetes-dashboard 8000:80 -n kubernetes-dashboard
で、 http://localhost:8000/ へアクセスできれば成功
起動パラメータ編集
デフォルトだとhttps経由じゃないとアクセスできない。が、alternative版はそもそもhttpsをサポートしてないのでこのままだと一生ポートフォワードしないと見れない。
そこでパラメータを以下のように編集する
kubectl -n kubernetes-dashboard edit deploy kubernetes-dashboard
spec: containers: - args: - --namespace=kubernetes-dashboard + - --disable-settings-authorizer + - --enable-insecure-login + - --insecure-bind-address=0.0.0.0 + - --enable-skip-login
でデプロイ再起動
確認
$ kubectl -n kubernetes-dashboard get deploy kubernetes-dashboard -o json| jq '.spec.template.spec.containers[0].args' [ "--namespace=kubernetes-dashboard", "--disable-settings-authorizer", "--enable-insecure-login", "--insecure-bind-address=0.0.0.0", "--enable-skip-login" ]
認証無しでログインしたい場合
とりあえず楽に見たかった。 --enable-skip-login
を追加した場合、以下のように「Skip」ボタンが表示されクリックするとそのままダッシュボードの画面に飛べる
が、
replicationcontrollers is forbidden: User "system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard" cannot list resource "replicationcontrollers" in API group "" in the namespace "default"
のようにエラーになってしまい各メトリクスを見る方法がわからなかった。
トークンで認証する場合
公式ドキュメントを参考
dashboard/creating-sample-user.md at master · kubernetes/dashboard
ダッシュボード用のサービスアカウント作成
kubectl create serviceaccount -n kubernetes-dashboard admin-user
ロール作成
cat <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard EOF
トークン生成
kubectl -n kubernetes-dashboard create token admin-user
表示されたトークンでログインできる
ロードバランサー経由でアクセスしたい
結果から言うと成功していない
ロードバランサータイプに変更する
$ kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec": {"type": "LoadBalancer"}}'
が、「--enable-insecure-login」を有効にしてもログインできない。。。
バグと言うか仕様っぽいな