Agones 是什麼?用 Kubernetes 打造開源遊戲伺服器代管平台 (二)

上一篇詳細介紹如何運用 Kubernetes 以及開源軟體打造 Agones,這篇將帶您初步實作開始使用 Agones。

打造 Agones、多個 AAA 多人遊戲並擁有遊戲產業最多經驗之一的公司,Ubisoft:

“我們的目標是為玩家持續打造一個高品質、完美無缺的遊戲體驗。 Agones 提供一個更有彈性、更好控制的遊戲伺服器讓我們的使用者可以部署。這次的合作結合了 Google Cloud 對於部署 Kubernetes 的專業知識以及我們對於遊戲開發的經驗與理解。”

— Carl Dionne, Development Director, Online Technology Group, Ubisoft.

開始使用 Agones

可以使用 Kubernetes 原生的指令 kubectl 以及 API,因為 Agones 完完全全是用 Kubernetes 打造的。

創建一個遊戲伺服器

在 Kubernetes 上部署一個遊戲伺服器跟一般應用程式部署相同。舉例來說,遊戲伺服器就建置在一個映像檔中:

Dockerfile
FROM debian:stretch
RUN useradd -m server

COPY ./bin/game-server /home/server/game-server
RUN chown -R server /home/server && \
    chmod o+x /home/server/game-server

USER server
ENTRYPOINT ["/home/server/game-server"]

藉由安裝 Agones,使用者可以在 Kubernetes 中新增一個 “GameServer” resource,包含 Kubernetes Pod 當中設定。

gameserver.yaml
apiVersion: "stable.agon.io/v1alpha1"
kind: GameServer
metadata:
  name: my-game-server
spec:
  containerPort: 7654
  # Pod template
  template:
    spec:
      containers:
      - name: my-game-server-container
        image: gcr.io/agon-images/my-game-server:0.1

接著使用 kubectl 指令或是 Kubernetes API:

$ kubectl apply -f gamesever.yaml
gameserver "my-game-server" created

Agones 會負責啟動於 yaml 檔中定義的遊戲伺服器,並分配一個公開的 IP 與 port 給 process,好讓使用者能透過這些資訊連線至伺服器。 Agones 甚至透過整合在伺服器的 SDK,可以追蹤到 GameServer 的生命週期。

使用者依然可以透過 kubectl 以及 Kubernetes API 來取得 GameServer 的詳細資訊,包括 State、玩家連線的 IP 位址以及 Port。

$ kubectl describe gameserver my-game-server
Name:         my-game-server
Namespace:    default
Labels:       
Annotations:  
API Version:  stable.agones.dev/v1alpha1
Kind:         GameServer
Metadata:
  Cluster Name:
  Creation Timestamp:  2018-02-09T05:02:18Z
  Finalizers:
    stable.agones.dev
  Generation:        0
  Initializers:      
  Resource Version:  13422
  Self Link:         /apis/stable.agones.dev/v1alpha1/namespaces/default/gameservers/my-game-server
  UID:               6760e87c-0d56-11e8-8f17-0800273d63f2
Spec:
  Port Policy:     dynamic
  Container:       my-game-server-container
  Container Port:  7654
  Health:
    Failure Threshold:      3
    Initial Delay Seconds:  5
    Period Seconds:         5
  Host Port:                7884
  Protocol:                 UDP
  Template:
    Metadata:
      Creation Timestamp:  
    Spec:
      Containers:
        Image:  gcr.io/agones-images/my-game-server:0.1
        Name:   my-game-server-container
        Resources:
Status:
  Address:    192.168.99.100
  Node Name:  agones
  Port:       7884
  State:      Ready
Events:
  Type    Reason    Age   From                   Message
  ----    ------    ----  ----                   -------
  Normal  PortAllocation  3s    gameserver-controller  Port allocated
  Normal  Creating        3s    gameserver-controller  Pod my-game-server-q98sz created
  Normal  Starting        3s    gameserver-controller  Synced
  Normal  Ready           1s    gameserver-controller  Address and Port populated

Agones 的下一步

Agones 還在早起開發階段,但是我們相當看好它。已經著手在進行新功能 game server Fleetsv0.2 版本釋出、支援 Windows 系統規劃、伺服器數據統計與顯示、自動擴展 node等。

使用者可以搶先使用 Agones v0.1的 alpha 版本,直接安裝在任一 Kubernetes 叢集如 GKE 或是 minikube

相關文章

Agones 是什麼?用 Kubernetes 打造開源遊戲伺服器代管平台 (一)

(原文翻譯自:https://cloudplatform.googleblog.com/2018/03/introducing-Agones-open-source-multiplayer-dedicated-game-server-hosting-built-on-Kubernetes.html)

 


iKala - GCP 專門家

GCP 專門家,Google Cloud 首席合作夥伴暨代理商,協助逾 200 家企業使用 Google Cloud,客戶廣布遊戲、媒體、數據廣告、電商、金融等多種產業。我們擁有超過 30 位技術人員,更通過 Google 原廠雲端架構師及資料工程師認證,具備第一手 GCP 產品開發及導入經驗,能提供您紮實的客製化技術服務。

我們提供了多項的 GCP 加值服務:

了解更多: https://gcp.expert/
加入我們: https://goo.gl/rg9D3Q
Facebook Fan Page: https://www.facebook.com/gcp.expert/
聯絡我們:+886 2 87681110 或請來信 gcp@ikala.tv