Kubernetes Dashboardをデプロイしてみる
Version2がいつの間にか出ていたので、試しに使ってみます。
ちなみにv2.0.0からnamespaceもkube-systemからkubernetes-dashboardへ変わったようです。
yamlのダウンロード
以下のコマンドでyamlをwget
しておきましょう。
(後々中身を少しだけ修正していきます。)
$ wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
Dashboardのapply
ダウンロードしたyamlを使ってapplyしてみます。
$ kubectl apply -f recommended.yaml
実行してみたところ、以下のようなエラーが発生。
The ClusterRoleBinding "kubernetes-dashboard" is invalid: roleRef: Invalid value: rbac.RoleRef{APIGroup:"rbac.authorization.k8s.io", Kind:"ClusterRole", Name:"kubernetes-dashboard"}: cannot change roleRef
どうやらClusterRoleBindingが既に存在してしまっていることが原因のようなので、以下のコマンドを実行して削除してしまいます。
$ kubectl delete clusterrolebinding kubernetes-dashboard
この状態でもう一度applyしたら問題なく成功しました。
ServiceをNodePortに変更する
デフォルトだとClusterIPになってますが、これだとクラスタ内からしかアクセスできず不便なので、以下のようにNodePortに変えます。
@@ -37,9 +37,11 @@ name: kubernetes-dashboard namespace: kubernetes-dashboard spec: + type: NodePort ports: - port: 443 targetPort: 8443 + nodePort: 30843 selector: k8s-app: kubernetes-dashboard
修正が終わったらもう一度applyを実施。
$ kubectl apply -f recommended.yaml
正常に完了したら、以下のコマンドで指定したポートを使っているかを確認しておきましょう。
$ kubectl get svc -n kubernetes-dashboard NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dashboard-metrics-scraper ClusterIP 10.109.234.247 <none> 8000/TCP 2m50s kubernetes-dashboard NodePort 10.108.192.109 <none> 443:30843/TCP 2m50s
Dashboardにアクセスしてみる
Kubernatesクラスタを構成しているNodeの情報を確認。
$ kubectl get nodes -owide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-001.kazono.hogehoge.co.jp Ready master 261d v1.16.0 XXX.YYY.ZZZ.111 <none> CentOS Linux 7 (Core) 3.10.0-XXX docker://1.13.1 k8s-002.kazono.hogehoge.co.jp Ready node 261d v1.16.0 XXX.YYY.ZZZ.222 <none> CentOS Linux 7 (Core) 3.10.0-XXX docker://1.13.1 k8s-003.kazono.hogehoge.co.jp Ready node 261d v1.16.0 XXX.YYY.ZZZ.333 <none> CentOS Linux 7 (Core) 3.10.0-XXX docker://1.13.1
適当にhttps://<kubernetes nodeのFQDN>:30843
とかにアクセスしてみると以下のような画面が見れるはずです。
ログイン用のトークンの準備
アクセスしてみると、kubernetes-dashboardのログインでtokenかkubeconfigが要求されました。
ここではadmin用のtokenを使ってログインしてみます。
以下のようにadmin-userを作るためのyamlを作成。
apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1beta1 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
applyを実施してadmin-userを作成 & トークンを確認します。
$ kubectl apply -f admin-user.yaml serviceaccount/admin-user created clusterrolebinding.rbac.authorization.k8s.io/admin-user configured $ kubectl get secret -n kubernetes-dashboard | grep admin admin-user-token-qfbnj kubernetes.io/service-account-token 3 45s $ kubectl describe secret admin-user-token-qfbnj -n kubernetes-dashboard | grep token: | awk '{ print $2 }' # トークンが表示されるのでそれをコピーしてください。