vGPUやローカルディスクなどのポッドの仕様に特別な要件がない場合は、Elastic Compute Service (ECS)インスタンスタイプではなく、vCPU数とメモリサイズを指定してElastic Container Instanceポッドを作成することをお勧めします。指定されたvCPUとメモリの仕様に基づいて、システムがさまざまなECSインスタンスタイプを提供し、適切なインスタンスタイプを選択できます。この方法では、ECSインスタンスタイプを指定する方法よりも、弾力性とリソースのプロビジョニングが向上します。
仕様の説明
Elastic Container Instanceを作成する際に、インスタンスまたはインスタンス内のコンテナのvCPU数とメモリサイズを指定できます。指定したvCPU数またはメモリサイズがElastic Container Instanceでサポートされていない場合、システムはElastic Container Instanceでサポートされている仕様に基づいて数またはサイズを調整します。システムが数またはサイズを調整する場合、システムはElastic Container Instanceでサポートされている最も近い仕様を選択してインスタンスを作成します。システムによって選択された仕様は、インスタンスに指定した仕様以上になります。たとえば、中国(杭州)リージョンでElastic Container Instanceを作成するときに7 vCPUと13 GiBのメモリを指定した場合、システムは8 vCPUと14 GiBのメモリを含むインスタンスを作成します。
次の表は、Elastic Container Instanceでサポートされている仕様を示しています。
vCPU数とメモリサイズを指定しない場合、システムはデフォルトで2 vCPUと4 GiBのメモリを使用してElastic Container Instanceを作成します。
各Elastic Container Instanceには、1つのElastic Network Interface (ENI)のみをバインドできます。
すべての仕様のデフォルトの一時ストレージ容量は30 GiBです。
構成の説明
次のいずれかの方法を使用して、vCPU数とメモリサイズを指定してポッドを作成できます。
limitsまたはrequestsパラメーターを使用して、ポッド内の各コンテナのvCPU数とメモリサイズを指定します。limitsパラメーターを使用することをお勧めします。
アノテーション
k8s.aliyun.com/eci-use-specsをポッドのメタデータセクションに追加して、ポッドのvCPU数とメモリサイズを指定します。
limits、requests、またはeci-use-specsパラメーターを指定しない場合、またはこれらすべてのパラメーターを指定した場合は、システムは対応するポッド仕様に基づいてポッドを作成します。
シナリオ | ポッド仕様 |
limits、requests、およびeci-use-specsが指定されていない | システムは2 vCPUと4 GiBのメモリを使用してポッドを作成します。 |
limitsのみが指定されている | システムはすべてのコンテナのlimitsパラメーターの値を合計してポッドを作成します。 |
requestsのみが指定されている | システムはすべてのコンテナのrequestsパラメーターの値を合計してポッドを作成します。 |
limitsとrequestsの両方が指定されている | システムはすべてのコンテナのlimitsパラメーターの値を合計してポッドを作成します。すべてのコンテナのrequestsパラメーターは無視されます。 |
eci-use-specsのみが指定されている | システムはeci-use-specsパラメーターの値に基づいてポッドを作成します。 |
limitsとeci-use-specsが指定されている、またはrequestsとeci-use-specsが指定されている | システムはeci-use-specsパラメーターの値に基づいてポッドを作成します。 |
すべてのコンテナのlimitsまたはrequestsパラメーターの値の合計、またはeci-use-specsパラメーターの値がElastic Container Instanceでサポートされていない場合、システムはポッド仕様を調整し、新しい仕様に基づいて課金されます。
ポッド内のコンテナのvCPU数とメモリサイズを指定する
この方法は、Kubernetesでポッドを作成するデフォルトの方法です。各ポッドには最大20個のコンテナを作成でき、各コンテナのvCPUとメモリの仕様を構成できます。各ポッドについて、すべてのコンテナのvCPUとメモリの仕様の合計は、ポッドのvCPUとメモリの仕様以下である必要があります。
Elastic Container Instanceでは、特定のコンテナ(サイドカーコンテナなど)の環境変数を設定して、システムがリソースを調整する際にコンテナを無視することができます。これにより、リソースの無駄を防ぎます。詳細については、システムがリソースを調整する際に特定のコンテナを無視するを参照してください。
コンテナのlimitsパラメーターでvCPU数とメモリサイズを指定できます。設定例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: test
labels:
app: nginx
alibabacloud.com/eci: "true"
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
resources:
limits:
cpu: "500m" #nginxという名前のコンテナに0.5 vCPUを指定します。
memory: "1024Mi" #nginxという名前のコンテナに1 GiBのメモリを指定します。
- name: busybox
image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
command: ["sleep"]
args: ["999999"]
resources:
limits:
cpu: "1000m" #busyboxという名前のコンテナに1 vCPUを指定します。
memory: "2048Mi" #busyboxという名前のコンテナに2 GiBのメモリを指定します。ポッドのvCPU数とメモリサイズを指定する
システムは複数のECSインスタンスタイプを提供し、適切なインスタンスタイプを選択して、弾力性とリソースのプロビジョニングを向上させます。
インスタンスファミリに特別な要件がある場合、たとえば、第6世代のECSインスタンスファミリのみを使用する場合、アノテーションを追加してECSインスタンスファミリの世代を指定できます。詳細については、ポッドを作成するためにECSインスタンスファミリの世代を指定するを参照してください。
この方法には、次の利点があります。
ポッド内のコンテナのvCPU数、メモリサイズ、またはリソース制限を指定する必要はありません。これにより、コンテナはリソースをより柔軟に共有できます。
遺伝的計算とIstioのシナリオでは、サービスフレームワークはポッドにサイドカーコンテナを自動的にデプロイします。ポッドのvCPU数とメモリサイズを指定することで、Elastic Container Instanceをサービスフレームワークにシームレスに接続できます。
ポッドの構成ファイルのメタデータにアノテーションを追加して、ポッドのvCPU数とメモリサイズを指定できます。設定例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-use-specs : "2-4Gi" # ポッドに2 vCPUと4 GiBのメモリを指定します。
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
- name: busybox
image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
command: ["sleep"]
args: ["999999"]
resources:
limits:
cpu: "500m" #コンテナのvCPUの最大数を指定します。
memory: "1024Mi" #コンテナのメモリの最大サイズを指定します。