翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EKS AWS Batch の では、コンテナで使用できるリソースを指定できます。たとえば、vCPUとメモリリソースのrequests
値、またはlimits
値を指定できます。
vCPU リソースを指定する際の制約は次のとおりです:
-
少なくとも 1つのvCPU
requests
、またはlimits
値 のいずれか指定する必要があります。 -
1つのvCPU ユニットは、1つの物理コアまたは仮想コアに相当します。
-
vCPUの値は、整数または0.25単位で入力する必要があります。
-
有効な最小値は0.25です。
-
両方が特定される場合、
requests
の値はlimits
の値以下でなくてはなりません。このようにして、ソフトとハードのvCPU設定の両方を行うことができます。 -
vCPU値をミリCPU形式で指定することはできません。たとえば、
100m
は有効な値ではありません。 -
AWS Batch は、スケーリングの決定に
requests
値を使用します。requests
値が指定されていない場合、limits
値はrequests
値にコピーされます。
メモリリソースを指定する際の制約は、次のとおりです:
-
少なくとも1つのメモリ
requests
またはlimits
値を指定する必要があります。 -
メモリ値は mebibytes (MiBs) 内である必要があります。
-
両方を指定する場合、
requests
値はlimits
値と等しくなければなりません。 -
AWS Batch は、スケーリングの決定に
requests
値を使用します。requests
値が指定されていない場合、limits
値はrequests
値にコピーされます。
GPUリソースを指定する際の制約は、次のとおりです:
-
両方を指定する場合、
requests
値はlimits
値と等しくなければなりません。 -
AWS Batch は、スケーリングの決定に
requests
値を使用します。requests
値が指定されていない場合、limits
値はrequests
値にコピーされます。
例: ジョブ定義
Amazon EKS ジョブ定義 AWS Batch の次の は、ソフト vCPU 共有を設定します。これにより、Amazon EKS AWS Batch の はインスタンスタイプのすべての vCPU 容量を使用できます。ただし、実行中の他のジョブがある場合、そのジョブには最大数の 2
vCPUs が割り当てられます。メモリは、2 GBに制限されています。
{
"jobDefinitionName": "MyJobOnEks_Sleep",
"type": "container",
"eksProperties": {
"podProperties": {
"containers": [
{
"image": "public.ecr.aws/amazonlinux/amazonlinux:2",
"command": ["sleep", "60"],
"resources": {
"requests": {
"cpu": "2",
"memory": "2048Mi"
}
}
}
]
}
}
}
Amazon EKS ジョブ定義 AWS Batch の次の は、 request
の値1
を持ち、ジョブに最大 vCPUs 4
を割り当てます。
{
"jobDefinitionName": "MyJobOnEks_Sleep",
"type": "container",
"eksProperties": {
"podProperties": {
"containers": [
{
"image": "public.ecr.aws/amazonlinux/amazonlinux:2",
"command": ["sleep", "60"],
"resources": {
"requests": {
"cpu": "1"
},
"limits": {
"cpu": "4",
"memory": "2048Mi"
}
}
}
]
}
}
}
Amazon EKS ジョブ定義 AWS Batch の次の では、vCPU limits
値を に設定1
し、メモリlimits
値を 1 GB に設定します。
{
"jobDefinitionName": "MyJobOnEks_Sleep",
"type": "container",
"eksProperties": {
"podProperties": {
"containers": [
{
"image": "public.ecr.aws/amazonlinux/amazonlinux:2",
"command": ["sleep", "60"],
"resources": {
"limits": {
"cpu": "1",
"memory": "1024Mi"
}
}
}
]
}
}
}
が Amazon EKS AWS Batch の ジョブを Amazon EKS ポッド AWS Batch に変換すると、 は limits
値を requests
値 AWS Batch にコピーします。これは、requests
値が指定されていない場合です。前述のジョブ定義の例を送信すると、ポッドspec
は次のようになります。
apiVersion: v1
kind: Pod
...
spec:
...
containers:
- command:
- sleep
- 60
image: public.ecr.aws/amazonlinux/amazonlinux:2
resources:
limits:
cpu: 1
memory: 1024Mi
requests:
cpu: 1
memory: 1024Mi
...
ノードCPUとメモリの予約
AWS Batch は、vCPU およびメモリ予約の bootstrap.sh
ファイルのデフォルトロジックに依存します。bootstrap.sh
ファイルの詳細については、 の bootstrap.sh を参照してください。vCPUメモリリソースのサイズを決定する場合、以下の例を検討してください。
注記
実行中のインスタンスがない場合、vCPU とメモリの予約は、最初は AWS Batch スケーリングロジックと意思決定に影響を与える可能性があります。インスタンスの実行後、 は初期割り当て AWS Batch を調整します。
例: ノード CPU 予約
CPU予約値は、インスタンスで使用可能なvCPUsの総数を使用してミリコア単位で計算されます。
vCPU番号 | 予約率 |
---|---|
1 | 6% |
2 | 1% |
3~4 | 0.5% |
4以上 | 0.25% |
上記の値を使用すると、次のようになります:
-
仮想CPUが2つある
c5.large
インスタンスのvCPUs予約値は,70 m です。これは次の方法で計算されます:(1*60) + (1*10) = 70 m 。 -
96個のvCPUsを搭載した
c5.24xlarge
インスタンスのCPU予約値は、 310 mです。これは次の方法で計算されます:(1*60) + (1*10) + (2*5) + (92*2.5) = 310 m。
この例では、c5.large
インスタンスでジョブを実行するために使用できるミリコアvCPU ユニットは、1930(計算は2000-70) です。ジョブに 2
(2*1000 m) の vCPU ユニットが必要で、そのジョブが 単一のc5.large
インスタンスに収まらないとします。ただし、1.75
vCPU ユニットが必要なジョブには適しています。
例: ノードメモリ予約
メモリ予約値は、以下を使用してメビバイト単位で計算されます:
-
インスタンスキャパシティーは MB 単位です。たとえば、8 GB のインスタンスは 7,748 です MiB。
-
kubeReserved
値。kubeReserved
値は、システムデーモン用に確保するメモリ量です。kubeReserved
値は次のように計算されます:((11 * インスタンスタイプでサポートされる最大ポッド数) + 255)。各インスタンスタイプによりサポートされるポッドの最大数のリストは、GitHub のeni-max-pods.txtを参照してください。 -
HardEvictionLimit
値。使用可能なメモリがHardEvictionLimit
値を下回ると、インスタンスはポッドを削除しようとします。
割り当て可能なメモリの計算式は次のとおりです:(Instance_Capacity_IN_MIB
)-(11 * (最大ポッド数
))-255-(
))。HardEvictionLimit
値。
1つの c5.large
インスタンスは最大29個のポッドをサポートします。HardEvictionLimit
値が100 MiBの8 GB c5.large
インスタンスの場合、割り当て可能なメモリは7074ですMiB。これは次の方法で計算されます:(7748-(11 * 29) -255 -100) = 7074 MiB。この例では、8,192件のMiB のタスクジョブは 、8 gibibyte (GiB) インスタンスであるにもかかわらず、このインスタンスには当てはまりません。
DaemonSets
DaemonSets を使用する場合は、以下を考慮してください:
-
Amazon EKS インスタンス AWS Batch で が実行されていない場合、 は最初に AWS Batch スケーリングロジックと意思決定に影響を与えるDaemonSets可能性があります。 AWS Batch は最初に 0.5 vCPU ユニットと 500 MiB を予想される に割り当てますDaemonSets。インスタンスの実行後、 は初期割り当て AWS Batch を調整します。
-
で vCPU またはメモリの制限DaemonSetが定義されている場合、Amazon EKS ジョブ AWS Batch のリソースが少なくなります。 AWS Batch ジョブに割り当てられDaemonSetsる の数はできるだけ少なくすることをお勧めします。