全部產品
Search
文件中心

Elastic Container Instance:配置ECI Pod在ClusterIP同步後再建立

更新時間:Jul 06, 2024

由於ECI Pod和負責同步Service的組件是並行啟動啟動並執行,當叢集中存在大量Service和Endpoint時,可能會出現因ClusterIp未同步而導致Pod訪問逾時的情況。本文介紹如何配置ECI Pod在ClusterIP同步後再建立,確保Pod中的容器在訪問Service時,不會因為ClusterIp還未同步而導致訪問逾時。

功能說明

在ACK+ECI的情境下,ECI Pod和負責同步Service的組件是並行啟動啟動並執行。當叢集中存在大量Service和Endpoint時,同步Service需要一定時間。此時,如果Pod中的容器訪問了未同步ClusterIp的Service,則會造成訪問逾時。

例如:在Spark等巨量資料情境下,Pod建立後需要立即訪問Driver或者其他服務的Service,如果此時CoreDNS的ClusterIp未同步完成,那麼就會造成Pod訪問逾時而導致任務結束。

針對上述問題,ECI支援了等待ClusterIP同步完成後再開始建立Pod的功能,以此來確保Pod中的容器在訪問Service時,不會因為ClusterIp還未同步而導致訪問逾時。

重要

啟用此功能時,如果叢集中的Service和Endpoint規模較大,會影響Pod的啟動時間。

配置說明

您可以在Pod metadata中添加Annotation來配置ECI Pod在ClusterIP同步後再開始建立,對應的Annotation為k8s.aliyun.com/eci-wait-clusterip-ready。取值為*時表示等待ClusterIP同步完成再開始建立Pod。

重要
  • Annotation請添加在Pod的metadata下,例如:建立Deployment時,Annotation需添加在spec>template>metadata下。

  • 僅支援在建立ECI Pod時添加ECI相關Annotation來生效ECI功能,更新ECI Pod時添加或者修改ECI相關Annotation均不會生效。

配置樣本

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
      annotations:
        k8s.aliyun.com/eci-wait-clusterip-ready: "*"  # 等待ClusterIP同步完成再啟動Pod
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80