brunch

NKS 5탄-1. NKS 테스트 환경 구축

by Master Seo

네이버 클라우드 쿠버네티스를 콘솔로 테스트 환경 구축하자

네트워크부터 구축이 필요하다.

이후, 쿠버네티스 생성과 명령을 내리는 서버 1대를 만들어 사용한다.



NKS를 사용하기 위한 네트워크 구성하자.

NKS만들자.

ncp-game-com5 명령서버 1대 만들자.



<1> NKS를 사용하기 위한 네트워크 구성하자.

<2> NKS만들기

<3> ncp-game-com5 명령서버 1대 만들기

<4> 모니터링하기, 웹서비스 올리기



<1> NKS를 사용하기 위한 네트워크 구성하자.


여기서는 쿠버네티스 생성을 위한 최소 네트워크 서브넷 3개만 구성한다.


서브넷1개 필수 (여기서는 Public Subnet 1개)

LB Private 서브넷 필수

LB Public 서브넷 필수



game5-vpc

10.0.0.0/21


10.0.2.0/24 pub1

10.0.4.0/24 pub-lb1

10.0.6.0/24 pri-lb1



2

서비스를 위한 서브넷 구성은 아래 링크 참고 바랍니다.

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





<2> NKS만들기



1

Ncloud Kubernetes Service (네이버 쿠버네티스 서비스)

생성하기 >

game-nks5



2

Standard 클러스터는 2개 버전 지원 1.29 , 1.28 - 2024년 12월 현재.


1.29.9

1.28.10



서브넷1개 필수-public1 에 생성

LB Private 서브넷 필수

LB Public 서브넷 필수





3

노드풀 이름

game-nks5-np

노드

2개

추가


왼편에 생성될 노드풀 사양이 표시 된다.

다음

인증키 기존것 사용

agame-nks1-np-key

생성


# 참고 - 노드 서버 타입은 우분트만 가능하다.



4

노드수는 2개 생성한다.





5

생성 15분


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


6

클러스터 생성중

10 nks.png



7

Server 에서도 Server 인스턴스 설정중 상태

20 설정중.png



8

노드 서버 확인

아래는 노드서버가 2대인 경우




9

기본 모니터링을 제공한다.

30 모니터링 클릭.png


기본 제공

40 프로메테우스1.png





<3> ncp-game-com5 명령서버 1대 만들기



1

Rocky Linux 8.10

Standard

vCPU 2개 , 메모리8GB 선택

ncp-bgame-com

새로운 공인 IP 할당





2

명령툴들 설치하기


1) 네이버 클라우드에 권한이 있어야 한다.- access-key,secret-key

2) ncloud configure

3) ncloud CLI 다운로드

4) # NKS 사용을 위한 인증 - ncp-iam 설치

5) # kubectl 명령어 설치

6) # alials 단축 명령어



1

네이버 클라우드에 권한이 있어야 한다.

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


오른쪽 위 본인 계정 > 이용관리 > 계정 관리 > 인증키 관리

https://www.ncloud.com/mypage/status/usage


Access Key ID , Secret Key 복사해 두기


ncp_iam_xxxxxxxxxxx

ncp_iam_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx




2

public 서브넷에 로키 리눅스로 개발자 명령서버 1대를 만들자.

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


콘솔 > Sever > 서버 생성


[Standard]

vCPU 2개, 메모리 8GB ,[SSD] 디스크 50GB[g2]


ncp-com1-12-24-1

새로운 공인 IP 할당

새로운 인증키

ncp-com1-12-24-1-key

default acg 사용




3

# 서버 로그인

root


passwd

g1!!



# ncloud CLI 다운로드


# 신규버전

wget https://www.ncloud.com/api/support/download/files/cli/CLI_1.1.23_20241121.zip


unzip CLI_1.1.23_20241121.zip

cd CLI_1.1.23_20241121/

cd cli_linux/

cp ncloud /usr/bin/

ncloud help



최신버전

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




4

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


ncloud configure



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

ncloud vserver getRegionList


https://cli.ncloud-docs.com/docs/cli-vserver-server-common-getregionlist


# MacOS를 사용할 때 자바 바이너리 파일이 실행이 안되는 문제도 발생해서 jdk17버전으로 수정하는 방법

https://hgk5722.tistory.com/560


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


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

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


cd /root/CLI_1.1.20_20240620/cli_linux

ncloud vserver getRegionList




# CLI 명령어들


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




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

cd


매뉴얼

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"'

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


source ~/.bash_profile


k get nodes





# 터미널 2 - 모니터링 하기


kw

kwn



8

# 하시코프 테라폼 설치하기 (선택) , 테라폼 사용시만 설치


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




9


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

kubeconfig created successfully.




10

k get nodes


[root@ncp-game44-com ~]# k get nodes

NAME STATUS ROLES AGE VERSION

game-nks5-np-w-6dwj Ready <none> 3m26s v1.29.9

game-nks5-np-w-6dwk Ready <none> 3m23s v1.29.9

[root@ncp-game44-com ~]#





<4> 모니터링하기, 웹서비스 올리기


1

# 터미널2

# watch로 모니터링 하기


kw




2


HELM을 설치하고 , HELM으로 kube-ops-view 설치한다.

앞에서 HELM 설치했으니 이부분은 참고로 보자





# 프로그램 설치를 쉽게하는 Helm 설치



1

helm cli 툴을 설치

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash


현재의 버전 확인

helm version --short



2

repo에 Stable 저장소 더함

helm repo add stable https://charts.helm.sh/stable


3

차트 리스트 확인 (선택)

helm search repo stable



4

helm completion bash >> ~/.bash_completion

. /etc/profile.d/bash_completion.sh

. ~/.bash_completion

source <(helm completion bash)





# kube-ops-view 설치해 보자.



1

# 방법 1 - git 다운로드 설치 - 80 접속


# 파드와 노드증가를 시각화 하여 확인하는 Kubeops view 설치


1


git clone https://codeberg.org/hjacobs/kube-ops-view.git

cd kube-ops-view/


k apply -k deploy



2

# 외부에서 kube-ops-view를 접속하기 위해서 Service Type을 LoadBalancer 로 변경한다.


k edit svc kube-ops-view



apiVersion: v1

kind: Service

metadata:

annotations:

name: kube-ops-view

spec:

....

sessionAffinity: None

type: LoadBalancer

status:



# type: ClusterIP => type: LoadBalancer 로 수정.

(3분 걸림)


# kube ops view 접속 URL 80 접속

kubectl get svc kube-ops-view | tail -n 1 | awk '{ print "Kube-ops-view URL = http://"$4 }'






2

# 방법 2

# Helm 으로 설치 - 8080 접속



helm repo add geek-cookbook https://geek-cookbook.github.io/charts/


helm install kube-ops-view geek-cookbook/kube-ops-view --version 1.2.2 --set env.TZ="Asia/Seoul" --namespace kube-system


kubectl patch svc -n kube-system kube-ops-view -p '{"spec":{"type":"LoadBalancer"}}'


kubectl annotate service kube-ops-view -n kube-system "external-dns.alpha.kubernetes.io/hostname=kubeopsview.$MyDomain"


echo -e "Kube Ops View URL = http://kubeopsview.$MyDomain:8080/#scale=1.5"


( 5분 걸림)




2

k get svc

kube-ops-view LoadBalancer 10.100.18.156 a2f43379b1fb0440db35af6dc4a29f2b-1377535766.ap-northeast-2.elb.amazonaws.com 8080:30385/TCP 2m1s

[root@ip-172-31-40-122 alb-ingress-controller]#


8080 접속



a2f43379b1fb0440db35af6dc4a29f2b-1377535766.ap-northeast-2.elb.amazonaws.com:8080




AWS 콘솔 로그인 > EC2 > Load Balancers 가서 로드 밸런서 생성확인 > DNS name 확인

웹 브라우저에서 실행.



3

그림 설명

위 3개 cloudwatch-agent

아래 9개 kube-system- core dns , kube proxy


100 view.png





4


kubectl create deployment websrv --image=nginx --port=80 --replicas=4


kubectl scale deployment websrv --replicas=20



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



5

참고 자료

https://codeberg.org/hjacobs/kube-ops-view






3

# 웹서버스 올리기


# 단독 pod 생성


k run myweb1 --image nginx

k run myweb2 --image nginx

k run myweb3 --image nginx


k delete pod myweb1

k delete pod myweb2

k delete pod myweb3




4

# 단독 파드 생성


cat <<EOF | k create -f -

apiVersion: v1

kind: Pod

metadata:

name: nginx-pod

labels:

app: nginx-app

spec:

containers:

- name: nginx-container

image: nginx

ports:

- containerPort: 80

EOF





5

# helm 사용 = 디플로이먼트 사용 , 로드 밸런서 자동 생성


helm install mywebserver bitnami/nginx --kubeconfig="/root/kubeconfig.yaml"



6

# 파드수 늘리기


k scale deployment mywebserver-nginx --replicas=2




120 kube.png




쿠버네티스에 게임 올리기


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


감사합니다.

매거진의 이전글NKS 3탄-2. 모니터링, 삭제