概要
仕事でKubernetes(AWSのEKS)を利用する機会が出てきたため学習します。
学習ステップとしては以下のようにしてみようと思っています。
- Kubernetesの基本用語の理解
- Kubernetes公式チュートリアルやってみる
- EKSの基本用語理解
- EKSでサービスを作ってみる
今回はステップ4 「EKSでサービスを作ってみる」
この記事はそのメモやまとめです。
すでに設定済みの項目がいくつかある。
試行錯誤しながらやったので、手順として不要かもしれない。あくまでメモ用。
参考ページ
こちらの方の記事を参考にEKSのハンズオンやってみます。
作業環境はcloud shellを利用しました。
環境準備
kubectlとeksctlをインストールします。
コマンドは参考ページからまるまるコピってます。
必要となるkubectlとeksctlのインストールが完了したので、versionを確認します。
[cloudshell-user@ip-10-130-53-82 ~]$ kubectl version
WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short. Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"27+", GitVersion:"v1.27.4-eks-8ccc7ba", GitCommit:"892db4a4e439987d7addade5f9595cadfa06db2e", GitTreeState:"clean", BuildDate:"2023-08-15T16:06:56Z", GoVersion:"go1.20.6", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v5.0.1
The connection to the server localhost:8080 was refused - did you specify the right host or port?
[cloudshell-user@ip-10-130-53-82 ~]$ eksctl version
0.165.0
[cloudshell-user@ip-10-130-53-82 ~]$
クラスターの作成
前回もあったように以下のコマンで一括でEKS環境を作成してもらいます。
本当に便利ですね。
eksctl create cluster
cloudFormationを見ると
eksctl-ridiculous-monster-1701655153-cluster
というスタックが作成され、その中でもりもりとAWSリソースを作成してくれています。
こちらの作成が終わると次は
eksctl-ridiculous-monster-1701655153-nodegroup-ng-9add7518
というスタックの作成が開始されました。
名前の通りNodeGroupを作成しているようですね。
15分程で作成が完了しました。
2023-12-04 02:13:32 [✔] EKS cluster "ridiculous-monster-1701655153" in "ap-northeast-1" region is ready
[cloudshell-user@ip-10-130-53-82 ~]$
EKSのコンソールを見てみるとちゃんと作成できていました。
このクラスターを利用してハンズオンを進めていきます。
NodeGroupとNodeも作成されていました。
Nodeのインスタンスタイプが無駄に大きいのが気になりますね……。
一旦削除して小さめにするように修正します。
eksctl delete cluster --name ridiculous-monster-1701655153 --wait
削除は10分ほどで完了。
createしたクラスター関連のリソースがまとめて削除されました。
2023-12-04 02:41:49 [✔] all cluster resources were deleted
[cloudshell-user@ip-10-130-53-82 ~]$
せっかくなのでいろいろオプションがあるみたいなので、以下を指定して見たいと思います。
- cluster名
- instance type
またyamlにパラメーターを記載したものを利用できるようなのでそれを利用してみます。
作成時のパラメーターを弄ってみる
こちらの記事を参考にして作成します。
https://eksctl.io/usage/instance-selector/
できるだけinstance typeは小さく……という感じで以下のようにしました。
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: TestCluster
region: ap-northeast-1
nodeGroups:
- name: ng
instanceSelector:
vCPUs: 2
memory: "2"
dry-runが利用できるみたいなのでまずはそれで検証します。
eksctl create cluster -f instance-selector-cluster.yaml --dry-run
[cloudshell-user@ip-10-130-53-82 ~]$ eksctl create cluster -f instance-selector-cluster.yaml --dry-run
...
nodeGroups:
- amiFamily: AmazonLinux2
containerRuntime: containerd
disableIMDSv1: true
disablePodIMDS: false
iam:
withAddonPolicies:
albIngress: false
appMesh: null
appMeshPreview: null
autoScaler: false
awsLoadBalancerController: false
certManager: false
cloudWatch: false
ebs: false
efs: false
externalDNS: false
fsx: false
imageBuilder: false
xRay: false
instanceSelector:
memory: "2"
vCPUs: 2
instancesDistribution:
capacityRebalance: false
instanceTypes:
- t3.small
...
めちゃくちゃ小さいサイズのt3.smallを利用するようになっているので、大丈夫そう。
作成されたクラスターとNodeを見てみるとちゃんと小さくなってました。
ハンズオンやってみる
あとは記事に書いてあるとおりのことをマニフェストファイルを読みながら実施しました。
ハンズオンの手順とちょっと違うのはyamlファイルについてはローカルからのアップロードではなく、cloudshellのvimで直接作成したぐらいだと思います。
終わりに
Kubernetesの理解、Kubernetesを実際に動かす、EKSの理解、EKSを実際に動かす、という本当に触りの部分だけですが、学習することができました。
業務で利用するのはもうちょっと手が加えられているシステムですので、これをベースに更に学習していきます。