もっと詳しく

Kubernetesダッシュボードは、クラスターにWebベースのUIを提供します。 ダッシュボードを使用してクラスターにアプリケーションをデプロイしたり、クラスター内の既存のアプリケーションのトラブルシューティングを行ったりすることができます。 ダッシュボードは、クラスター内のリソースへの洞察も提供します。 ダッシュボードはKubernetesによって正式に提供されています。 ダッシュボードを使用して、Kubernetesオブジェクトを作成、変更、更新、削除できます。

この記事では、Kubernetesが提供する公式ダッシュボードをインストールし、それにアクセスするためのサービスアカウントを設定します。 この記事を進める前に、Kubernetesに精通しており、Kubernetesクラスターを使用していることを前提としています。

前提条件

  1. 少なくとも1つのワーカーノードを持つKubernetesクラスター。
    Kubernetesクラスターの作成方法を学びたい場合は、ここをクリックしてください。 このガイドは、AWS Ubuntu18.04EC2インスタンスで1つのマスターノードと2つのワーカーノードを持つKubernetesクラスターを作成するのに役立ちます。
  2. Kubernetesの基本的な理解。

何をしたらいいでしょう?

  1. Kubernetesダッシュボードをデプロイします。
  2. KubernetesダッシュボードにアクセスするためのServiceAccountを設定します。
  3. Kubernetesダッシュボードにアクセスします。

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

Kubernetesダッシュボードをデプロイするために、Githubからオブジェクトファイルをダウンロードできます。 次のコマンドを使用して、オブジェクトファイルをダウンロードします。 このファイルには、名前空間、ServiceAccount、Service、Secret、ConfigMap、Role、ClusterRole、RoleBinding、ClusterRoleBinding、Deployment、Serviceの定義が含まれています。

pwd
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

ファイルの名前を変更し、サービスタイプをNodePortに変更します。 次のスクリーンショットを参照してください。

mv recommended.yaml kubernetes-dashboard-deployment.yml
vim kubernetes-dashboard-deployment.yml

サービスタイプをNodePortに変更します

サービスタイプをNodePortに変更したら、Kubernetesダッシュボードのデプロイを担当するすべてのオブジェクトを作成します。

kubectl apply -f kubernetes-dashboard-deployment.yml

上記のコマンドで作成されたデプロイメント、ポッド、サービスを確認してください。 上記のコマンドは、名前空間、ServiceAccount、Service、Secret、ConfigMap、Role、ClusterRole、RoleBinding、ClusterRoleBinding、Deployment、Serviceも作成します。

kubectl get deployments -n kubernetes-dashboard
kubectl get svc
kubectl get pods
kubectl get pods -n kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard

ダッシュボード用のKubernetesオブジェクトを作成します

上のスクリーンショットでは、タイプが「NodePort」のKubernetesダッシュボードサービスが作成されていることがわかります。 これは、ダッシュボードがNodePort”32304″のノードの任意のIPで使用できることを意味します。 クラスタ上のサービスに別のポートが表示される場合があります。

次のコマンドを使用して、後の手順で必要になるノードのIPを取得します。

kubectl get nodes -o wide

KubernetesダッシュボードにアクセスするためのServiceAccountを設定します

Kubernetesダッシュボードにアクセスするには、トークンが必要です。 トークンを作成するには、最初にServiceAccountを作成する必要があります

新しいファイルを作成し、それに次のコンテンツを追加してServiceAccountを作成します。 オブジェクトファイルを私からダウンロードすることもできます Github レポ。

vim admin-sa.yml
cat admin-sa.yml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: rahul-admin
  namespace: kube-system

オブジェクトファイルを取得したら、次のコマンドを実行してServiceAccountを作成します。

kubectl apply -f admin-sa.yml

サービスアカウントを作成する

次に、ServiceAccount「rahul-admin」をクラスターロール「cluster-admin」に関連付ける必要があります。 次のコンテンツを含む新しいファイルを作成してClusterRoleBindingを作成するか、をクリックします ここ Githubリポジトリからオブジェクトファイルをダウンロードします。

vim admin-rbac.yml
cat admin-rbac.yml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: rahul-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: rahul-admin
    namespace: kube-system

次のコマンドを実行して、「ClusterRoleBinding」を作成します。

kubectl apply -f admin-rbac.yml

ClusterRoleBindingを作成します

これで、「ClusterRole」->「cluster-admin」が「ServiceAccount」->「rahul-admin」にバインドされました。

これで、Kubernetesダッシュボードへのログインに使用するトークンをフェッチする準備が整いました。 トークンを取得するには、次のコマンドを実行します。

SA_NAME="rahul-admin"
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print $1}')

トークンを取得する

上のスクリーンショットでは、Kubernetesダッシュボードへのログインに使用されるトークンを確認できます。 このトークンをコピーして、「NodeIP:NodePort」のダッシュボードURLをヒットします。

ここで、NodeIPはクラスター内の任意のノードのIPであり、NodePortは作成したサービスのポート(この場合は32304、別のポートがある場合があります)です。

URL「NodeIP:NodePort」を押すと、次のような画面が表示されます。 ここで、「トークン」オプションを選択し、上記の手順で取得したトークンを入力して、「サインイン」ボタンをクリックします。

Kubernetesダッシュボードにアクセスする

IP:NodePortのダッシュボードにアクセスします

サインインに成功すると、Kubernetesダッシュボードが次のように表示されます。

ダッシュボード-デフォルトの名前空間

画面の上部で、名前空間を変更してその中のリソースを表示することもできます。 これで、Kubernetesダッシュボードを探索する準備が整いました。

ダッシュボード-kubernetes-dashboard名前空間

結論

この記事では、クラスターにダッシュボードを配置するために必要なすべてのKubernetesオブジェクトをデプロイしました。 単純にアクセスできないため、Kubernetesダッシュボードにアクセスするためのトークンを持つServiceAccountとClusterRoleBindingを作成しました。 ダッシュボードは、クラスターを理解し、クラスター内にあるすべてのオブジェクトを確認するのに役立ちます。

The post KubernetesのWebUIダッシュボード appeared first on Gamingsym Japan.