はじめに
Kubernetes Dashboard は、Webベースの Kubernetes User Interface です。Dashboard を使用して、マニフェストファイルを Kubernetes にDeployや、クラスタリソースの管理を行えます。Oracle Cloud で提供されている Kubernetes マネージドサービス OKE を使って、Kubernetes Dashboard の構成方法を確認していきましょう。OKE を使っていますが、他の Kubernetes クラスタでも同様の操作で大丈夫だと思います。
次の Document を参考にしています。
https://kubernetes.io/ja/docs/tasks/access-application-cluster/web-ui-dashboard/
https://github.com/kubernetes/dashboard
Dashboard Install
Namespace 確認
[opc@bastion ~]$ kubectl get ns -o wide
NAME STATUS AGE
default Active 11h
kube-node-lease Active 11h
kube-public Active 11h
kube-system Active 11h
Kubernetes Dashboard を Deploy します。namespace : kubernetes-dashboard が作成され、Service ClusterIP など必要なものが一式構成されます。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
実行例
[opc@bastion ~]$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
Namespace の確認です。kubernetes-dashboard が作成されています。
[opc@bastion ~]$ kubectl get ns -o wide
NAME STATUS AGE
default Active 11h
kube-node-lease Active 11h
kube-public Active 11h
kube-system Active 11h
kubernetes-dashboard Active 40s
Kubernetes Dashboard に必要なユーザー(ServiceAccount) を作成します。今回の手順では、cluster-admin 権限を持ったユーザーを作成します。
※ かなり高い権限を持たせています。商用環境で適用するにはセキュリティリスクとなる可能性があります
cat << 'EOF' > ~/workdir/kubernetes-dashboard-admin-user.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
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
apply
kubectl apply -f ~/workdir/kubernetes-dashboard-admin-user.yaml
Kubernetes Dashboard にアクセスするために、Token を取得します。
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
実行例
一番下の token をコピーしておきましょう
$ kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
Name: admin-user-token-x69v9
Namespace: kubernetes-dashboard
Labels: <none>
Annotations: kubernetes.io/service-account.name: admin-user
kubernetes.io/service-account.uid: 85ae26d6-f7d8-42da-99f3-b5f1ce31a38c
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1289 bytes
namespace: 20 bytes
token: <ここにTokenが表示される>
自分の操作しているコンピューターに Install されている kubectl から、次のコマンドを実行します。これで、localhost のアクセスが Proxy されて、外部の Kubernetes へアクセスされます。
kubectl proxy
次のURLを実行すると、ログイン画面が開かれます。
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
コピーしたトークンを貼り付けて、サインインします。
Metrics Server Install
Kubernetes Dashboard にアクセスすることが出来ました。Deployment や その配下の Pod を Web ベースに確認が出来ます。ただ現段階では、Pod の CPU使用率やメモリーは表示されていません。これを表示するためには、Kubernetes Metrics Server を Install する必要があります。
Metrics Server を Install します。ネームスペース kube-system 配下に作成されます
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
実行例
$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
serviceaccount/metrics-server created
deployment.apps/metrics-server created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
Metrics Server を導入した結果、リソース使用率が取得されて、表示されるようになりました
参考URL