容器服务 固定 IP 使用方法

适用于依赖容器固定 IP 的场景。例如,传统架构迁移到容器平台及针对 IP 做安全策略限制。对 IP 无限制的业务不推荐你使用固定 IP 模式。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

一、能力和限制

·支持 Pod 销毁 IP 保留,Pod 迁移 IP 不变,从而实现固定 IP。

·支持多子网,但不支持跨子网调度固定 IP 的 Pod,因此固定 IP 的 Pod 不支持跨可用区调度。

·固定 IP 的 Pod 销毁后,其 IP 只在本集群范围内保留。

·固定 IP 的 Pod 支持在普通节点、原生节点和超级节点间任意迁移,且能保持 IP 不变。

·VPC-CNI 网络模式集群创建之后,暂不支持修改开启/关闭固定 IP 模式。

·GlobalRouter 模式集群需先关闭当前 VPC-CNI 模式,再打开实现固定 IP 模式的变更。

二、使用方法

你可以通过以下步骤使用固定 IP:

1. 为集群开启固定 IP 模式。

2. 创建固定 Pod IP 类型工作负载。

三、为集群开启固定 IP 模式

你可以通过以下两种方式为集群开启固定 IP 模式:

·创建集群选择固定 IP 模式的 VPC-CNI。

·为 GlobalRouter 模式附加固定 IP VPC-CNI 模式。

四、创建集群选择固定 IP 模式的 VPC-CNI

注意:说明:

注意:使用此方式启用 VPC-CNI,通过控制台或通过 YAML 创建工作负载,Pod 均默认使用弹性网卡。

1. 登录 容器服务控制台,单击左侧导航栏中集群。

2. 在集群管理页面,单击集群列表上方的新建。

3. 在创建集群 > 网络配置页面,选择容器网络插件为 VPC-CNI,并勾选“开启支持”固定 Pod IP。

五、为 GlobalRouter 模式附加固定 IP VPC-CNI 模式

注意:说明:

1. 登录 容器服务控制台,单击左侧导航栏中集群。

2. 在集群管理页面,选择需开启 VPC-CNI 的集群 ID,进入集群详情页。

3. 在集群详情页面,选择左侧基本信息。在节点和网络信息模块中,找到 VPC-CNI 字段,单击开启。

4. 在弹出窗口中勾选“开启支持”固定 Pod IP,确认 IP 回收策略,并选择子网。如下:


5. 单击提交,即可完成为已有集群开启 VPC-CNI。

六、创建固定 Pod IP 类型工作负载

集群开启固定 IP 模式后,如果你存在业务需要在容器服务 TKE 中部署,并存在固定 Pod IP 的需求,你需要使用 Pod 重建名称不变的工作负载,常见的为 Kubernetes 原生提供的 StatefulSets。TKE 提供扩展 StatefulSet 固定 IP 的能力,该类型的 StatefulSet 创建的 Pod 将通过弹性网卡分配真实的 VPC 内的 IP 地址。容器服务 TKE VPC-CNI 的插件负责 IP 分配,当 Pod 重启或迁移,可实现 IP 地址不变。

你可以通过创建固定 IP 类型 StatefulSet 来满足以下场景:

·通过来源 IP 授权。

·基于 IP 做流程审核。

·基于 Pod IP 做日志查询等。

注意:固定 IP 类型 StatefulSet 存在使用限制,仅支持 StatefulSet 生命周期内固定 IP。

你可通过以下两种方法创建固定 IP:

通过控制台通过 Yaml

1. 登录 容器服务控制台,单击左侧导航栏中集群。

2. 选择需要使用固定 IP 模式的集群 ID 名称,进入该集群的管理页面。

3. 选择工作负载 > StatefulSet,进入 StatefulSet 的集群管理页面。

4. 单击新建。在新建 StatefulSet 中勾选网络模式 > 使用 VPC-CNI 模式,并开启固定 Pod IP。如下:

·IP 地址范围:目前仅支持随机。

·固定 Pod IP:选择开启。

apiVersion: apps/v1kind: StatefulSetmetadata: labels: k8s-app: busybox name: busybox namespace: defaultspec: replicas: 3 selector: matchLabels: k8s-app: busybox qcloud-app: busybox serviceName: "" template: metadata: annotations: tke.cloud.tencent.com/networks: "tke-route-eni" tke.cloud.tencent.com/vpc-ip-claim-delete-policy: Never creationTimestamp: null labels: k8s-app: busybox qcloud-app: busybox spec: containers: – args: – "10000000000" command: – sleep image: busybox imagePullPolicy: Always name: busybox resources: limits: tke.cloud.tencent.com/eni-ip: "1" requests: tke.cloud.tencent.com/eni-ip: "1"

·spec.template.annotations:tke.cloud.tencent.com/networks: "tke-route-eni" 表明 Pod 使用共享网卡的 VPC-CNI 模式,如果使用的是独立网卡的 VPC-CNI 模式,请将值修改成"tke-direct-eni"。该注解仅在 GlobalRouter 附加固定 IP VPC-CNI 模式的集群中需要添加,创建集群时就选择 VPC-CNI 模式的集群中无需添加。

·spec.template.annotations:创建 VPC-CNI 模式的 Pod,你需要设置 annotations,即 tke.cloud.tencent.com/vpc-ip-claim-delete-policy,默认是 “Immediate”,Pod 销毁后,关联的 IP 同时被销毁。如需固定 IP,则需设置成 “Never”,Pod 销毁后 IP 也将会保留,那么下一次同名的 Pod 拉起后,会使用之前的 IP。

·spec.template.spec.containers.0.resources:创建共享网卡的 VPC-CNI 模式的 Pod,需要添加 requests 和 limits 限制,即 tke.cloud.tencent.com/eni-ip。如果是独立网卡的 VPC-CNI 模式,则添加 tke.cloud.tencent.com/direct-eni。该资源只需给 Pod 的第一个容器添加即可,其他容器无需添加。此外,该资源默认情况下会自动添加,你只需声明tke.cloud.tencent.com/networks注解即可。

赞 (0)
上一篇 4天前
下一篇 4天前