Agones Part.2 - Minikube 환경 구성하기
윈도우에서 Agones 를 구성하는 방법은 다음 두 가지 방법이 있습니다.
minikube
로 Agones 구성하기VirtualBox + Ubuntu
로 Agones 구성하기
minikube
로 Agones 구성하기
minikube
드라이버를 hyperv 로 설정하기:
minikube config set driver hyperv
minikube
클러스터 시작하기:
minikube start --kubernetes-version v1.18.15 -p agones
agones 설치하기:
kubectl create namespace agones-system
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.15.0/install/yaml/install.yaml
agones gameserver 생성하기:
kubectl create -f https://raw.githubusercontent.com/googleforgames/agones/release-1.15.0/examples/simple-game-server/gameserver.yaml
agones gameserver 확인하기:
다음 명령으로 pod/simple-game-server-*
상태가 Running 인 지 확인합니다.
kubectl get all
gameserver 상태는 다음 명령으로 확인할 수 있습니다.
kubectl get gameservers
kubectl describe gameservers
minikube
서비스 시작하기:
- service.yaml 작성하기:
apiVersion: v1 kind: Service metadata: name: agones-gameserver spec: type: NodePort selector: agones.dev/role: gameserver ports: - protocol: UDP port: 7676 # local port targetPort: 7654 # container port
- 서비스 실행하기:
minikube service --url agones-gameserver http://{Service IP}:{Service Port}
- 서비스 테스트하기:
ncat 테스트로 임의의 입력에 대해서 ACK 를 받으면 성공입니다.ncat -u {Service IP} {Service Port} hello ACK: hello
VirtualBox + Ubuntu
로 Agones 구성하기
만약
VirtualBox + Ubuntu
가 설치되지 않았다면 VirtualBox + Ubuntu 구성하기를 참고하세요.
윈도우에서 VMware 및 VirtualBox와 같은 앱은 Hyper-V가 사용 중일 때
동작하지 않았습니다. 즉 WSL2가 활성화되어 있으면 실행할 수 없었습니다.
그러나 최근 VirtualBox와 VMware는 모두 Hyper-V 및 WSL2를 지원하는 버전을
출시했습니다.VirtualBox 변경사항 과 VMware 변경사항 을 확인해보세요
여기에서는 VirtualBox 를 사용했습니다.
Weave Scope 설치하기
Weave Scope는 도커와 쿠버네티스를 위한 시각화 및 모니터링 도구입니다.
- 쿠버네티스 클러스터에 Weave Scope 설치하기:
$ kubectl apply -f "https://cloud.weave.works/k8s/scope.yaml?k8s-version=$(kubectl version | base64 | tr -d '\n')"
- Scope 를 브라우저로 열기:
$ kubectl port-forward -n weave "$(kubectl get -n weave pod --selector=weave-scope-component=app -o jsonpath='{.items..metadata.name}')" 4040
Agones 실행하기
- Agones 설치하기
- Minikube 프로파일(클러스터)을 도커 드라이버로 시작하기:
$ minikube start --kubernetes-version v1.18.15 -p agones --driver=docker $ minikube profile agones
- Agones 설치하기:
$ kubectl create namespace agones-system $ kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.14.0/install/yaml/install.yaml
- Agones 파드 확인하기:
$ kubectl describe --namespace agones-system pods $ kubectl get pods --namespace agones-system
- Minikube 프로파일(클러스터)을 도커 드라이버로 시작하기:
- GameServer 생성하기
- GameServer 생성하기:
$ kubectl create -f https://raw.githubusercontent.com/googleforgames/agones/release-1.14.0/examples/simple-game-server/gameserver.yaml
- GameServer 확인하기:
$ kubectl get gameservers $ kubectl describe gameserver
- GameServer 생성하기:
문제해결하기
- Permission 이슈
다음 에러가 발생하면, docker 그룹에 사용자를 추가합니다.$ minikube start --kubernetes-version v1.18.15 -p agones --driver=docker 😄 [agones] minikube v1.20.0 on Ubuntu 20.04 ✨ Using the docker driver based on user configuration 💣 Exiting due to PROVIDER_DOCKER_NEWGRP: "docker version --format -" exit status 1: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version: dial unix /var/run/docker.sock: connect: permission denied 💡 Suggestion: Add your user to the 'docker' group: 'sudo usermod -aG docker $USER && newgrp docker' 📘 Documentation: https://docs.docker.com/engine/install/linux-postinstall/
다음 명령을 실행합니다:
$ sudo usermod -aG docker $USER && newgrp docker
- Helm 설치하기(선택)
# curl -O https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 # bash ./get-helm-3 # helm version
VirtualBox + Ubuntu 구성하기
- VirtualBox v6.1.22 다운로드 후 설치
- Ubuntu 20.04 LTS 다운로드후 설치
Ubuntu OS를 다운로드하여 설치합니다.- VirtualBox 네트워크 설정하기:
- VirtualBox networking explained
다음은 VirtualBox 의 네트워크 모드를 소개하는 그림입니다. - VirtualBox 인터넷 접근 문제 해결하기
- VirtualBox networking explained
- VirtualBox에서 클립보드 복사를 설정하는 방법?
- Install VBoxClient (requirement for next step):
$ sudo apt install virtualbox-guest-x11
- Restart the VBox clipboard module:
$ sudo pkill 'VBoxClient --clipboard' -f & sleep 1 && sudo VBoxClient --clipboard
- Install VBoxClient (requirement for next step):
- sudo 명령을 비밀번호 없이 실행하기 위해 sudoer 에
NOPASSWD:
추가합니다: - openssh-server 구성하기
- 윈도우 10에서 SSH 키 생성하기
> ssh-keygen
- Virtualbox Ubuntu에 SSH 연결 설정하기
> type c:\users\{User}\.ssh\id_rsa.pub | ssh {User}@{Host} "cat >> ~/.ssh/authorized_keys"
만약, ssh 서버에
~/.ssh
디렉토리가 없다면 새로 생성합니다:$ mkdir -p ~/.ssh chmod 700 ~/.ssh
- 윈도우 10에서 SSH 키 생성하기
- Ubuntu에 도커 엔진 설치하기
- Ubuntu에서 도커 엔진 API 활성하고 접근하기
$ sudo vi /lib/systemd/system/docker.service ... ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:{Port} ... $ sudo systemctl daemon-reload $ sudo systemctl restart docker # check $ curl -X GET http://localhost:{Port}/images/json
Public Key 이슈
- IT 우분투 업데이트시 PUBKEY 에러
- Trying to install DOCKER GPG key recieving error: Curl: option ‘-‘ is unknown>
$ wget https://download.docker.com/linux/ubuntu/gpg $ sudo apt-key add gpg
- Ubuntu에서 도커 엔진 API 활성하고 접근하기
- Ubuntu에 minikube설치하기
Minikube
를 위한 하이퍼바이저로virtualbox
설치(vm driver 를 사용하는 경우만?)$ sudo apt-get install virtualbox
Minikube
설치:$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube $ sudo mkdir -p /usr/local/bin/ $ sudo install minikube /usr/local/bin/
Kubectl
설치:
쿠버네티스 api에 명령을 전송하려면 kubectl을 이용해야 합니다:$ sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 $ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - $ echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list $ sudo apt-get update $ sudo apt-get install -y kubectl
- VirtualBox 네트워크 설정하기:
WSL2 + Docker Desktop + Minikube 이슈들
Part.0 에서 Agones 를 WSL2 환경에서 구성하는데 여러 이슈가 발생핬다고 소개했습니다.
특히, 윈도우에서 Minikube에서 노출된 서비스에 접근할 수 없는 이슈가 있었습니다.
다음은 Minikube 의 WSL 관련 이슈들입니다:
- Support for Windows 10 WSL2: issues/5392
WSL2 호환을 위한 지원을 문의하는 이슈입니다. -
Why can’t I Access a Service Exposed from Minikube on Windows?
도커 드라이버를 실행하는 윈도우용 Minikube 최신 버전의 버그:--driver=docker
윈도우용 도커 데스크탑은 트래픽을 Linux 컨테이너로 라우팅할 수 없습니다.
이것이 Minikube가 트래픽을 라우팅하는 터널을 만들고 다른 포트를 선택하는 이유입니다. 아쉽지만 현재의 상황입니다.
윈도우에서 완전한 연결을 위해 Hyper-V 나 VirtualBox 드라이버를 사용할 수도 있습니다.
관련 자료
- minikube - hyperv
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
- 가상화 응용 프로그램이 Hyper-V, Device Guard 및 Credential Guard와 함께 작동하지 않습니다.
Hypher-V 끄기:Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
- Hyper-V and Windows Kubernetes
- Hyper-V와 윈도우 쿠버네티스
- Getting started with Kubernetes on windows 10 with Hyper-V
- Minikube on Windows. Hyper-V vs Vagrant/VirtualBox
댓글남기기