概述
在房间类游戏中,每个房间通常需要独立的公网地址。TKE 集群默认只支持 EIP 方案,但 EIP 资源有限,存在申请的数量限制和每日申请的次数限制(详情请参见 EIP 配额限制),在规模较大或频繁扩缩容的情况下,可能会触达限制导致 EIP 分配失败。而如果保留 EIP,在 EIP 没被绑定前,又会产生额外的闲置费。
除了 EIP 方案,您还可以使用
tke-extend-network-controller
插件的方案,本文将介绍如何使用 tke-extend-network-controller
插件来实现为每个 Pod 的指定端口都分配一个独立的公网地址映射(公网 IP:Port
到内网 Pod IP:Port
的映射)。说明:
前提条件
安装
tke-extend-network-controller
前请确保满足以下前提条件:1. 确保腾讯云账号是带宽上移账号,参考 账户类型说明 进行判断或升级账号类型(如果账号创建的时间很早,有可能是传统账号)。
2. 创建了 TKE 集群,且集群版本大于等于 1.26。
3. 集群中安装了 cert-manager (webhook 依赖证书),可通过 TKE 应用市场 安装。
4. 需要一个腾讯云子账号的访问密钥(SecretID、SecretKey),参考子账号访问密钥管理,要求账号至少具有以下权限:
{"version": "2.0","statement": [{"effect": "allow","action": ["clb:CreateLoadBalancer","clb:DeleteLoadBalancer","clb:DescribeLoadBalancers","clb:CreateListener","clb:DeleteListener","clb:DeleteLoadBalancerListeners","clb:DescribeListeners","clb:RegisterTargets","clb:BatchRegisterTargets","clb:DeregisterTargets","clb:BatchDeregisterTargets","clb:DescribeTargets","clb:DescribeQuota","clb:DescribeTaskStatus","vpc:DescribeAddresses"],"resource": ["*"]}]}
操作步骤
安装 tke-extend-network-controller
vpcID: "" # TKE 集群所在 VPC ID (vpc-xxx)region: "" # TKE 集群所在地域,如 ap-guangzhouclusterID: "" # TKE 集群 ID (cls-xxx)secretID: "" # 腾讯云子账号的 SecretIDsecretKey: "" # 腾讯云子账号的 SecretKey
配置完成后单击完成即可安装到集群。
另外您也可以通过 helm 安装:
helm repo add tke-extend-network-controller https://tkestack.github.io/tke-extend-network-controllerhelm upgrade --install -f values.yaml \\--namespace tke-extend-network-controller --create-namespace \\tke-extend-network-controller tke-extend-network-controller/tke-extend-network-controller
确保 Pod 调度到原生节点或超级节点
要使用 CLB 为 Pod 分配公网地址映射,需保证承载游戏房间的 Pod 调度到原生节点或超级节点上。如果 Pod 在普通节点(CVM),将不会为该 Pod 分配 CLB 公网地址映射。
使用 CLB 端口池为 Pod 映射公网地址