【Agones系列】Agones初体验

简介: 本文介绍了Agones并在阿里云容器服务上运行Agones进行游戏服部署

Agones是为了游戏服在Kubernetes上部署、运行、伸缩而设计的框架。具体相关介绍可参考官方网站和Github。本文介绍了在阿里云ACK上部署并使用Agones的全过程。

 

Install Agones on ACK

  1. 首先创建需要的Agones命名空间
$ kubectl create namespace agones-system
  1. 通过配置文件安装对应版本的Agones,这里我选择的是1.23版本
$ kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.23.0/install/yaml/install.yaml

安装完成后,命名空间下有以下资源:

get deploy -n agones-system
NAME                READY   UP-TO-DATE   AVAILABLE   AGE
agones-allocator    3/3     3            3           3d
agones-controller   1/1     1            1           3d
agones-ping         2/2     2            2           3d

kubectl get po -n agones-system
NAME                                 READY   STATUS    RESTARTS   AGE
agones-allocator-554c79cffc-6dpzp    1/1     Running   0          3d
agones-allocator-554c79cffc-jlp5t    1/1     Running   0          3d
agones-allocator-554c79cffc-kbn5w    1/1     Running   0          3d
agones-controller-864dd7dbc4-2ghs8   1/1     Running   0          3d
agones-ping-77b7dc578c-9dfk7         1/1     Running   0          3d
agones-ping-77b7dc578c-hhvff         1/1     Running   0          3d

kubectl get svc -n agones-system
NAME                               TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)            AGE
agones-allocator                   LoadBalancer   172.16.157.137   47.105.53.1       443:30302/TCP      3d
agones-allocator-metrics-service   ClusterIP      172.16.238.137   
    
    
                 8080/TCP           3d
agones-controller-service          ClusterIP      172.16.150.98    
     
     
                  443/TCP,8080/TCP   3d
agones-ping-http-service           LoadBalancer   172.16.253.193   118.190.206.167   80:30770/TCP       3d
agones-ping-udp-service            LoadBalancer   172.16.10.63     47.104.240.179    50000:32691/UDP    3d
     
     
    
    

需要额外注意的是阿里云上无法连接gcr.io,我在节点上提前pull了个人制作的相同镜像,再打上gcr重名tag,绕过了这个问题。

Deploy a game server on Agones

在这里,我们使用Agones官方Github中的Unity示例(path: agones/examples/unity-sample),将项目导入Unity Editor。分别build server与client

使用项目中的Dockerfile制作服务镜像:

FROM ubuntu:18.04

WORKDIR /unity

# Need to build with UnityEditor in advance.
COPY Builds/Server/ ./

# [Workaround] Wait until the sidecar is ready.
CMD sleep 2 && ./UnitySimpleServer.x86_64

将其上传至镜像仓库后我们开始部署game server。部署的方式也很简单,直接apply yaml即可:

apiVersion: "agones.dev/v1"
kind: GameServer
metadata:
  name: "unity-simple-server"
spec:
  ports:
  - name: default
    portPolicy: Dynamic
    containerPort: 7777
  template:
    spec:
      containers:
      - name: unity-simple-server
        # 使用刚刚制作的game server镜像
        image: xxx:xx 

很快,gs将完成部署:

kubectl get gs
NAME                  STATE   ADDRESS         PORT   NODE                  AGE
unity-simple-server   Ready   120.27.21.131   7050   cn-xxx.192.xx.xx.48   2d

通过ADDRESS和PORT,我们使用客户端来连接game server,看看效果如何:

输入的句子成功在屏幕上显示了,说明游戏服务正常运行中

相关文章
|
机器学习/深度学习 监控 Web App开发
SLS机器学习最佳实战:根因分析(一)
通过算法,快速定位到某个宏观异常在微观粒度的具体表现形式,能够更好的帮助运营同学和运维同学分析大量异常,降低问题定位的时间。
13268 0
|
6月前
|
Java API Nacos
|
网络协议 算法 网络性能优化
|
运维 Kubernetes Cloud Native
【Agones系列】Agones总结与展望
在过往的文章,我们介绍了Agones的网络、生命周期以及弹性扩缩的特性。在本篇文章,我们将介绍Agones的一些其他特性,并对Agones的定位和使用进行一定程度的总结。最后,谈一谈游戏云原生的展望。
【Agones系列】Agones总结与展望
|
索引 Python
pandas读取某列、某行数据——loc、iloc用法总结
pandas读取某列、某行数据——loc、iloc用法总结
3475 2
|
Kubernetes 监控 jenkins
基于K8S实现代码自动化上线
基于K8S实现代码自动化上线
|
存储 运维 Kubernetes
云原生游戏最佳实践系列| 学习笔记
快速学习云原生游戏最佳实践系列
云原生游戏最佳实践系列| 学习笔记
|
Cloud Native 容器
直播预告丨云原生游戏匹配框架 Open Match 与实践
直播预告丨云原生游戏匹配框架 Open Match 与实践