最近更新时间: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加入,完成授权
查看效果
$:~# kubectl get pod demo-6f5557486-cztw2 -o jsonpath='{.metadata.annotations.k8s\.ksyun\.com/allocated-eipAddress}'
120.92.211.18创建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-schedulerEIP部分字段说明如下:
给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 仅支持工作负载类型为StatefulSet。
创建Statefulset类型工作负载,在部署配置步骤中点击”展开高级配置“,网络模式选中”VPC-CNI“模式,开启 Pod 绑定 EIP
2.点击更改EIP配置,进行 EIP配置
3.开启固定 Pod EIP,配置 EIP 回收策略
参数 | 说明 |
|---|---|
EIP回收策略 |
|
验证效果
#检查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
纯净模式
