brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jul 28. 2024

NCP 21탄-4.콘솔로 네이버쿠버네티스-2024-07

네이버 클라우드 쿠버네티스를 사용해 보자.



<1> 콘솔로 네이버 쿠버네티스 생성.

<2> 네이버 쿠버네티스 사용을 위한 7가지 설정

<3> 쿠버네티스에 게임 올리기

<4> 온프라미스 서비스 장애 시 클라우드로 게임 올리기

<5> nodepool 증가 시키기




<1> 콘솔로 네이버 쿠버네티스를 생성하자.




https://www.ncloud.com/  > 콘솔 클릭  


1

Services > Containers > Ncloud Kubernetes Service



쿠버네티스를 생성하려면 네트워크 구축이 필수이다.


아래처럼 서브넷이 필요하다.



2

쿠버네티스 구축을 위한 네트워크 구축부터 해보자.


Public-LB , Public Subnet (또는 Private Subnet) , Private-LB subnet 이 필요하다.

앞에서  Public-LB , Public Subnet 이 생성되었다.

Private-LB subnet을 만들자.





3

private-lb subnet 생성


game-dev-pri-lb1

10.0.7.0/24




4

콘솔로 쿠버네티스 생성


Services > Containers > Ncloud Kubernetes Service



agame-dev-cl1

1.28 디폴트

네트워크 타입  : Public or Private

LB Private 서브넷

LB Public 서브넷



5

노드풀 설정

agame-dev-np1

노드수는 1개로 최소화한다. = 물리장비 1개라는 뜻.

추가 

생성



6

15분  걸림


타이머

https://vclock.kr/timer/#countdown=00:10:00&enabled=0&seconds=0&sound=xylophone&loop=1




<2> 네이버 쿠버네티스 사용을 위한 7가지 설정


명령을 내릴 서버에 로그온해 명령툴을 설치하자.

앞에서 Public 서브넷에  설치한 로키 리눅스에 로그온 하자.

7가지 설정을 하고, 노드에 게임을 배포하자.



1

ncloud 명령서버 설정 하기


access-key , secret-key를 알아야 한다.


이용관리 > 마이 페이지 > 계정 관리

my page > 인증키 관리에서 확인할 수 있다.



2

ncloud CLI 다운로드


wget https://www.ncloud.com/api/support/download/files/cli/CLI_1.1.20_20240620.zip

unzip CLI_1.1.20_20240620.zip

cd CLI_1.1.20_20240620/

cd cli_linux/

cp ncloud /usr/bin/

ncloud help


최신버전

https://cli.ncloud-docs.com/docs/guide-clichange



3

# ncloud 권한 설정 - Access-key , Secret-key 입력


ncloud configure



# 리전에 서버 리스트 확인하기 

ncloud server getRegionList



# 오류시  # 아래 경로에서 실행해야 한다.


[root@agame-web01-dev ~]# ncloud server getRegionList

/usr/bin/ncloud: line 2: ./jre8/bin/java: No such file or directory


cd /root/CLI_1.1.20_20240620/cli_linux

ncloud server getRegionList



4


#하시코프 테라폼 설치하기


sudo yum install -y yum-utils shadow-utils

sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo

sudo yum -y install terraform

terraform -version



5

사용을 위한 인증


ncp-iam 설치


curl -o ncp-iam-authenticator -L https://github.com/NaverCloudPlatform/ncp-iam-authenticator/releases/latest/download/ncp-iam-authenticator_linux_amd64


chmod +x ./ncp-iam-authenticator


mkdir -p $HOME/bin && cp ./ncp-iam-authenticator $HOME/bin/ncp-iam-authenticator && 

export PATH=$PATH:$HOME/bin


echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile

ncp-iam-authenticator help


매뉴얼

https://guide.ncloud-docs.com/docs/k8s-iam-auth-ncp-iam-authenticator




cd

ncp-iam-authenticator create-kubeconfig --region KR --clusterUuid   b01xxxxxxxxxx --output kubeconfig.yaml



-clusterUuid는 콘솔에서 확인하자.  쿠버네티스 클러스터 UUID이다.



6

kubectl 명령어 설치


curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl



7

# alials 단축 명령어


vi  ~/.bash_profile  


맨 아래줄에 아래 내용 추가

alias k='kubectl --kubeconfig="/root/kubeconfig.yaml"'

alias kw='watch -d kubectl get deploy,svc,pods --kubeconfig="/root/kubeconfig.yaml"'



source ~/.bash_profile

k get nodes

[root@agame-web01-dev ~]# k get nodes

NAME                   STATUS   ROLES    AGE   VERSION

agame-dev-np1-w-5e0j   Ready    <none>   77m   v1.28.10



kw







<3> 쿠버네티스에 게임 올리기


1

게임 1개 올리기



cat <<EOF | k create -f -

apiVersion: apps/v1

kind: Deployment

metadata:

  name: deployment-2048

spec:

  selector:

    matchLabels:

      app.kubernetes.io/name: app-2048

  replicas: 2

  template:

    metadata:

      labels:

        app.kubernetes.io/name: app-2048

    spec:

      containers:

      - image: alexwhen/docker-2048

        name: app-2048

        ports:

        - containerPort: 80

EOF


k expose deployment deployment-2048 --port=80 --type=LoadBalancer



클래식 로드 밸런서 연결

외부에서 접속

kubectl expose deployment deployment-2048 --port=80 --type=LoadBalancer




2

콘솔에서 사설 라우팅 테이블에 0.0.0.0/0  NAT1 설정을 하면 pod들이 서비스 가능해진다.



3

kw로 모니터링하기


모니터링 상태




4

서비스 동작 확인




5

# 서버 20대로 늘리기 

# pod 증가 시키기



k scale deployment deployment-2048  --replicas=20




6

dig default-deployment-2048-d6725-25712679-251124084abb.kr.lb.naverncp.com +short

101.79.8.38




7

GTM  Policy에  목적지를 적는다.

101.79.8.38




8

도메인은  GTM에 프로파일!!!





9

www6   CNAME   도메인은  GTM에 프로파일!!!



10

접속 확인

http://www6.taeho11.co.kr/



11

온프라미스 장애 시 클라우드로 전환하기 ?


쿠버네티스 설치

Global DNS에서 CNAME으로  로드밸런서 설정





<4> 온프라미스 서비스 장애시, 클라우드로 게임 올리기



1

구성도






<5> 쿠버네티스 클러스터 nodepool 증가 시키기


1

가이드

https://guide.ncloud-docs.com/docs/k8s-k8suse-nodepool




2

노드 모니터링

[root@agame-web01-dev ~]# 

watch -d kubectl get nodes --kubeconfig=/root/kubeconfig.yaml



pod 모니터링

kw



3

콘솔로 노드  추가하기


Naver Kubernetes Service > Cluster > 노드풀  > 추가



4

노드풀 이름 지정

node2


노드수 추가 수





5

작업중으로 나온다.

얼마나 걸릴까?

서버 생성 시간 + 세팅 시간 = 7분만에 서버는 생성 ?




6

서버 생성 시간 + 세팅 시간 =  10분만에 서버는 생성 ?



7

Server에  가면 서버는 생성되어 있다.





8

클러스터에 가면 작업중으로 나온다.

클러스터 생성하는데 몇분 더 걸린다.



9

전체 10분후 

노드풀가면 운영중으로 나온다.

2개 노드 추가됨 






10


pod 200개로 늘려보기


k scale deployment deployment-2048  --replicas=200



증가중~~



증가함





11

노드수 1대 줄이자~

콘솔에서  node2 를 1개로 변경



node2 1개 없어지고  pod는 195개까지 가능.



다음

https://brunch.co.kr/@topasvga/3942



감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari