本文主要为您介绍如何在Serverless Kubernetes或虚拟节点中给Pod挂载EIP。

背景信息

阿里云Serverless Kubernetes服务、虚拟节点推出Pod挂载弹性公网IP功能,此功能使某些Serverless容器应用的部署和服务访问变得更加简单和便利。
  • 无需创建VPC NAT网关即可让单个Pod访问公网。
  • 无需创建Service也可让单个Pod暴露公网服务。
  • 可以更加灵活而且动态的绑定Pod和EIP。

前提条件

操作步骤

您可以通过以下两种方法给Pod挂载弹性公网IP。

方法一:自动分配弹性公网EIP

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击Serverless集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,单击工作负载
  5. 单击无状态页签,然后单击使用模板创建,选择示例模板或自定义,然后单击创建
    您可以使用如下YAML示例模板创建Pod。本例中,通过指定k8s.aliyun.com/eci-with-eiptrue,Serverless Kubernetes服务和虚拟节点会自动为此Pod分配一个EIP,并且绑定到Pod上。
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      annotations:
        "k8s.aliyun.com/eci-with-eip": "true"
    spec:
      containers:
      - image: registry-vpc.cn-hangzhou.aliyuncs.com/jovi/nginx:alpine
        imagePullPolicy: Always
        name: nginx
        ports:
        - containerPort: 80
          name: http
          protocol: TCP
      restartPolicy: OnFailure
    说明
    • 您可以通过Annotation k8s.aliyun.com/eip-bandwidth指定EIP的带宽,默认值为5,单位为M。
    • 您也可以通过Annotation k8s.aliyun.com/eip-common-bandwith-package-id让EIP绑定共享带宽。
    • 如果您创建的是Deployment,那么Deployment中的每一个Pod都将会被挂载不同的EIP,请谨慎使用此操作。
  6. 单击容器组页签,查看容器组的状态。
  7. 在目标容器组右侧单击编辑,弹出编辑YAML文件。
    说明 YAML文件中k8s.aliyun.com/allocated-eipAddress: 47.110.XX.XX的IP地址即为EIP的公网访问地址。
  8. 在浏览器中输入http://ip地址,您可访问nginx欢迎页。

    此处的http://ip地址为YAML文件中k8s.aliyun.com/allocated-eipAddress: 47.110.XX.XX的IP地址。

    nginx欢迎页
    说明 此方式中EIP为动态分配,其生命周期与Pod相同,当删除Pod时,动态分配的EIP也会一并删除。

方法二:指定弹性公网IP实例ID

  1. 登录VPC管理控制台,购买弹性公网IP。请参见申请新EIP
    说明 申请的EIP和集群必须在同一区域。
  2. 登录容器服务管理控制台
  3. 在控制台左侧导航栏中,单击Serverless集群
  4. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  5. 在集群管理页左侧导航栏中,单击工作负载
  6. 单击无状态页签,然后单击使用模板创建,选择示例模板或自定义,然后单击创建

    您可以使用如下YAML示例模板创建Pod。本例中,通过指定Pod的Annonation k8s.aliyun.com/eci-eip-instanceid为EIP实例ID。

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      annotations:
        "k8s.aliyun.com/eci-eip-instanceid": "<youreipInstanceId>"
    spec:
      containers:
      - image: registry-vpc.cn-hangzhou.aliyuncs.com/jovi/nginx:alpine
        imagePullPolicy: Always
        name: nginx
        ports:
        - containerPort: 80
          name: http
          protocol: TCP
      restartPolicy: OnFailure
    说明 <youreipInstanceId>需要替换成步骤1中获取的EIP实例ID。
  7. 单击容器组页签,查看容器组的状态。
  8. 在浏览器中输入http://ip地址,您可访问nginx欢迎页。
    nginx欢迎页
    说明 此处的http://ip地址为步骤1中申请的EIP的IP地址