Skip to content

Commit

Permalink
add docs for okg v0.10.0
Browse files Browse the repository at this point in the history
Signed-off-by: ChrisLiu <[email protected]>
  • Loading branch information
chrisliu1995 committed Jan 10, 2025
1 parent 3398a74 commit bc9f3df
Show file tree
Hide file tree
Showing 41 changed files with 6,786 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ $ helm install kruise openkruise/kruise --version 1.7.0
### 安装Kruise-Game

```shell
$ helm install kruise-game openkruise/kruise-game --version 0.9.0
$ helm install kruise-game openkruise/kruise-game --version 0.10.0
```

### 升级 Kruise-Game

```shell
$ helm upgrade kruise-game openkruise/kruise-game --version 0.9.0 [--force]
$ helm upgrade kruise-game openkruise/kruise-game --version 0.10.0 [--force]
```

### 可选项
Expand All @@ -49,7 +49,7 @@ $ helm upgrade kruise-game openkruise/kruise-game --version 0.9.0 [--force]
| `kruiseGame.apiServerQpsBurst` | kruise-game-controller-manager 每秒发送到 API server的最大突发查询数 | `10` |
| `replicaCount` | kruise-game 的期望副本数 | `1` |
| `image.repository` | kruise-game 的镜像仓库 | `openkruise/kruise-game-manager` |
| `image.tag` | kruise-game 的镜像版本 | `v0.9.0` |
| `image.tag` | kruise-game 的镜像版本 | `v0.10.0` |
| `image.pullPolicy` | kruise-game 的镜像拉取策略 | `Always` |
| `serviceAccount.annotations` | kruise-game的serviceAccount注解 | ` ` |
| `resources.limits.cpu` | kruise-game容器的CPU资源限制 | `500m` |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,63 @@ minecraft-1 Ready None 0 0
minecraft-2 Ready None 0 0
```

#### 设置opsState为None的游戏服的最大个数

OKG支持设置游戏服最大数目。在当前所有opsState为None的游戏服数量大于设置的值时,OKG将减少Replicas,使opsState为None的游戏服数量满足设置的最大个数。

考虑GameServer空闲后再被复用的情况,此时opsState只存在两种状态:None 和 Allocated. None 代表游戏服空闲,Allocated 代表游戏服正在被使用。
而游戏服的水平伸缩将完全根据 minAvailable 和 maxAvailable 参数进行控制。当None的数量小于minAvailable时,OKG将进行自动扩容,当None的数量大于maxAvailable时,OKG将进行自动缩容。

maxAvailable 参数配置方式如下:

```yaml
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: minecraft #填写对应GameServerSet的名称
spec:
scaleTargetRef:
name: minecraft #填写对应GameServerSet的名称
apiVersion: game.kruise.io/v1alpha1
kind: GameServerSet
pollingInterval: 30
minReplicaCount: 0
advanced:
horizontalPodAutoscalerConfig:
behavior: #继承HPA策略,可参考文档 https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale/#configurable-scaling-behavior
scaleDown:
stabilizationWindowSeconds: 30 #设置缩容稳定窗口时间为30秒
policies:
- type: Percent
value: 100
periodSeconds: 15
triggers:
- type: external
metricType: AverageValue
metadata:
maxAvailable: "3" # 设置opsState为None的游戏服的最大个数
scalerAddress: kruise-game-external-scaler.kruise-game-system:6000
```
初始部署replicas为4的GameServerSet,经过KEDA探测周期后,马上缩容一个游戏服。此时opsState为None的游戏服数量不大于设置的maxAvailable值,完成了自动缩容。
```bash
kubectl get gs
NAME STATE OPSSTATE DP UP AGE
minecraft-0 Ready None 0 0 10s
minecraft-1 Ready None 0 0 10s
minecraft-2 Ready None 0 0 10s
minecraft-3 Ready None 0 0 10s

# After a while

kubectl get gs
NAME STATE OPSSTATE DP UP AGE
minecraft-0 Ready None 0 0 50s
minecraft-1 Ready None 0 0 50s
minecraft-2 Ready None 0 0 50s
```

### 自动扩容

除了设置自动缩容策略,也可以设置自动扩容策略。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ OKG 会集成不同云提供商的不同网络插件,用户可通过GameServer
- AlibabaCloud-EIP
- AlibabaCloud-SLB-SharedPort
- AlibabaCloud-NLB-SharedPort
- AlibabaCloud-Multi-NLBs
- Volcengine-CLB
- AmazonWebServices-NLB
- TencentCloud-CLB
Expand Down Expand Up @@ -1069,6 +1070,179 @@ nlb-26jbknebrjlejt5abu 192.168.0.8:80,192.168.0.82:80,192.168.63.228:80

---

### AlibabaCloud-Multi-NLBs
#### 插件名称
`AlibabaCloud-Multi-NLBs`

#### Cloud Provider
AlibabaCloud

#### 插件说明

在游戏场景,往往有多线接入的需求,即通过两个或两个以上的运营商带宽接入,实现玩家跨运营商快速访问游戏服的目的。
此时,单个游戏服需要多个接入端点,每个接入端点绑定独立运营商的公网IP。

#### 网络参数

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,...(协议需大写)。支持协议如下:TCP、UDP、TCPUDP(表示同时使用TCP与UDP)。
- 是否支持变更:支持

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”
- 是否支持变更:支持

#### 插件配置

复用nlb的参数配置,默认为:

```
[alibabacloud.nlb]
max_port = 1502
min_port = 1000
block_ports = [1025, 1434, 1068]
```
#### 示例说明
部署的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/TCPUDP" #支持TCP 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-udp"
port: 1047
protocol: UDP
- 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-tcp"
port: 1047
protocol: TCP
internalAddresses:
- ip: 172.16.0.1
ports:
- name: "8888-udp"
port: 8888
protocol: UDP
- name: "8888-tcp"
port: 8888
protocol: TCP
lastTransitionTime: "2024-10-28T12:41:56Z"
networkType: AlibabaCloud-Multi-NLBs
```
---
### Volcengine-CLB
#### 插件名称
Expand Down
Loading

0 comments on commit bc9f3df

Please sign in to comment.