eksctl の開始方法 - Amazon EKS

eksctl の開始方法

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

ほとんどのリソースを手動で作成し、リソース間でのやり取りがどのように行われるかの理解を深めるには、AWS マネジメントコンソール を使用してクラスターノードとワーカーノードを作成します。詳細については、「AWS マネジメントコンソール の使用開始」を参照してください。

前提条件

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

AWS CLI をインストールする

AWS CLI の最新バージョンをインストールするには、AWS CLI をインストールするオペレーティングシステムの名前が示されたタブを選択してください。

macOS

現在 AWS CLI がインストールされている場合は、インストールされているバージョンを確認します。

aws --version

バージョン 1.18.86 以降がない場合や、バージョン AWS CLI 以降がインストールされている場合は、2.0.25 バージョン 2 をインストールします。その他のインストールオプションや、現在インストールされているバージョン 2 をアップグレードする方法については、「macOS での AWS CLI バージョン 2 のインストール」の「アップグレード」を参照してください。

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target /

AWS CLI バージョン 2 を使用できない場合は、次のコマンドを使用して、AWS CLI バージョン 1 の最新バージョンがインストールされていることを確認します。

pip3 install awscli --upgrade --user
Linux

現在 AWS CLI がインストールされている場合は、インストールされているバージョンを確認します。

aws --version

バージョン 1.18.86 以降がない場合や、バージョン AWS CLI 以降がインストールされている場合は、2.0.25 バージョン 2 をインストールします。その他のインストールオプションや、現在インストールされているバージョン 2 をアップグレードする方法については、「Linux での AWS CLI バージョン 2 のインストール」の「アップグレード」を参照してください。

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install

AWS CLI バージョン 2 を使用できない場合は、次のコマンドを使用して、AWS CLI バージョン 1 の最新バージョンがインストールされていることを確認します。

pip3 install --upgrade --user awscli
Windows

現在 AWS CLI がインストールされている場合は、インストールされているバージョンを確認します。

aws --version

AWS CLI バージョン 2 をインストールするには

バージョン 1.18.86 以降がない場合や、バージョン AWS CLI 以降がインストールされている場合は、以下のステップを使用して 2.0.25 バージョン 2 をインストールします。その他のインストールオプションや、現在インストールされているバージョン 2 をアップグレードする方法については、「Windows での AWS CLI バージョン 2 のインストール」の「Windows でのアップグレード」を参照してください。

  1. Windows 用 AWS CLI MSI インストーラ (64 ビット) を https://awscli.amazonaws.com/AWSCLIV2.msi からダウンロードします。

  2. ダウンロードした MSI インストーラを実行し、画面の指示に従います。デフォルトでは、AWS CLI は C:\Program Files\Amazon\AWSCLIV2 にインストールされます。

AWS CLI バージョン 2 を使用できない場合は、次のコマンドを使用して、AWS CLI バージョン 1 の最新バージョンがインストールされていることを確認します。

pip3 install --user --upgrade awscli

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]: region-code Default output format [None]: json

このコマンドを入力すると、AWS CLI によって、access keysecret access keyAWS Regionoutput format の 4 つの情報の入力が求められます。これらの情報は、default という名前のプロファイル (設定の集合) に保存されます。コマンドを実行する際には、別のプロファイルを指定しない限り、このプロファイルが使用されます。

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

kubectl のインストールと設定

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

注記

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

kubectl コマンドラインユーティリティのバージョン 1.16 をインストールするには、kubectl をインストールするオペレーティングシステムの名前のタブを選択してください。別のクラスターバージョンで使用するために別のバージョンをインストールする必要がある場合は、「kubectl のインストール」を参照してください。

macOS

MacOS で kubectl をインストールするには

  1. Amazon EKS 提供の kubectl バイナリをダウンロードします。

    curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.8/2020-04-16/bin/darwin/amd64/kubectl
  2. (オプション) ダウンロードされたバイナリを SHA-256 sum で検証します。

    1. SHA-256 sum をダウンロードします。

      curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.8/2020-04-16/bin/darwin/amd64/kubectl.sha256
    2. SHA-256 sum を確認します。

      openssl sha1 -sha256 kubectl
    3. コマンド出力で生成された SHA-256 sum とダウンロードした SHA-256 ファイルを比較します。両者は一致する必要があります。

  3. バイナリへの実行アクセス権限を適用します。

    chmod +x ./kubectl
  4. バイナリを PATH のフォルダにコピーします。既に kubectl のバージョンが既にインストールされている場合、$HOME/bin/kubectl を作成し、$HOME/bin$PATH の最初にあることを確認することをお勧めします。

    mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
  5. (オプション) シェルを開いたときに設定されるように、シェルの初期化ファイルに $HOME/bin パスを追加します。

    echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile
  6. kubectl をインストールしたら、以下のコマンドを使用してそのバージョンを確認できます。

    kubectl version --short --client
Linux

Linux で kubectl をインストールするには

  1. Amazon EKS 提供の kubectl バイナリをダウンロードします。

    curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.8/2020-04-16/bin/linux/amd64/kubectl
  2. (オプション) ダウンロードされたバイナリを SHA-256 sum で検証します。

    1. SHA-256 sum をダウンロードします。

      curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.8/2020-04-16/bin/linux/amd64/kubectl.sha256
    2. SHA-256 sum を確認します。

      openssl sha1 -sha256 kubectl
    3. コマンド出力で生成された SHA-256 sum とダウンロードした SHA-256 ファイルを比較します。両者は一致する必要があります。

  3. バイナリへの実行アクセス権限を適用します。

    chmod +x ./kubectl
  4. バイナリを PATH のフォルダにコピーします。既に kubectl のバージョンが既にインストールされている場合、$HOME/bin/kubectl を作成し、$HOME/bin$PATH の最初にあることを確認することをお勧めします。

    mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
  5. (オプション) シェルを開いたときに設定されるように、シェルの初期化ファイルに $HOME/bin パスを追加します。

    注記

    このステップでは、Bash シェルを使用していることを前提としています。別のシェルを使用している場合は、特定のシェル初期化ファイルを使用するよう、コマンドを変更します。

    echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
  6. kubectl をインストールしたら、以下のコマンドを使用してそのバージョンを確認できます。

    kubectl version --short --client
Windows

Windows で kubectl をインストールするには

  1. PowerShell ターミナルを開きます。

  2. Amazon EKS 提供の kubectl バイナリをダウンロードします。

    curl -o kubectl.exe https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.8/2020-04-16/bin/windows/amd64/kubectl.exe
  3. (オプション) ダウンロードされたバイナリを SHA-256 sum で検証します。

    1. SHA-256 sum をダウンロードします。

      curl -o kubectl.exe.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.8/2020-04-16/bin/windows/amd64/kubectl.exe.sha256
    2. SHA-256 sum を確認します。

      Get-FileHash kubectl.exe
    3. コマンド出力で生成された SHA-256 sum とダウンロードした SHA-256 ファイルを比較します。2 つの 出力が一致しなければなりません。ただし、PowerShell の出力は大文字になります。

  4. バイナリを PATH のフォルダにコピーします。コマンドラインユーティリティで使用する PATH 内に既存のディレクトリがある場合、そのディレクトリにバイナリをコピーします。それ以外の場合は、以下のステップを完了します。

    1. コマンドラインのバイナリ用に新しいディレクトリ (C:\bin など) を作成します。

    2. kubectl.exe バイナリを新しいディレクトリにコピーします。

    3. ユーザーまたはシステムの PATH 環境変数を編集し、新しいディレクトリを PATH に追加します。

    4. 新しい PATH 変数を取得するには、古い PowerShell ターミナルを閉じ、新しいターミナルを開きます。

  5. kubectl をインストールしたら、以下のコマンドを使用してそのバージョンを確認できます。

    kubectl version --short --client

eksctl をインストールする

eksctl コマンドラインユーティリティのバージョン 0.22.0 以降をインストールするには、eksctl をインストールするオペレーティングシステムの名前のタブを選択してください。詳細については、https://eksctl.io/ を参照してください。

macOS

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

Amazon EKS と macOS の使用を開始する最も簡単な方法は、Homebrew を使用して eksctl をインストールすることです。eksctl Homebrew レシピでは、eksctl のほか、Amazon EKS に必要なその他の依存関係 (kubectl など) がインストールされます。レシピでは、AWS CLI バージョン 1.16.156 以上がインストールされていない場合に必要な aws-iam-authenticator もインストールされます。

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

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  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.22.0 以上であることが必要です。そうでない場合は、端末の出力にインストールエラーやアップグレードエラーがないか確認するか、以下からリリースのアーカイブを手動でダウンロードします https://github.com/weaveworks/eksctl/releases/download/0.22.0/eksctl_Darwin_amd64.tar.gzeksctl を展開し、実行します。

Linux

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

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

    curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/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.22.0 以上であることが必要です。成功しない場合、端末の出力でインストールまたはアップグレードエラーがないか確認するか、ステップ 1 のアドレスを https://github.com/weaveworks/eksctl/releases/download/0.22.0/eksctl_Linux_amd64.tar.gz に置き換えて、ステップ 1 ~ 3 をもう一度実行します。

Windows

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

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

  2. eksctl をインストールまたはアップグレードします。

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

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

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

    eksctl version
    注記

    GitTag のバージョンは 0.22.0 以上であることが必要です。そうでない場合は、端末の出力にインストールエラーやアップグレードエラーがないか確認するか、以下からリリースのアーカイブを手動でダウンロードします https://github.com/weaveworks/eksctl/releases/download/0.22.0/eksctl_Windows_amd64.zipeksctl を展開し、実行します。

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

このセクションは、Amazon EKS クラスターとマネージド型ワーカーノードグループを作成するために役立ちます。最新の Kubernetes と Amazon EKS の機能を利用できるように、Amazon EKS で使用可能な最新バージョンの Kubernetes がインストールされます。一部の機能は、Kubernetes の古いバージョンでは利用できません。

重要

クラスターがあるリージョンの AWS Security Token Service (STS) エンドポイントがアカウントに対して有効になっていることを確認します。エンドポイントが有効になっていない場合、ワーカーノードはクラスターの作成中にクラスターに参加できません。詳細については、「AWS リージョンでの AWS STS のアクティブ化と非アクティブ化」を参照してください。

eksctl を使用してクラスターを作成するには

  1. ワークロードの要件に一致する以下のタブを選択します。AWS Fargate 上でのみポッドを実行するクラスターを作成する場合は、[AWS Fargate-only cluster ] を選択します。 クラスターで Linux ワークロードのみを実行する場合は、[Cluster with Linux-only workloads (Linux のみのワークロードがあるクラスター)] を選択します。クラスターで Linux および Windows ワークロードを実行する場合は、[Cluster with Linux and Windows workloads (Linux および Windows のワークロードがあるクラスター)] を選択します。

    AWS Fargate-only cluster

    以下のコマンドを使用して、Fargate をサポートする、Amazon EKS クラスターを作成します。prod は独自の値に置き換えることができます。また、us-west-2 は、Amazon EKS Fargate でサポートされている任意のリージョンに置き換えることができます。

    バージョン 1.16 をデプロイすることをお勧めします。以前のバージョンをデプロイする必要がある場合、置き換えることのできるバージョンは 1.14 または 1.15 のみです。1.16 を変更した場合は、そのバージョンの重要な Amazon EKS リリースノートを読み、対応するバージョンの kubectl をインストールする必要があります。

    eksctl create cluster \ --name prod \ --version 1.16 \ --region us-west-2 \ --fargate

    ワーカーノードグループなしで、新しい Amazon EKS クラスターが作成されます。ただし、eksctl では、ポッド実行ロール、default および kube-system 名前空間の Fargate プロファイルが作成され、Fargate で実行できるように coredns のデプロイにパッチが適用されます。詳細については、「AWS Fargate」を参照してください。

    Cluster with Linux-only workloads

    以下のコマンドを使用して、Amazon EKS クラスターと Linux ワーカーノードを作成します。example の値は独自の値に置き換えます。us-west-2 は、Amazon EKS で サポートされている任意のリージョンに置き換えることができます。

    バージョン 1.16 をデプロイすることをお勧めします。以前のバージョンをデプロイする必要がある場合、置き換えることのできるバージョンは 1.14 または 1.15 のみです。1.14 より前のバージョンをデプロイする場合は、--managed オプションを削除する必要があります。1.16 を変更した場合は、そのバージョンの重要な Amazon EKS リリースノートを読み、対応するバージョンの kubectl をインストールする必要があります。

    --ssh-public-key はオプションですが、クラスターを使用してノードグループを作成するときに、これを指定することを強くお勧めします。このオプションを指定すると、マネージド型ノードグループ内のノードへの SSH アクセスが有効になります。SSH アクセスを有効にすることにより、インスタンスに接続し、問題がある場合に診断情報を収集できます。ノードグループの作成後にリモートアクセスを有効にすることはできません。公開キーがない場合は、Amazon EC2 用にキーペアを作成し、キーペアの公開キーを取得して、--ssh-public-key に指定できます。キーは、作成するクラスターと同じリージョンに作成してください。

    eksctl create cluster \ --name prod \ --version 1.16 \ --region us-west-2 \ --nodegroup-name standard-workers \ --node-type t3.medium \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4 \ --ssh-access \ --ssh-public-key my-public-key.pub \ --managed

    出力:

    クラスターノードとワーカーノードが作成されると、数行の出力が表示されます。出力の最後の行は、次のサンプル行のようになります。

    [✓] EKS cluster "prod" in "us-west-2" region is ready
    注記

    ワーカーノードがクラスターに参加できない場合は、トラブルシューティングガイドの「ワーカーノードをクラスターに結合できません」を参照してください。

    Cluster with Linux and Windows workloads

    Windows サポートの「考慮事項」を把握しておいてください。以下の例のテキストには instanceType のサポートされる値が含まれています。example の値は独自の値に置き換えます。

    バージョン 1.16 をデプロイすることをお勧めします。以前のバージョンをデプロイする必要がある場合、置き換えることのできるバージョンは 1.14 または 1.15 のみです。1.16 を変更した場合は、そのバージョンの重要な Amazon EKS リリースノートを読み、対応するバージョンの kubectl をインストールする必要があります。

    以下のテキストを cluster-spec.yaml という名前のファイルに保存します。構成ファイルは、マネージド型 Linux ワーカーノードグループと Windows のセルフマネージド型ワーカーノードグループでクラスターを作成するために使用します。クラスターで Windows ワークロードのみを実行する場合でも、すべての Amazon EKS クラスターには 1 つ以上の Linux ワーカーノードが含まれている必要があります。可用性を確保するために、各ノードグループには 2 つ以上のワーカーノードを作成することをお勧めします。

    --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: windows-prod region: us-west-2 version: '1.16' managedNodeGroups: - name: linux-ng instanceType: t2.large minSize: 2 nodeGroups: - name: windows-ng instanceType: m5.large minSize: 2 volumeSize: 100 amiFamily: WindowsServer2019FullContainer

    以下のコマンドを使用して、Amazon EKS クラスターと Windows および Linux ワーカーノードを作成します。

    eksctl create cluster -f cluster-spec.yaml --install-vpc-controllers
    注記

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

    eksctl create cluster --help

    出力:

    クラスターノードとワーカーノードが作成されると、数行の出力が表示されます。出力の最後の行は、次のサンプル行のようになります。

    [✓] EKS cluster "windows-prod" in "region-code" region is ready
    注記

    ワーカーノードがクラスターに参加できない場合は、トラブルシューティングガイドの「ワーカーノードをクラスターに結合できません」を参照してください。

  2. クラスターのプロビジョニングには通常、10 ~ 15 分かかります。クラスターの準備ができたら、kubectl 設定が正しいことをテストします。

    kubectl get svc
    注記

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

    出力:

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m
  3. (Linux 高速 AMI ワーカーのみ) 高速 AMI インスタンスタイプと Amazon EKS 最適化 AMI 高速 AMI を選択した場合は、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 アドオンのインストールとクラスターへのアプリケーションのデプロイを開始できます。以下のトピックは、クラスターの機能を拡張するのに役立ちます。