Amazon EKS
ユーザーガイド

eksctl の開始方法

この入門ガイドは、eksctl (Amazon EKS での Kubernetes クラスターの作成および管理用のシンプルなコマンドラインユーティリティ) を使用して、Amazon EKS の開始に必要なすべてのリソースをインストールするのに役立ちます。このチュートリアルの終わりには、ワーカーノードが関連付けられた Amazon EKS クラスターが実行中になり、kubectl コマンドラインユーティリティは新しいクラスターを使用するように設定されます。

前提条件

このセクションは、Amazon EKS クラスターの作成と管理に必要なバイナリをインストールして設定するのに役立ちます。

最新の AWS CLI をインストールする

Amazon EKS クラスターで kubectl を使用するには、クラスター API サーバー通信に必要なクライアントセキュリティトークンを作成できるバイナリをインストールする必要があります。AWS CLI のバージョン 1.16.232 以上で使用可能な aws eks get-token コマンドは、クライアントセキュリティトークンの作成をサポートしています。AWS CLI をインストールまたはアップグレードするには、AWS Command Line Interface ユーザーガイド の「AWS コマンドラインインターフェイスのインストール」を参照してください。

pip およびサポートされるバージョンの Python をすでにインストールしている場合は、以下のコマンドを使用して AWS CLI をインストールできます。

pip install awscli --upgrade --user

注記

システムの Python のバージョンは 2.7.9 以上であることが必要です。そうでない場合は、AWS CLI で Amazon EKS を呼び出すと hostname doesn't match エラーが発生します。詳細については、Python Requests FAQ の「What are "hostname doesn't match" errors?」 を参照してください。

プラットフォーム用に AWS CLI をインストールまたはアップグレードする他の方法の詳細については、AWS Command Line Interface ユーザーガイド の以下のトピックを参照してください。

システムにバージョン 1.16.232 以上の AWS CLI をインストールできない場合は、AWS IAM Authenticator for Kubernetes がシステムにインストールされていることを確認する必要があります。詳細については、「aws-iam-authenticator のインストール」を参照してください。

AWS CLI 認証情報を設定する

eksctl と AWS CLI の両方には、使用している環境で AWS 認証情報が設定されている必要があります。一般的な使用の場合、aws configure コマンドが、AWS CLI をインストールして設定するための最も簡単な方法です。

$ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [None]: json

このコマンドを入力すると、AWS CLI によって、アクセスキー、シークレットアクセスキー、AWS リージョン、出力形式の 4 つの情報の入力が求められます。これらの情報は、default という名前のプロファイル (設定の集合) に保存されます。別のプロファイルを指定しない限り、このプロファイルが使用されます。

詳細については、AWS Command Line Interface ユーザーガイド の「AWS CLI の設定」を参照してください。

eksctl をインストールする

このセクションは、eksctl コマンドラインユーティリティをインストールするのに役立ちます。詳細については、https://eksctl.io/ を参照してください。

以下からクライアントの設定を最もよく表しているタブを選択します。

macOSLinuxWindows
macOS

Homebrew を使用して macOS で eksctl をインストールまたはアップグレードするには

Amazon EKS と macOS の使用を開始する最も簡単な方法は、Homebrew を使用して eksctl をインストールすることです。eksctl Homebrew レシピは、eksctl と Amazon EKS に必要なその他の依存関係 (kubectlaws-iam-authenticator など) をインストールします。

  1. Mac OS で HomeOS をまだインストールしていない場合は、以下のコマンドでインストールします。

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. Weaveworks Homebrew tap をインストールします。

    brew tap weaveworks/tap
  3. eksctl をインストールまたはアップグレードします。

    • 以下のコマンドを使用して、eksctl をインストールします。

      brew install weaveworks/tap/eksctl
    • eksctl がすでにインストールされている場合は、以下のコマンドでアップグレードします。

      brew upgrade eksctl && brew link --overwrite eksctl
  4. 以下のコマンドを使用して、インストールが成功したことをテストします。

    eksctl version

    注記

    GitTag のバージョンは 0.5.1 以上であることが必要です。そうでない場合は、ターミナルの出力でインストールまたはアップグレードのエラーを確認します。

Linux

curl を使用して Linux で eksctl をインストールまたはアップグレードするには

  1. 以下のコマンドを使用して、eksctl の最新リリースをダウンロードして解凍します。

    curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
  2. 抽出したバイナリを /usr/local/bin に移動します。

    sudo mv /tmp/eksctl /usr/local/bin
  3. 以下のコマンドを使用して、インストールが成功したことをテストします。

    eksctl version

    注記

    GitTag のバージョンは 0.5.1 以上であることが必要です。そうでない場合は、ターミナルの出力でインストールまたはアップグレードのエラーを確認します。

Windows

Chocolatey を使用して Windows で eksctl をインストールまたはアップグレードするには

  1. Windows システムに Chocolatey がまだインストールされていない場合は、「Chocolatey のインストール」を参照してください。

  2. eksctl および aws-iam-authenticator をインストールまたはアップグレードします。

    • 次のコマンドでバイナリをインストールします。

      chocolatey install -y eksctl aws-iam-authenticator
    • すでにインストールされている場合は、以下のコマンドでアップグレードします。

      chocolatey upgrade -y eksctl aws-iam-authenticator
  3. 以下のコマンドを使用して、インストールが成功したことをテストします。

    eksctl version

    注記

    GitTag のバージョンは 0.5.1 以上であることが必要です。そうでない場合は、ターミナルの出力でインストールまたはアップグレードのエラーを確認します。

Amazon EKS の kubectl をインストールして設定する

Kubernetes では、クラスター API サーバーとの通信に kubectl というコマンドラインユーティリティを使用します。

注記

前述の Homebrew の手順に従って macOS で eksctl をインストールした場合、kubectlaws-iam-authenticator はすでにシステムにインストールされています。「Amazon EKS クラスターとワーカーノードを作成する」に進めます。

kubectl を Amazon EKS にインストールするには

  • オペレーティングシステムに kubectl をダウンロードしてインストールするには、複数のオプションがあります。

    • kubectl バイナリは、多数のオペレーティングシステムのパッケージで利用できます。このオプションは多くの場合、手動のダウンロードおよびインストールプロセスよりはるかに簡単です。Kubernetes のドキュメントにある個別のオペレーティングシステムやパッケージマネージャー用の手順に従えばインストールできます。

    • Amazon EKS では、同じバージョンのアップストリーム kubectl バイナリと同一の使用できる kubectl バイナリ が発行されています。Amazon EKS が発行したお使いのオペレーティングシステム用のバイナリをインストールするには、「kubectl のインストール」を参照してください。

Amazon EKS クラスターとワーカーノードを作成する

この時点で、eksctl コマンドラインユーティリティを使用して Amazon EKS クラスターとワーカーノードグループを作成できます。

eksctl を使用してクラスターとワーカーノードを作成するには

この手順では、eksctl をインストール済みで、お使いの eksctl バージョンが 0.5.1 以上であることを前提としています。 お使いのバージョンは、以下のコマンドを使用して確認できます。

eksctl version

eksctl のインストールまたはアップグレードの詳細については、eksctl のインストールまたはアップグレード を参照してください。

  1. 以下のコマンドを使用して Amazon EKS クラスターとワーカーノードを作成します。赤いテキストは独自の値に置き換えてください。

    重要

    Amazon EKS will deprecate Kubernetes version 1.11 on 2019 年 11 月 4 日. On this day, you will no longer be able to create new 1.11 clusters, and all Amazon EKS clusters running Kubernetes version 1.11 will be updated to the latest available platform version of Kubernetes version 1.12. For more information, see Amazon EKS バージョンの廃止.

    Kubernetes バージョン 1.10 は Amazon EKS でサポートされなくなりました。新しい 1.10 クラスターを作成することはできなくなりました。Kubernetes バージョン 1.10 を実行しているすべての既存の Amazon EKS クラスターは、Kubernetes バージョン 1.11 を利用可能な最新のプラットフォームバージョンに最終的に自動的に更新されます。詳細については、「Amazon EKS バージョンの廃止」を参照してください。

    サービスの中断を防ぐため、1.10 クラスターはバージョン 1.11 以降に更新してください。詳細については、「Amazon EKS クラスターの Kubernetes バージョンの更新」を参照してください。

    eksctl create cluster \ --name prod \ --version 1.14 \ --nodegroup-name standard-workers \ --node-type t3.medium \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4 \ --node-ami auto

    注記

    eksctl create cluster の使用可能なオプションの詳細については、GitHub の README プロジェクトを参照するか、以下のコマンドでヘルプページを参照してください。

    eksctl create cluster --help

    出力:

    [ℹ] using region us-west-2 [ℹ] setting availability zones to [us-west-2b us-west-2c us-west-2d] [ℹ] subnets for us-west-2b - public:192.168.0.0/19 private:192.168.96.0/19 [ℹ] subnets for us-west-2c - public:192.168.32.0/19 private:192.168.128.0/19 [ℹ] subnets for us-west-2d - public:192.168.64.0/19 private:192.168.160.0/19 [ℹ] nodegroup "standard-workers" will use "ami-0923e4b35a30a5f53" [AmazonLinux2/1.12] [ℹ] creating EKS cluster "prod" in "us-west-2" region [ℹ] will create 2 separate CloudFormation stacks for cluster itself and the initial nodegroup [ℹ] if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=us-west-2 --name=prod' [ℹ] building cluster stack "eksctl-prod-cluster" [ℹ] creating nodegroup stack "eksctl-prod-nodegroup-standard-workers" [✔] all EKS cluster resource for "prod" had been created [✔] saved kubeconfig as "/Users/ericn/.kube/config" [ℹ] adding role "arn:aws:iam::111122223333:role/eksctl-prod-nodegroup-standard-wo-NodeInstanceRole-IJP4S12W3020" to auth ConfigMap [ℹ] nodegroup "standard-workers" has 0 node(s) [ℹ] waiting for at least 1 node(s) to become ready in "standard-workers" [ℹ] nodegroup "standard-workers" has 2 node(s) [ℹ] node "ip-192-168-22-17.us-west-2.compute.internal" is not ready [ℹ] node "ip-192-168-32-184.us-west-2.compute.internal" is ready [ℹ] kubectl command should work with "/Users/ericn/.kube/config", try 'kubectl get nodes' [✔] EKS cluster "prod" in "us-west-2" region is ready
  2. クラスターのプロビジョニングには通常、10 ~ 15 分かかります。クラスターの準備ができたら、kubectl 設定が正しいことをテストします。

    kubectl get svc

    注記

    "aws-iam-authenticator": executable file not found in $PATH エラーが発生した場合、kubectl は、Amazon EKS に設定されていません。詳細については、「aws-iam-authenticator のインストール」を参照してください。

    その他の認可またはリソースタイプのエラーが発生した場合は、トラブルシューティングセクションの 許可されていないか、アクセスが拒否されました (kubectl) を参照してください。

    出力:

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m
  3. (GPU ワーカーのみ) GPU インスタンスタイプと Amazon EKS 最適化 AMI GPU 対応を選択した場合は、NVIDIA device plugin for Kubernetes を、次のコマンドを使ってクラスターに設定されたデーモンセットとして適用しなければなりません。

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta/nvidia-device-plugin.yml

次のステップ

ワーカーノードが関連付けられた Amazon EKS クラスターが実行中になったところで、Kubernetes アドオンのインストールとクラスターへのアプリケーションのデプロイを開始できます。以下のトピックは、クラスターの機能を拡張するのに役立ちます。