kruise-game/cloudprovider/volcengine/README.zh_CN.md

4.2 KiB
Raw Blame History

中文 | English

火山引擎容器服务支持在k8s中对CLB复用的机制不同的svc可以使用同一个CLB的不同端口。由此Volcengine-CLB network plugin将记录各CLB对应的端口分配情况对于指定了网络类型为Volcengine-CLBVolcengine-CLB网络插件将会自动分配一个端口并创建一个service对象待svc ingress字段的公网IP创建成功后GameServer的网络处于Ready状态该过程执行完成。 image

Volcengine-CLB 相关配置

plugin配置

[volcengine]
enable = true
[volcengine.clb]
#填写clb可使用的空闲端口段用于为pod分配外部接入端口范围最大为200
max_port = 700
min_port = 500

参数

ClbIds

  • 含义填写clb的id可填写多个需要现在【火山引擎】中创建好clb。
  • 填写格式各个clbId用,分割。例如clb-9zeo7prq1m25ctpfrw1m7,clb-bp1qz7h50yd3w58h2f8je,...
  • 是否支持变更:是

PortProtocols

  • 含义pod暴露的端口及协议支持填写多个端口/协议
  • 填写格式port1/protocol1,port2/protocol2,...(协议需大写)
  • 是否支持变更:是

Fixed

  • 含义是否固定访问IP/端口。若是即使pod删除重建网络内外映射关系不会改变
  • 填写格式false / true
  • 是否支持变更:是

AllocateLoadBalancerNodePorts

  • 含义生成的service是否分配nodeport, 仅在clb的直通模式passthrough才能设置为false
  • 填写格式true/false
  • 是否支持变更:是

AllowNotReadyContainers

  • 含义:在容器原地升级时允许不断流的对应容器名称,可填写多个
  • 填写格式:{containerName_0},{containerName_1},... 例如sidecar
  • 是否支持变更:在原地升级过程中不可变更

Annotations

  • 含义添加在service上的anno可填写多个
  • 填写格式key1:value1,key2:value2...
  • 是否支持变更:是

使用示例

cat <<EOF | kubectl apply -f -
apiVersion: game.kruise.io/v1alpha1
kind: GameServerSet
metadata:
  name: gss-2048-clb
  namespace: default
spec:
  replicas: 3
  updateStrategy:
    rollingUpdate:
      podUpdatePolicy: InPlaceIfPossible
  network:
    networkType: Volcengine-CLB
    networkConf:
      - name: ClbIds
        #Fill in Volcengine Cloud LoadBalancer Id here
        value: clb-xxxxx
      - name: PortProtocols
        #Fill in the exposed ports and their corresponding protocols here. 
        #If there are multiple ports, the format is as follows: {port1}/{protocol1},{port2}/{protocol2}...
        #If the protocol is not filled in, the default is TCP
        value: 80/TCP
      - name: AllocateLoadBalancerNodePorts
        # Whether the generated service is assigned nodeport.
        value: "true"
      - name: Fixed
        #Fill in here whether a fixed IP is required [optional] ; Default is false
        value: "false"
      - name: Annotations
        #Fill in the anno related to clb on the service
        #The format is as follows: {key1}:{value1},{key2}:{value2}...
        value: "key1:value1,key2:value2"
  gameServerTemplate:
    spec:
      containers:
        - image: cr-helm2-cn-beijing.cr.volces.com/kruise/2048:v1.0
          name: app-2048
          volumeMounts:
            - name: shared-dir
              mountPath: /var/www/html/js
        - image: cr-helm2-cn-beijing.cr.volces.com/kruise/2048-sidecar:v1.0
          name: sidecar
          args:
            - bash
            - -c
            - rsync -aP /app/js/* /app/scripts/ && while true; do echo 11;sleep 2; done
          volumeMounts:
            - name: shared-dir
              mountPath: /app/scripts
      volumes:
        - name: shared-dir
          emptyDir: {}
EOF

检查GameServer中的网络状态:

networkStatus:
    createTime: "2024-01-19T08:19:49Z"
    currentNetworkState: Ready
    desiredNetworkState: Ready
    externalAddresses:
    - ip: xxx.xxx.xx.xxx
      ports:
      - name: "80"
        port: 6611
        protocol: TCP
    internalAddresses:
    - ip: 172.16.200.60
      ports:
      - name: "80"
        port: 80
        protocol: TCP
    lastTransitionTime: "2024-01-19T08:19:49Z"
    networkType: Volcengine-CLB