全部产品
Search
文档中心

弹性容器实例:配置ECI Pod在ClusterIP同步后再创建

更新时间:Dec 29, 2023

由于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