brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Dec 27. 2024

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

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

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

이후, 쿠버네티스 생성과 명령을 내리는 서버 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

클러스터 생성중



7

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



8

노드 서버  확인

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




9

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


기본 제공





<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


kubectl 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






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







감사합니다.

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