LoginSignup
2
5

More than 1 year has passed since last update.

Kubernetes/EKSに入門してみる

Last updated at Posted at 2023-01-17

EKSとは?

コンテナオーケストレーターとは?やk8sの簡単な構成や動きについて記載。
JAWS-UG初心者支部#53 新年LTスペシャル会の登壇資料です。

EKSの簡単な試し方

1.Cloud9の準備

Cloud9環境の作成

Nameのみ入力してあとはデフォルトのまま作成します。
image.png

AMTC無効化

環境作成が完了し、Cloud9のコンソール画面に接続後、歯車のアイコンAWS Settingsの順に選択しAWS managed temporary credentialsを無効にします。
image.png

kubectlのインストール

Cloud9のコンソールで下記コマンドを入力します。

curl -o kubectl https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.7/2022-06-29/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
kubectl version --short --client

参考(入力例)
image.png

参考(AWS公式手順)

eksctlのインストール

Cloud9のコンソールで下記コマンドを入力します。

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version

参考(AWS公式手順)

IAMロール作成

一般的なユースケースでEC2を選択してIAMロールを作成します。

image.png

テスト用途なのでAdministratorAccessを追加して次に進みます。

image.png

ロール名を入力してロールの作成を完了します。
image.png

IAMロール割当

EC2のコンソール画面に移動後、Cloud9のインスタンスをチェックして、アクションセキュリティIAMロールを変更の順に選択します。
image.png

先ほど作成したIAMロールを選択します。
image.png

2.クラスタの作成

Cloud9のコンソールから下記コマンドを入力します。

eksctl create cluster \
    --region ap-northeast-1 \
	--name  eks-clu \
	--version 1.23 \
	--nodegroup-name eks-ng \
	--node-type t3.micro \
	--nodes 2 \
	--nodes-min 2

プロンプトが返ってきたら作成完了です。(20分位かかります。)
CloudFormationでスタックのステータスがCREATE_COMPLETEになっていることを確認します。

image.png

またEKSコンソールから作成したクラスタの確認、EC2コンソールからデータプレーン用のEC2が作成されていることを確認出来ます。

3.リソースの作成

マニフェストの作成

Cloud9のFileNew Fileという箇所から新しいファイルが作成できますので、下記の内容でnginx-deployment.ymlnginx-service.ymlを作成します。
image.png

nginx-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx-app
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx-app
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
nginx-service.yml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: LoadBalancer
  selector:
    app: nginx-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

マニフェストの適用

kubectl applyコマンドでマニフェストファイル適用後、kubectl get podでPodが作成されていることを確認します。

kubectl apply -f nginx-deployment.yml

kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-6c588ccdf7-bghpc   1/1     Running   0          18s
nginx-deployment-6c588ccdf7-nq244   1/1     Running   0          18s

kubectl applyコマンドでマニフェストファイル適用後、kubectl get serviceでLoadBalancerが作成されていることを確認します。

kubectl apply -f nginx-service.yml

kubectl get service
kubectl get service
NAME            TYPE           CLUSTER-IP      EXTERNAL-IP                                                                    PORT(S)        AGE
kubernetes      ClusterIP      10.100.0.1      <none>                                                                         443/TCP        15m
nginx-service   LoadBalancer   10.100.34.217   xxxxxxxxx.ap-northeast-1.elb.amazonaws.com   80:30276/TCP   8s

上記LoadBalancerのDNS名xxxxxxxxx.ap-northeast-1.elb.amazonaws.comにアクセスして、nginxのTOP画面が表示されることを確認します。

image.png

4.クラスタの削除

忘れないようにクラスタの削除を実施します。Cloud9コンソールで下記コマンドを実行します。

eksctl delete cluster \
    --region ap-northeast-1 \
	--name  eks-clu

プロンプトが返ってきたら念のため下記を確認しておきます。

  • CloudFormationの画面からスタックがなくなっていることを確認
    image.png
    ※Cloud9は最後に削除します。

  • EKSコンソールからクラスタがなくなっていることを確認
    image.png

  • EC2コンソールからインスタンスが終了になっていることを確認
    image.png

作成したCloud9の環境とIAMロールも削除します。

  • Cloud9の削除
    image.png

  • IAMロールの削除
    image.png

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5