一、概述
除了 EIP 方案,你还可以使用 tke-extend-network-controller 插件的方案,这篇会介绍如何使用 tke-extend-network-controller 插件来实现为每个 Pod 的指定端口都分配一个独立的公网地址映射(公网 IP:Port 到内网 Pod IP:Port 的映射)。
注意:说明:
注意:tke-extend-network-controller 的代码是开源的,源码托管在 GitHub:tke-extend-network-controller。
二、前提条件
安装 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
在 TKE 应用市场 的网络分类中找到 tke-extend-network-controller,编辑 values.yaml,根据需求进行配置,以下几个参数是必填的:
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 映射公网地址
参考 使用 CLB 端口池为 Pod 映射公网地址。