環境
ESXi6.7上のVM3台
-
vm
- k8s-master cpu:2 mem:4GB HDD:30GB IP:192.168.123.170
- k8s-node1 cpu:2 mem:4GB HDD:30GB IP:192.168.123.171
- k8s-node2 cpu:2 mem:4GB HDD:30GB IP:192.168.123.172
-
OS
- CentOS7.8.2003
-
Kubernetes
- kubeadmで構築
- バージョン:1.18.6
はじめに
kubectlコマンド操作だけではちょっと寂しいと思い、「Kubernetes Dashboard v2.0.0をデプロイする」を参考にWeb UIを入れました。
手順
-
公式「Web UI (Dashboard)」の手順でインストールするとClusterIPになるため、アクセスしにくいためNodePortに変更します。
- ダッシュボードのマニフェストをDLします
yum install wget -y wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml
- 以下のように修正します。
--- kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: + type: NodePort ports: - port: 443 targetPort: 8443 + nodePort: 30843 selector: k8s-app: kubernetes-dashboard ---
-
修正したマニフェストファイルを使用してダッシュボードをデプロイします。
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.110.89.193 <none> 8000/TCP 54s kubernetes-dashboard NodePort 10.107.229.73 <none> 443:30843/TCP 54s #
ノードのIPを確認してダッシュボードにアクセスします。
# kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-master Ready master 18h v1.18.6 192.168.123.170 <none> CentOS Linux 7 (Core) 3.10.0-1127.13.1.el7.x86_64 docker://19.3.12 k8s-node1 Ready <none> 17h v1.18.6 192.168.123.171 <none> CentOS Linux 7 (Core) 3.10.0-1127.13.1.el7.x86_64 docker://19.3.12 k8s-node2 Ready <none> 17h v1.18.6 192.168.123.172 <none> CentOS Linux 7 (Core) 3.10.0-1127.13.1.el7.x86_64 docker://19.3.12 #
https://<k8s-node1 or k8s-node2のINTERNAL-IP>:30843 でブラウザからアクセスします。
Chromeでは以下のように表示されますが、ここは「詳細設定」をクリックしてダッシュボードにアクセスします。 -
ダッシュボードにログインするためのアカウントの作成
ダッシュボードの公式サイトにある「Creating sample user」を参考にして、ダッシュボードのログインに必要なサービスアカウント、ロールを作成します。- 以下のマニフェストファイル(dashbord-adminuser.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
- 以下のコマンドを実行し、admin-user ServiceAccountとadmin-user ClusterRoleBindingを作成します
kubectl apply -f dashbord-adminuser.yaml
-
ダッシュボードにログインする
以下のコマンドを実行し、先ほど作成した admin-userのトークンを取得します。kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
出力されたtokenをダッシュボードのログイン画面に入力します。
ダッシュボードにログインが成功すると以下のような画面が表示されます。