このトピックでは、Kubernetesシナリオにおいて、一時ストレージ容量が不足しているPodを自動的に削除する方法について説明します。これにより、ビジネス運用に必要な一時ストレージ容量を確保できます。
構成の説明
デフォルトでは、Elastic Container InstanceベースのPodの一時ストレージ容量が不足している場合、システムはこの状況を処理しません。Podの一時ストレージ容量の不足は、ビジネスの運用に影響を与える可能性があります。Elastic Container Instanceでは、Kubernetesの削除およびスケジューリングメカニズムに基づいて、k8s.aliyun.com/eci-eviction-enable: "true" アノテーションを追加できます。Podの一時ストレージ容量が100 MiB未満の場合、システムはPodを自動的に削除します。PodのステータスはFailedに変わります。
アノテーションは、Podの構成ファイルのメタデータに追加する必要があります。たとえば、Deploymentを作成する場合、spec.template.metadataセクションにアノテーションを追加する必要があります。
Elastic Container Instanceの機能を使用するには、Elastic Container InstanceベースのPodを作成するときにのみアノテーションを追加できます。Podの更新時にアノテーションを追加または変更しても、これらのアノテーションは有効になりません。
通常、ビジネスアプリケーションはDeploymentにデプロイされます。削除されるPodがDeploymentによって管理されている場合、Deploymentは次の図に示すように、新しいPodを自動的に作成します。
構成例
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: nginx
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
annotations:
k8s.aliyun.com/eci-eviction-enable: "true" # 一時ストレージ容量が不足しているPodを自動的に削除することを指定します。
labels:
app: nginx
alibabacloud.com/eci: "true"
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2