デフォルトでは、システムはエラスティックコンテナインスタンス (ポッド) に30 GiBの一時ストレージスペースを無料で提供します。 一時ストレージスペースのサイズが要件を満たさない場合は、一時ストレージスペースをスケールアップできます。
背景情報
デフォルトでは、次の図に示すように、各エラスティックコンテナインスタンスは30 GiBの一時ストレージスペースを無料で提供します。
エラスティックコンテナインスタンスの起動に使用されるコンテナイメージは、30 GiBの空き一時ストレージ領域を占有します。 コンテナイメージが占有する必要がある空間のサイズは、コンテナイメージのサイズの少なくとも2倍であり、イメージの圧縮率によって決定される。
30 GiBを超えるストレージスペースが必要な場合は、一時的なストレージスペースをスケールアップできます。 容量と使用期間に基づいて、増加した一時ストレージスペースに対して課金されます。 詳細については、「一時記憶域の課金」をご参照ください。
設定の説明
Kubernetesが関与するシナリオでは、次の方法を使用して、ポッドの一時ストレージスペースをスケールアップできます。
メソッド1には限界構文があります。 一時記憶領域のスケールアップ容量は、e k8s.aliyun.com/eci-extra-ephemeral-storageアノテーションに指定した値と同じです。
方法2は、要求構文を有する。 一時記憶領域のスケールアップ容量は、イメージキャッシュのタイプによって、リソース要求で指定した値と異なる場合があります。 詳細については、「イメージキャッシュのタイプと一時記憶領域の容量の関係」をご参照ください。
メソッドの構文の違い:
両方のメソッドを使用する場合、メソッドで設定された大きい方の値が有効になります。
方法1: 注釈の追加
ポッドにk8s.aliyun.com/eci-extra-ephemeral-storage
注釈を追加して、ポッドの一時記憶域を拡大できます。 注釈の値は、スケールアップされた容量に等しい。
ポッドの構成ファイルのメタデータに注釈を追加する必要があります。 たとえば、配置を作成するときは、spec.template.metadataセクションに注釈を追加する必要があります。
Elastic Container Instanceの機能を使用するには、Elastic Container Instanceベースのポッドを作成する場合にのみアノテーションを追加できます。 ポッドを更新するときにアノテーションを追加または変更しても、これらのアノテーションは有効になりません。
方法2: リソース要求の使用
一時記憶域の容量は、リソース要求のエフェメラル・ストレージ・フィールドで指定できます。 指定した容量が30 GiBを超える場合にのみ、一時的なストレージスペースがスケールアップされます。 スケールアップされる容量は、指定した容量から30 GiBを差し引いたものに等しくなります。
設定例
YAMLファイルを準備します。
たとえば、ポッドを作成するときに一時的なストレージスペースの容量を20 GiBスケールアップする場合などです。 YAMLファイルの名前はextra-storage.yamlです。 次のコードは、YAMLファイルの例を示しています。
例1: 注釈を追加する
apiVersion: v1 kind: Pod metadata: name: test annotations: k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi" # Specifies the capacity that you want to scale up for the temporary storage space. spec: containers: - name: nginx image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2 imagePullPolicy: IfNotPresent restartPolicy: Always
例2: コンテナーのリソースを設定する
apiVersion: v1 kind: Pod metadata: name: test spec: containers: - name: nginx image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2 imagePullPolicy: IfNotPresent resources: requests: ephemeral-storage: 50Gi # Specifies the total capacity of the temporary storage space, which is the sum of the 30 GiB of default capacity and the capacity that you want to scale up. restartPolicy: Always
ポッドを作成します。
kubectl apply -f extra-storage.yaml
一時保存スペースが有効かどうかを確認します。
一時ストレージスペースのスケールアップ容量を確認します。
kubectl describe pod test | grep k8s.aliyun.com/eci-extra-ephemeral-storage
次の出力は、一時記憶領域の容量が20 GiBでスケールアップされたことを示しています。
k8s.aliyun.com/eci-extra-ephemeral-storage: 20Gi
execコマンドを実行してコンテナにログインし、df -hコマンドを実行して、コンテナのファイルシステムパーティションがスケールアップされているかどうかを確認します。
kubectl exec -it test -- sh
df -h
次の出力では、overlayパラメーターは、合計50 GiBのストレージスペースが使用可能であることを示します。 スケールアップされた容量は、合計50 GiBの容量からデフォルトのストレージスペースの30 GiBの容量を差し引いたものに等しくなります。
Filesystem Size Used Avail Use% Mounted on overlay 50G 2.1G 48G 5% / tmpfs 64M 0 64M 0% /dev tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/vda4 50G 2.1G 48G 5% /etc/hosts shm 64M 0 64M 0% /dev/shm tmpfs 4.0G 12K 4.0G 1% /run/secrets/kubernetes.io/serviceaccount tmpfs 1.9G 0 1.9G 0% /proc/acpi tmpfs 1.9G 0 1.9G 0% /sys/firmware
イメージキャッシュのタイプと一時記憶領域の容量の関係
システムによって生成される一時記憶領域の容量は、イメージキャッシュの種類によって異なる。
エラスティックコンテナインスタンスが自動イメージキャッシュに基づいて作成されている場合、インスタンスの一時記憶領域はシステムディスクに配置されます。 この場合、システムディスクパーティション (/dev/vda5) の容量は、一時記憶領域の容量に等しくなります。 詳細は以下の図をご参照ください。
エラスティックコンテナインスタンスが手動イメージキャッシュに基づいて作成されている場合、インスタンスの一時記憶領域はデータディスク上にあります。 この場合、システムディスクパーティション (/dev/vda5) の容量はデフォルトの30 GiBのままで、使用されません。 詳細は以下の図をご参照ください。