1クール続けるブログ

とりあえず1クール続けるエンジニアの備忘録

KubernetesとAmazon ECSのなんちゃって対応表

明確な対応関係ではないので注意

切り取っている単位だったりが同じであったり同じような意味合いを単語を対応させただけなので、実際には違いがあったり、ほぼ同じものでも構造や動作が違うものもあります。あくまでざっくり2つの関係を整理するだけのものです(網羅性もないです)。
用語の対応・設定周りの対応の対応の順に見ていきます。

kubernetesとECSをざっくり対応

前提

kubernetesでデプロイする際は、直接Podのデプロイする方法やReplicaSetを直接作成してデプロイする方法ではなく、Deploymentを作成してデプロイすることを想定しています。

用語の対応表

SEQ kubernetes Amazon ECS 備考
1 pod task デプロイの最小単位。1個以上のコンテナをまとめたもの。
2  Deployment Task Definition コンテナの詳細を指定
3 ReplicaSet Service pod(task)の起動数を指定
4 Service Service pod(task)をエンドポイントを紐付ける
5 Horizontal Pod Autoscaler ScalableTarget + ScalingPolicy 水平スケーリングの設定
6 maxSurge MaximumPercent RollingUpdate時に可動している数値よりも余分に起動していいpod(task)の割合。ただしpodは数でも指定できる。
7 maxUnavailable MinimumHealthyPercent RollingUpdate実行時に稼働状態にあるpod(task)数をどのくらいまでshrinkしてよいか。

設定周りの対応表

設定ファイルのプロパティ周りの対応表です。 kubernetesのdeploymentやserviceは設定ファイル(yaml)のkindを指しており、ecsのServiceやTaskdefinitionはCloudFormationのTypeを指しています。

SEQ kubernetes ECS 備考
1 deployment.spec.template.spec.containers  Taskdefinition.containerDefinitions コンテナのイメージやcpu要求量などコンテナの詳細を記載
2 deployment.replicas Service.desiredCount pod(task)の起動要求数
3 deployment.spec.selector Service.LoadBalancers エンドポイントとの紐付け(紐付け方は全然違うが)
4 deployment.spec.template.spec.containers.command  Taskdefinition.containerDefinitions.Command DockerにおけるCMD
5 deployment.spec.template.spec.containers.entrypoint Taskdefinition.containerDefinitions.EntryPoint DockerでのENTRYPOINT
6 deployment.spec.template.spec.containers.securityContext.privileged Taskdefinition.containerDefinitions.Privileged ホストインスタンスへの特権アクセス権を持つか
7 deployment.spec.template.spec.containers.volumeMounts Taskdefinition.containerDefinitions.MountPoints マウントするvolumeについての設定

参考

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/#container-v1-core https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html