環境
ESXi6.7上のVM4台
-
vm
- k8s-master cpu:2 mem:4GB HDD:30GB IP:192.168.123.180
- k8s-node1 cpu:2 mem:4GB HDD:30GB IP:192.168.123.181
- k8s-node2 cpu:2 mem:4GB HDD:30GB IP:192.168.123.182
- k8s-node3 cpu:2 mem:4GB HDD:30GB IP:192.168.123.182
-
OS
- Ubuntu20.04LTS
-
Kubernetes
- kubespray 2.13.3 で構築、ノード名のみ変更、ほかデフォルト
- バージョン:1.18.4
はじめに
Kubesprayで構築したKubernetes Dashboardに簡単にアクセスする方法です。
構築する環境によって異なると思いますが自分が勉強のために構築した環境だと公式の方法よりこの方法がアクセスしやすかったです。
ちなみにKubesprayのGetting startedのAccessing Kubernetes Dashboardには別の方法が記載されています。
手順
ダッシュボードアクセス用のサービスアカウントの作成
サービスアカウント:admin-userとクラスタロール:cluster-adminを作成し、バインディングします。
今回はデフォルトネームスペースに作成しています。
dashbord-adminuser.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: default
---
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: default
以下のコマンドで作成します
kubectl apply -f dashbord-adminuser.yaml
ダッシュボードのサービスのTypeをClusterIPからNodePortに変更
kubectl patch service kubernetes-dashboard -n kube-system -p '{"spec":{"type":"NodePort"}}'
ブラウザでアクセス
割り当てられたポートを確認します。
root@k8s-master:~# kubectl get svc kubernetes-dashboard -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.233.40.27 <none> 443:31907/TCP 41h
root@k8s-master:~#
この場合、ポートは31907です。
トークンを取得します。
root@k8s-master:~# kubectl -n default describe secret $(kubectl -n default get secret | grep admin-user | awk '{print $1}')
Name: admin-user-token-ckplg
Namespace: default
Labels: <none>
Annotations: kubernetes.io/service-account.name: admin-user
kubernetes.io/service-account.uid: b7cec2e8-bd6f-4737-9775-d274e8acef08
Type: kubernetes.io/service-account-token
Data
====
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlZFcF9xLTdGektrS05wS040c29pak1GWVh2TUJ6QkJzTnpQeUN2blVGMU0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImFkbWluLXVzZXItdG9rZW4tY2twbGciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiYWRtaW4tdXNlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImI3Y2VjMmU4LWJkNmYtNDczNy05Nzc1LWQyNzRlOGFjZWYwOCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OmFkbWluLXVzZXIifQ.GBN2dwFSKD44qu6cV6w4GwoeEJ9UHpOvVq8wiG7tzptjbaexURJEFuEe-VF15h1VeLW7W5MrFrKh41Cf5pZCHZW6DbDUFZQRDYebKSEnDgr5fD_hEHH047Yg0poMB2WCntu8ImM0eIFArFARyVLa0yCN9Pfmht-BG8dqBw84ctFdLN79vIRHKQBId74VnZMWRC60siEmWGV0u2aHP9HUx3BGmNDfGmafzXwjDtE6bIZpWVJzE4L4ePKalx8WDz6UzZONpzDJBILQ2A6Kcf8KBM7aI_ijkvfTD-m8zauLDaNPZ6YfpYcew9WaJfGpmi3SQipBeG7upNeBq4RZASP7fw
ca.crt: 1025 bytes
namespace: 7 bytes
root@k8s-master:~#
以下のURLにアクセスし、トークンを入力すればアクセスできるようになります。
https://<WorkerノードのIP>:<割り当てられたポート>/
まとめ
とりあえずアクセスしたいときにはkubectl patchでNodePortに変更してノードのIPからアクセスするのが楽かも。