We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在游戏场景,往往有多线接入的需求,即通过两个或两个以上的运营商带宽接入,实现玩家跨运营商快速访问游戏服的目的。
此时,单个游戏服需要多个接入端点,每个接入端点绑定独立运营商的公网IP。
AlibabaCloud-Multi-NLBs
NlbIdNames
含义:填写nlb的id以及对应名称。可填写多个。 填写格式:{nlb-id-0}/{name-0},{nlb-id-1}/{name-1}。例如:nlb-ji8l844c0qzii1x6mc/DianXin,nlb-26jbknebrjlejt5abu/LianTong,... 是否支持变更:不支持
PortProtocols
含义:pod暴露的端口及协议,支持填写多个端口/协议 格式:port1/protocol1,port2/protocol2,...(协议需大写) 是否支持变更:支持
Fixed
含义:是否固定访问IP/端口。若是,即使pod删除重建,网络内外映射关系不会改变 填写格式:false / true 是否支持变更:支持
AllowNotReadyContainers
含义:在容器原地升级时允许不断流的对应容器名称,可填写多个 格式:{containerName_0},{containerName_1},... 例如:sidecar 是否支持变更:在原地升级过程中不可变更。
LBHealthCheckFlag
含义:是否开启健康检查 格式:“on”代表开启,“off”代表关闭。默认为on 是否支持变更:支持
LBHealthCheckType
含义:健康检查协议 格式:填写 “tcp” 或者 “http”,默认为tcp 是否支持变更:支持
LBHealthCheckConnectPort
含义:健康检查的服务器端口。 格式:取值范围[0, 65535]。默认值为“0” 是否支持变更:支持
LBHealthCheckConnectTimeout
含义:健康检查响应的最大超时时间。 格式:单位:秒。取值范围[1, 300]。默认值为“5” 是否支持变更:支持
LBHealthyThreshold
含义:健康检查连续成功多少次后,将服务器的健康检查状态由失败判定为成功。 格式:取值范围[2, 10]。默认值为“2” 是否支持变更:支持
LBUnhealthyThreshold
含义:健康检查连续失败多少次后,将服务器的健康检查状态由成功判定为失败。 格式:取值范围[2, 10]。默认值为“2” 是否支持变更:支持
LBHealthCheckInterval
含义:健康检查的时间间隔。 格式:单位:秒。取值范围[1, 50]。默认值为“10” 是否支持变更:支持 LBHealthCheckUri
含义:健康检查类型为HTTP时对应的检查路径。 格式:长度为1~80个字符,只能使用字母、数字、字符。 必须以正斜线(/)开头。 是否支持变更:支持
LBHealthCheckDomain
含义:健康检查类型为HTTP时对应的域名。 格式:特定域名长度限制1~80个字符,只能使用小写字母、数字、短划线(-)、半角句号(.)。 是否支持变更:支持
LBHealthCheckMethod
含义:健康检查类型为HTTP时对应的方法。 格式:“GET” 或者 “HEAD” 是否支持变更:支持
部署的Gss:
cat <<EOF | kubectl apply -f - apiVersion: game.kruise.io/v1alpha1 kind: GameServerSet metadata: name: multi-nlbs namespace: default spec: replicas: 2 updateStrategy: rollingUpdate: podUpdatePolicy: InPlaceIfPossible network: networkConf: - name: NlbIdNames value: nlb-ji8l844c0qzii1x6mc/DianXin,nlb-26jbknebrjlejt5abu/LianTong,nlb-qi8lz598c0qzks1x6p2/YiDong - name: PortProtocols value: "8888/UDP" networkType: AlibabaCloud-Multi-NLBs gameServerTemplate: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/gs-demo/gameserver:network name: gameserver EOF
生成的GameServer:
networkStatus: createTime: "2024-10-28T12:41:56Z" currentNetworkState: Ready desiredNetworkState: Ready externalAddresses: - endPoint: nlb-xxx0.cn.nlb.aliyuncs.com/DianXin,nlb-xxx1.cn.nlb.aliyuncs.com/LianTong,nlb-xxx2.cn.nlb.aliyuncs.com/YiDong ip: "" ports: - name: "8888" port: 1047 protocol: UDP internalAddresses: - ip: 172.16.0.1 ports: - name: "8888" port: 8888 protocol: UDP lastTransitionTime: "2024-10-28T12:41:56Z" networkType: AlibabaCloud-Multi-NLBs
The text was updated successfully, but these errors were encountered:
当nlb实例监听数量将达上限,可再扩展在NlbIdNames结尾继续填入新的nlb id并关联上对应Name。要注意每个name的nlb数量需要相等,否则会报错,无法生效。如下示例,扩展后,DianXin、LianTong、YiDong的nlb数量都为2个。
cat <<EOF | kubectl apply -f - apiVersion: game.kruise.io/v1alpha1 kind: GameServerSet metadata: name: multi-nlbs namespace: default spec: replicas: 2 updateStrategy: rollingUpdate: podUpdatePolicy: InPlaceIfPossible network: networkConf: - name: NlbIdNames value: nlb-ji8l844c0qzii1x6mc/DianXin,nlb-26jbknebrjlejt5abu/LianTong,nlb-qi8lz598c0qzks1x6p2/YiDong,nlb-ji8l844c0qzii1x999/DianXin,nlb-26jbknebrjlejt5888/LianTong,nlb-qi8lz598c0qzks1x777/YiDong - name: PortProtocols value: "8888/UDP" networkType: AlibabaCloud-Multi-NLBs gameServerTemplate: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/gs-demo/gameserver:network name: gameserver EOF
Sorry, something went wrong.
No branches or pull requests
需求背景
在游戏场景,往往有多线接入的需求,即通过两个或两个以上的运营商带宽接入,实现玩家跨运营商快速访问游戏服的目的。
此时,单个游戏服需要多个接入端点,每个接入端点绑定独立运营商的公网IP。
设计
示意图
参数名称
AlibabaCloud-Multi-NLBs
参数设计
NlbIdNames
含义:填写nlb的id以及对应名称。可填写多个。
填写格式:{nlb-id-0}/{name-0},{nlb-id-1}/{name-1}。例如:nlb-ji8l844c0qzii1x6mc/DianXin,nlb-26jbknebrjlejt5abu/LianTong,...
是否支持变更:不支持
PortProtocols
含义:pod暴露的端口及协议,支持填写多个端口/协议
格式:port1/protocol1,port2/protocol2,...(协议需大写)
是否支持变更:支持
Fixed
含义:是否固定访问IP/端口。若是,即使pod删除重建,网络内外映射关系不会改变
填写格式:false / true
是否支持变更:支持
AllowNotReadyContainers
含义:在容器原地升级时允许不断流的对应容器名称,可填写多个
格式:{containerName_0},{containerName_1},... 例如:sidecar
是否支持变更:在原地升级过程中不可变更。
LBHealthCheckFlag
含义:是否开启健康检查
格式:“on”代表开启,“off”代表关闭。默认为on
是否支持变更:支持
LBHealthCheckType
含义:健康检查协议
格式:填写 “tcp” 或者 “http”,默认为tcp
是否支持变更:支持
LBHealthCheckConnectPort
含义:健康检查的服务器端口。
格式:取值范围[0, 65535]。默认值为“0”
是否支持变更:支持
LBHealthCheckConnectTimeout
含义:健康检查响应的最大超时时间。
格式:单位:秒。取值范围[1, 300]。默认值为“5”
是否支持变更:支持
LBHealthyThreshold
含义:健康检查连续成功多少次后,将服务器的健康检查状态由失败判定为成功。
格式:取值范围[2, 10]。默认值为“2”
是否支持变更:支持
LBUnhealthyThreshold
含义:健康检查连续失败多少次后,将服务器的健康检查状态由成功判定为失败。
格式:取值范围[2, 10]。默认值为“2”
是否支持变更:支持
LBHealthCheckInterval
含义:健康检查的时间间隔。
格式:单位:秒。取值范围[1, 50]。默认值为“10”
是否支持变更:支持
LBHealthCheckUri
含义:健康检查类型为HTTP时对应的检查路径。
格式:长度为1~80个字符,只能使用字母、数字、字符。 必须以正斜线(/)开头。
是否支持变更:支持
LBHealthCheckDomain
含义:健康检查类型为HTTP时对应的域名。
格式:特定域名长度限制1~80个字符,只能使用小写字母、数字、短划线(-)、半角句号(.)。
是否支持变更:支持
LBHealthCheckMethod
含义:健康检查类型为HTTP时对应的方法。
格式:“GET” 或者 “HEAD”
是否支持变更:支持
使用示例
部署的Gss:
生成的GameServer:
The text was updated successfully, but these errors were encountered: