Amazon EKS
ユーザーガイド

チュートリアル: Kubernetes ウェブ UI (ダッシュボード) のデプロイ

このチュートリアルでは、Kubernetes ダッシュボードを、CPU およびメモリメトリクスを備えた Amazon EKS クラスターにデプロイする手順について説明します。クラスターを表示および管理するダッシュボードに安全に接続できる Amazon EKS 管理者サービスアカウントの作成にも役立ちます。


            Kubernetes ダッシュボード

前提条件

このチュートリアルでは、以下のことを前提としています。

ステップ 1: Kubernetes メトリクスサーバーをデプロイする

Kubernetes メトリクスサーバーは、クラスター内のリソース使用状況データを集約し、デフォルトでは Amazon EKS クラスターにデプロイされません。Kubernetes ダッシュボードでは、メトリクスサーバーを使用して、時間の経過に伴う CPU やメモリの使用状況など、クラスターのメトリクスを収集します。目的のデプロイ方法に対応する以下のタブを選択します。

curl and jqWeb browser
curl and jq

curljq を使用して GitHub から Amazon EKS クラスターに metrics-server をインストールするには

macOS または Linux システムに curltargzip、および jq JSON パーサーをインストールした場合は、以下のコマンドを使用して最新リリースをダウンロード、抽出、およびインストールできます。それ以外の場合は、次の手順に従って、ウェブブラウザを使用して最新バージョンをダウンロードしてください。

  1. ターミナルウィンドウを開き、最新の metrics-server リリースをダウンロードするディレクトリに移動します。

  2. 以下のコマンドをコピーしてターミナルウィンドウに貼り付け、Enter キーを押してそれらを実行します。これらのコマンドは、最新リリースをダウンロードして解凍し、バージョン 1.8+ のマニフェストをクラスターに適用します。

    DOWNLOAD_URL=$(curl --silent "https://api.github.com/repos/kubernetes-incubator/metrics-server/releases/latest" | jq -r .tarball_url) DOWNLOAD_VERSION=$(grep -o '[^/v]*$' <<< $DOWNLOAD_URL) curl -Ls $DOWNLOAD_URL -o metrics-server-$DOWNLOAD_VERSION.tar.gz mkdir metrics-server-$DOWNLOAD_VERSION tar -xzf metrics-server-$DOWNLOAD_VERSION.tar.gz --directory metrics-server-$DOWNLOAD_VERSION --strip-components 1 kubectl apply -f metrics-server-$DOWNLOAD_VERSION/deploy/1.8+/
  3. 次のコマンドを使用して、metrics-server デプロイメントで必要な数のポッドが実行されていることを確認します。

    kubectl get deployment metrics-server -n kube-system

    出力:

    NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE metrics-server 1 1 1 1 56m
Web browser

ウェブブラウザを使用して GitHub から Amazon EKS クラスターに metrics-server をインストールするには

  1. GitHub から最新バージョンのメトリクスサーバーコードをダウンロードし、抽出します。

    1. GitHub の metrics-server プロジェクトの最新リリースページ (https://github.com/kubernetes-incubator/metrics-server/releases/latest) に移動してから、最新リリースのソースコードアーカイブを選択してダウンロードします。

      注記

      リモートサーバーにダウンロードする場合は、次の curl コマンドを使用して、赤のテキストを最新バージョン番号に置き換えることができます。

      curl -o v0.3.4.tar.gz https://github.com/kubernetes-incubator/metrics-server/archive/v0.3.4.tar.gz
    2. ダウンロードの場所に移動して、ソースコードアーカイブを抽出します。たとえば、.tar.gz アーカイブをダウンロードした場合は、以下のコマンドを使用して抽出します (お使いのリリースバージョンを置き換えます)。

      tar -xzf v0.3.4.tar.gz
  2. metrics-server-0.3.4/deploy/1.8+ ディレクトリ内のすべての YAML マニフェストを適用します(リリースバージョンを置き換えます)。

    kubectl apply -f metrics-server-0.3.4/deploy/1.8+/
  3. 次のコマンドを使用して、metrics-server デプロイメントで必要な数のポッドが実行されていることを確認します。

    kubectl get deployment metrics-server -n kube-system

    出力:

    NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE metrics-server 1 1 1 1 56m

ステップ 2: ダッシュボードのデプロイ

次のコマンドを使用して Kubernetes ダッシュボードをデプロイします。

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/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

ステップ 3: eks-admin サービスアカウントおよびクラスターロールバインディングの作成

デフォルトでは、Kubernetes ダッシュボードユーザーのアクセス許可は制限されています。このセクションでは、管理者レベルのアクセス権限を使用してダッシュボードに安全に接続するために使用できる、eks-admin サービスアカウントおよびクラスターロールバインディングを作成します。詳細については、Kubernetes ドキュメントのサービスアカウントの管理を参照してください。

eks-admin サービスアカウントおよびクラスターロールバインディングを作成するには

重要

この手順で作成された、この例のサービスアカウントにはクラスターの完全な cluster-admin (スーパーユーザー) 権限があります。詳細については、Kubernetes ドキュメントの RBAC 認証の使用を参照してください。

  1. 以下のテキストを使用して、eks-admin-service-account.yaml という名前のファイルを作成します。このマニフェストでは、サービスアカウントと、eks-admin と呼ばれるクラスターロールバインディングを定義します。

    apiVersion: v1 kind: ServiceAccount metadata: name: eks-admin namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: eks-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: eks-admin namespace: kube-system
  2. サービスアカウントおよびクラスターロールバインディングをクラスターに適用する。

    kubectl apply -f eks-admin-service-account.yaml

    出力:

    serviceaccount "eks-admin" created clusterrolebinding.rbac.authorization.k8s.io "eks-admin" created

ステップ 4: ダッシュボードに接続する

これで、Kubernetes ダッシュボードがクラスターにデプロイされました。クラスターを表示および管理するのに使用できる管理者サービスアカウントがあるため、このサービスアカウントを使用してダッシュボードに接続できます。

Kubernetes ダッシュボードに接続するには

  1. eks-admin サービスアカウントの認証トークンを取得します。出力から<authentication_token>の値をコピーします。このトークンを使用してダッシュボードに接続します。

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

    出力:

    Name: eks-admin-token-b5zv4 Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name=eks-admin kubernetes.io/service-account.uid=bcfe66ac-39be-11e8-97e8-026dce96b6e8 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1025 bytes namespace: 11 bytes token: <authentication_token>
  2. kubectl proxy を開始します。

    kubectl proxy
  3. ダッシュボードエンドポイントにアクセスするには、ウェブブラウザで以下のリンクを開きます。http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#!/login

  4. [トークン] を選択して、前のコマンドからの<authentication_token>出力を [トークン] フィールドに貼り付け、[サインイン] を選択します。

    
                        Kubernetes トークン認証

    注記

    CPU とメモリメトリクスがダッシュボードに表示されるまでに数分かかることがあります。

ステップ 5: 次のステップ

Kubernetes クラスターダッシュボードに接続した後、eks-admin サービスアカウントを使用してクラスターを表示および管理できます。ダッシュボードの使用の詳細については、GitHub のプロジェクトドキュメントを参照してください。