kruise-game은 게임 서버, 즉 게임 워크로드를 위한 클라우드 네이티브 혁신을 가져오는 것을 목표로 하는 openkruise 산하의 오픈소스 프로젝트입니다.
그런데 게임 서버란 과연 무엇일까?
게임 서버는 기본적으로 PVP 멀티플레이어 온라인 게임의 백엔드에서 핵심 기능을 처리하는 가상 머신 또는 컨테이너입니다
아래에서는 최신 PvP 온라인 게임에서 사용되는 기본 게임 서버 아키텍처를 보여주었습니다.
크루즈 게임이 왜 필요한가요? 기본 k8s 리소스는 게임 워크로드에 충분하지 않나요?
현대 PvP 게임은 점점 더 복잡해지고 있으며, 예를 들어 다양한 종류의 서비스를 처리하려면 여러 게임 서버가 필요합니다.
Valorant와 같은 최신 PvP 게임에는 로비, 매치메이킹을 위한 게임 서버와 실제로 게임 로직을 실행하고 게임 상태를 관리하는 서버가 필요합니다. 너무 많은 게임 서버를 처리하는 것은 큰 작업이므로 수동으로 수행할 수 없습니다. 이제 어떻게 되나요?
쿠버네티스를 구출할 수 있습니다. 자동화된 운영 및 관리 기능을 갖춘 K8s
기능을 사용하면 이러한 부담을 처리할 수 있습니다. 게임 서버 이미지를 배포하기만 하면 모든 작업이 완료됩니다. 별로
이렇게 쉬웠으면 좋겠습니다. 문제는 일반적인 상태 비저장 웹 앱을 여기에 배포하지 않는다는 것입니다. 게임 서버는 다르며 요구 사항도 다릅니다. k8s 기본 리소스는 상태 비저장 앱에 적합하지만 게임 서버는 수명 주기가 더 복잡하고 상태 저장형이며 네트워크 요구 사항도 다릅니다.
우선 모든 게임 서버는 클라이언트에 대한 직접적인 무손실 연결(udp 연결)이 필요합니다. 이를 위해서는 포드의 고정 IP 주소가 필요하며, k8s 포드 IP는 삭제, 크기 조정 중에 변경됩니다.
또한 포드를 게임 서버에 사용하는 경우 포드에 대한 통제력이 부족합니다. 게임 서버의 일부 인스턴스를 업데이트하여 업데이트를 테스트하고 점차적으로 다른 인스턴스로 롤아웃하여 업데이트를 수행하는 롤링 업데이트라는 것이 있습니다. 가동 중지 시간을 방지합니다. K8s 스케줄러는 사용자가 게임 서버로 작업하고 있다는 사실을 모르고 무작위 방식으로 포드를 업데이트합니다. 기본적으로 사용자는 게임 서버의 업데이트 전략을 제어할 수 없습니다. 따라서 게임 서버 업데이트에 대한 유연성이 거의 또는 전혀 없습니다.
이러한 문제를 완화하기 위해 kruise-game은 게임 서버 워크로드용으로 특별히 설계된 두 가지 사용자 정의 리소스 gameServer 및 gameserverSet
를 정의합니다.gameServer:특정 게임 서버에 대한 O&M 및 관리 운영을 추상화한 것을 의미합니다. 업데이트 순서 제어, 게임 서버의 상태 제어, 게임 서버의 네트워크 변경 등 O&M 및 관리 업무에 주로 사용됩니다.
gameServerSet:게임 서버 그룹에 대한 수명 주기 관리의 추상화를 나타냅니다. 레플리카 번호 관리, 게임 서버 출시 등 라이프사이클 제어에 주로 사용됩니다.
kruise-game이 게임 서버 관리를 위해 제공하는 기능:-
이미지 기반 핫 업데이트 및 구성 핫 리로드
특정 게임 서버 업데이트, 삭제, 격리
다양한 내장 네트워크 모델(고정 IP 주소 및 포트, 무손실 직접 연결, 글로벌 가속)
자동 확장
자동 O&M(서비스 품질)
클라우드 서비스 제공업체로부터 독립
복잡한 게임 서버 오케스트레이션
아래 이미지는 k8s의 kruise-game 배포 아키텍처를 보여줍니다
kruise-game 시작하기 :0
kruise-game을 위해서는 k8s 클러스터가 필요합니다. k8s 클러스터를 얻는 가장 쉬운 방법은 시스템에 minikube를 설치하고 시스템에 helm이 설치되어 있는지 확인하는 것입니다.
2.Minikube 시작
minikube start
3.helm을 사용하여 kruise-game 설치
#kruise-game relies on openkruise so you need to install openkruise first # Firstly add openkruise charts repository if you haven't do this. $ helm repo add openkruise https://openkruise.github.io/charts/ # [Optional] $ helm repo update # Install the latest version. $ helm install kruise openkruise/kruise --version 1.6.3 #now instakk kruise-game $ helm install kruise-game openkruise/kruise-game --version 0.8.0
4.Minikube 대시보드로 이동
minikube dashboard
5.kruise-game-system 네임스페이스를 사용하셔야 합니다. kruise-game을 설치하신 것을 축하합니다
kruise-game에 대한 자세한 내용은 kruise-game 문서를 참조하세요.
읽어주셔서 감사합니다. 즐거운 시간 되셨기를 바랍니다 :)
위 내용은 kruiseGame을 사용한 클라우드 네이티브 게임의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!