EKS Handson

hata published on
5 min, 890 words

Categories: infrastructure

INTRODUCTION TO AMAZON EKS🔗

の Handson をやった。 やってみて気づいたが昔やったことある気がする。 そのときは英語だった。

https://eks-for-aws-summit-online.workshop.aws/

このハンズオンでは、 Amazon Elastic Kubernetes Service (Amazon EKS) とクラスターの作成および管理のためのシンプルなコマンドラインユーティリティである eksctl を使用して、マネージドな Kubernetes クラスターを実行します。サンプル Web アプリケーションをビルドして Kuberneres クラスターにデプロイし、kubectl コマンドによる Kubernetes の操作と、Amazon EKS 上でのアプリケーションの実行を体験していただきます。

内容に関係ないが一番気になったのは、コマンドのコピーボタンがすべて最後に改行込みでコピーされること。 ターミナルに貼り付けると即実行されてしまう。 リージョン書き換えたかったりとかできない。

以下、内容が古かったので適宜対応したこと。

  • Kubernetes のバージョンが古くて EKS のサポート外だったので、そこは最新の 1.21 に書き換えた。

  • バージニアにデフォルトVPCがなぜかなかったので、オレゴンでやった。

  • 該当の EC2 Instance が存在しない Zone ( us-west-2d )だったので、 AZ を置き換えた。

Memo🔗

Pods🔗

$ kubectl get pod -A
NAMESPACE     NAME                       READY   STATUS    RESTARTS   AGE
kube-system   aws-node-hdzsj             1/1     Running   0          49m
kube-system   aws-node-pr62x             1/1     Running   0          49m
kube-system   aws-node-v68j9             1/1     Running   0          49m
kube-system   coredns-85d5b4454c-57ktn   1/1     Running   0          58m
kube-system   coredns-85d5b4454c-hpg7g   1/1     Running   0          58m
kube-system   kube-proxy-jcfjb           1/1     Running   0          49m
kube-system   kube-proxy-mt5lz           1/1     Running   0          49m
kube-system   kube-proxy-mwnnd           1/1     Running   0          49m
  • aws-node-* - Amazon VPC Plugin for Kubernetes 。 Pod にネットワーク機能を提供。
  • coredns-* - クラスタ内の名前解決を提供する DNS サーバ。
  • kube-proxy-* - Kubernetes Service の機能を提供

IAM の OpenID Connect の ID Provicer を作成しクラスタに関連付ける。🔗

eksctl utils associate-iam-oidc-provider \
    --cluster ekshandson \
    --approve


ACCOUNT_ID=$(aws sts get-caller-identity --output text --query Account)

eksctl create iamserviceaccount \
    --name dynamodb-messages-fullaccess \
    --namespace backend \
    --cluster ekshandson \
    --attach-policy-arn arn:aws:iam::${ACCOUNT_ID}:policy/dynamodb-messages-fullaccess \
    --override-existing-serviceaccounts \
    --approve


kubectl get serviceaccount -n backend

Readings🔗

Amazon EKS ワーカーノードの謎を解くクラスターネットワーク | Amazon Web Services ブログ

とても勉強になる記事でした。ありがとうございます。

EKS クラスタの NW アーキテクチャ

EKS クラスターは 2 つの VPC で構成されています。1 つは Kubernetes コントロールプレーンをホストする AWS が管理する VPC、もう 1 つはコンテナを実行する Kubernetes ワーカーノード (EC2 インスタンス) およびクラスターが使用するその他の AWS インフラストラクチャ (ロードバランサーなど) をホストする顧客が管理する VPCです。

ワーカーノードは、パブリックエンドポイントに接続するか、クラスターの作成時に指定したサブネットに配置された EKS マネージド Elastic Network Interface (ENI) を介して接続します。ワーカーノードが接続に使用するルートは、クラスターのプライベートエンドポイントを有効にしたか、または無効にしたかによって決まります。

ネットワーキングモード

  1. パブリックエンドポイント専用
  2. パブリックエンドポイントとプライベートエンドポイント
  3. プライベートエンドポイント専用

VPC の設計

  1. パブリック専用サブネット - シンプルにノード全てインターネットからアクセス可能なかたち。
  2. パブリックサブネットとプライベートサブネット - EC2 + ELB 構成でよくあるパターンの EKS 版
  3. プライベート専用サブネット - さらに、パブリックサブネットとパブリックエンドポイントを無効にした状態。インターネット公開しないような用途?
  4. 完全にプライベートなクラスター - NATーGW すら置かない構成。あまり使わなさそう。

参考 Amazon EKS ネットワーク - Amazon EKS

Next Step🔗

https://www.eksworkshop.com/ のワークショップとのこと。 これはやってことある。 けどだいぶ様変わりしているようにも見える。