EKSとは?
コンテナオーケストレーターとは?やk8sの簡単な構成や動きについて記載。
JAWS-UG初心者支部#53 新年LTスペシャル会の登壇資料です。
EKSの簡単な試し方
1.Cloud9の準備
Cloud9環境の作成
AMTC無効化
環境作成が完了し、Cloud9のコンソール画面に接続後、歯車のアイコン
→AWS Settings
の順に選択しAWS managed temporary credentials
を無効にします。
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
参考(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ロールを作成します。
テスト用途なのでAdministratorAccess
を追加して次に進みます。
IAMロール割当
EC2のコンソール画面に移動後、Cloud9のインスタンスをチェックして、アクション
→セキュリティ
→IAMロールを変更
の順に選択します。
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
になっていることを確認します。
またEKSコンソールから作成したクラスタの確認、EC2コンソールからデータプレーン用のEC2が作成されていることを確認出来ます。
3.リソースの作成
マニフェストの作成
Cloud9のFile
→New File
という箇所から新しいファイルが作成できますので、下記の内容でnginx-deployment.yml
とnginx-service.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
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画面が表示されることを確認します。
4.クラスタの削除
忘れないようにクラスタの削除を実施します。Cloud9コンソールで下記コマンドを実行します。
eksctl delete cluster \
--region ap-northeast-1 \
--name eks-clu
プロンプトが返ってきたら念のため下記を確認しておきます。
作成したCloud9の環境とIAMロールも削除します。