全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

Pod绑定弹性公网IP

最近更新时间:2026-09-04 17:32:19

目前KCE支持在VPC-CNI模式下将Pod直接绑定弹性公网IP(EIP)。

能力与限制

  • 独占网卡、共享网卡模式下支持绑定EIP

  • 支持Deployment、Statefulset两种类型工作负载绑定EIP

前提条件

  • 在访问控制中给KsyunKCEDefaultRole授权EIP相关接口权限

  • 您已使用金山云容器服务服务创建一个正常运行的Kubernetes集群,关于如何创建集群,请参见创建集群

  • 您已经在集群中开启VPC-CNI网络模式,关于如何开启VPC-CNI网络模式,请参见配置VPC-CNI模式 。

在访问控制中给KsyunKCEDefaultRole授权EIP相关接口权限

  1. 登录访问控制,点击项目管理页签

  2. 点击指定项目的资源管理

  3. 进入成员管理中,点击添加成员,将KsyunKCEDefaultRole加入,完成授权

使用方式

通过控制台创建绑定EIP的Pod

  1. 创建Deployment类型工作负载,在部署配置中点击”展开高级配置“,选中”VPC-CNI“网络模式,在开启Pod绑定EIP,并填写EIP相关配置,完成Deployment创建。

  1. 查看效果

$:~# kubectl get pod demo-6f5557486-cztw2 -o jsonpath='{.metadata.annotations.k8s\.ksyun\.com/allocated-eipAddress}'
120.92.211.18

通过Yaml创建绑定EIP的Pod

  1. 创建Yaml文件,并通过Kubectl apply的方式创建Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    ksyun-app: demo
  name: demo
  namespace: default
spec:
  podManagementPolicy: OrderedReady
  replicas: 1
  selector:
    matchLabels:
      ksyun-app: demo
  serviceName: ""
  template:
    metadata:
      annotations:
        k8s.ksyun.com/eip-bandwidth: "1"
        k8s.ksyun.com/eip-charge-type: "Daily"
        k8s.ksyun.com/eip-line-name: "BGP"
        k8s.ksyun.com/eip-project-id: "0"
        k8s.ksyun.com/pod-eniip: "true"
        k8s.ksyun.com/pod-with-eip: "true"
        v1.multus-cni.io/default-network: "kube-system/vpc-cni"
      creationTimestamp: null
      labels:
        ksyun-app: sts-3
    spec:
      containers:
      - image: hub.kce.ksyun.com/xiangqian/nginx:1.22.0
        imagePullPolicy: Always
        name: nginx
        resources:
          limits:
            ksyun/eni-private-ip: "1"
          requests:
            ksyun/eni-private-ip: "1"
        securityContext:
          privileged: false
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: ksyunregistrykey
      restartPolicy: Always
      schedulerName: default-scheduler

EIP部分字段说明如下:

  • 给Pod分配EIP:在pod的annotations中添加 k8s.ksyun.com/pod-with-eip: "true"

  • 给EIP设置带宽:在pod的annotations中添加 k8s.ksyun.com/eip-bandwidth: "30"  ,单位为Mbps

  • 设置EIP计费模式在pod的annotations中添加k8s.ksyun.com/eip-charge-type: "DailyPaidByTransfer" ,支持计费模式包括"Monthly"、"Peak"、"Daily"、"TrafficMonthly"、"DailyPaidByTransfer"、"HourlyInstantSettlement" ;详情见EIP计费说明

    • 当计费模式为Monthly时,需提供购买时长在pod的annotations中添加k8s.ksyun.com/eip-purchase-time: "7" 

  • 设置EIP线路:在pod的annotations中添加 k8s.ksyun.com/eip-line-name: "BGP" ,若线路不存在,则eip创建失败,如果为空,则默认为BGP

  • 设置EIP所属项目:在pod的annotation中添加k8s.ksyun.com/eip-project-id: "0"

  • 给EIP设置Tag:在pod的annotation中添加k8s.ksyun.com/eip-tags: "xx=xx,xx1=xx1",支持设置多个tag中间以逗号分隔

通过控制台创建固定Pod EIP的Pod

固定 Pod EIP 仅支持工作负载类型为StatefulSet。

  1. 创建Statefulset类型工作负载,在部署配置步骤中点击”展开高级配置“,网络模式选中”VPC-CNI“模式,开启 Pod 绑定 EIP

2.点击更改EIP配置,进行 EIP配置

3.开启固定 Pod EIP,配置 EIP 回收策略

参数

说明

EIP回收策略

  • 默认为空为不回收EIP

  • 当集群删除时,按量付费EIP会被删除,包年包月EIP会进行解绑

  • 非空时,回收时间填写范围

    • 小时:1-24

    • 分钟:1-60

    • 秒:1-60

验证效果

#检查statefulset状态
$:~# kubectl get sts sts -owide
NAME   READY   AGE    CONTAINERS   IMAGES
sts         1/1        3m3s   sts                    nginx:latest
#查看 svc
$:~# kubectl get svc
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
sts          LoadBalancer   10.254.60.21   420.33.53.53   80:31202/TCP   3h39m
kubernetes   ClusterIP      10.254.0.1     <none>          443/TCP        9d
#查看pod eip
$:~# kubectl get svc sts
NAME   TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
sts   LoadBalancer   10.254.60.21   120.131.13.13   80:31202/TCP   3h35m
#删除pod sts-0
$:~# kubectl delete po sts-0
pod "sts-0" deleted
# pod重建后查看IP
$:~# kubectl get svc sts
NAME   TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
sts   LoadBalancer   10.254.60.21   120.131.13.13   80:31202/TCP   40s

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈