Kubernetes Dashboard Install

# はじめに

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



コピーしたトークンを貼り付けて、サインインします。

![1595080968848.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/7b09098e-4613-7f65-95af-27a99551b3fd.png)





# Metrics Server Install

Kubernetes Dashboard にアクセスすることが出来ました。Deployment や その配下の Pod を Web ベースに確認が出来ます。ただ現段階では、Pod の CPU使用率やメモリーは表示されていません。これを表示するためには、Kubernetes Metrics Server を Install する必要があります。

![1595078810509.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/52f8efbe-48db-6a3c-077d-8facf3489f36.png)



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 を導入した結果、リソース使用率が取得されて、表示されるようになりました

![1595079287349.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/5d5cd9e8-2b04-8a59-e134-a6947f915dd5.png)



# 参考URL

https://kubernetes.io/ja/docs/tasks/access-application-cluster/web-ui-dashboard/