12
17

More than 3 years have passed since last update.

Kubernetesにダッシュボードをデプロイする

Posted at

環境

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を入れました。

手順

  1. 公式「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
    
      ---
    
  2. 修正したマニフェストファイルを使用してダッシュボードをデプロイします。

    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では以下のように表示されますが、ここは「詳細設定」をクリックしてダッシュボードにアクセスします。

    1.png

    ダッシュボードにアクセスすると以下のログイン画面が表示されます。
    2.png

  3. ダッシュボードにログインするためのアカウントの作成
    ダッシュボードの公式サイトにある「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
    
  4. ダッシュボードにログインする
    以下のコマンドを実行し、先ほど作成した admin-userのトークンを取得します。

    kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
    

    出力されたtokenをダッシュボードのログイン画面に入力します。
    ダッシュボードにログインが成功すると以下のような画面が表示されます。

    3.png

参考URL

Kubernetes Dashboard v2.0.0をデプロイする
Web UI (Dashboard)

12
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
17