brunch

You can make anything
by writing

C.S.Lewis

by Master Seo May 22. 2024

NCP 20탄-5. 쿠버네티스-2024




<18> 퍼블릭 서브넷에 서버 1대 생성하여 명령서버 만들기

<19> 쿠버네티스 용 네트워크와 쿠버네티스 생성

<20> 명령서버에 툴설치와 권한 주기

<21> 쿠버네티스에 서비스 올리기

<22> 서비스 동작 확인

<23> 리소스 삭제 - 라우팅 테이블 삭제, 쿠버네티스 삭제, LB 삭제



구성



목표

콘솔로 Ncloud 쿠버네티스를  생성해 보자.

쿠버네티스에 게임 서비스 1개를 올려보자.







진행

개발자가 명령 내릴 명령서버를 하나 만든다. = 네트워크를 만들어야 명령서버를 만들 수 있다.

쿠버네티스에 게임 서비스 1개 올린다. = 쿠버네티스용 네트워크를 만든다. 







<18> 퍼블릭 서브넷에 서버 1대 생성하여 명령서버 만들기



퍼블릭 서브넷 서버 1대 만들기


또는

명령서버를 위한 192 네트워크 생성과 명령서버 1대  생성 (선택)

vpc 192.168.0.0/16 , pub1 192.168.0.0/24로 네트워크 만든다.

로키 리눅스로 명령서버 1대 생성한다.




<19> 쿠버네티스 용 네트워크와 쿠버네티스 생성


1

vpc생성

기본 네트워크로 pub2, pri1, pub-nat1, pub-lb1, pri-lb1  서브넷 5개 만들어보자.

쿠버네티스를 Private에 구축하려면  pub-lb1, pri-lb1 , pri1 , pub-nat1 - 4개 서브넷이 필수이다.

쿠버네티스를 Public에 구축하려면  pub-lb1, pri-lb1 , pub1  - 3개 서브넷이 필수이다.



bgame-dev-vpc

10.0.0.0/20


bgame-dev-pub1

10.0.0.0/24


bgame-dev-pri1

10.0.2.0/23


bgame-dev-pub-nat1

10.0.4.0/24


bgame-dev-pub-lb1

10.0.5.0/24


bgame-dev-pri-lb1

10.0.7.0/24






2

Ncloud Kubernetes Service 생성하기


생성하기

bgame-dev-k8 s1





3

쿠버네티스  설치 위치?

Private에 설치해 보자.



네이버 가이드

https://guide.ncloud-docs.com/docs/k8s-k8sprep




4

LB Private 서브넷 LB Public 서브넷 이 별도로 필수이다.    (네이버 클라우드)

서브넷 추가로 만들자.







5

 NAT 생성하기

bgame-dev-nat1

공인





6

노드풀은 우부트만 가능하다.

노드는 1~250개까지 가능하다.

250개 ㄷㄷㄷㄷ

3개만 한다.

추가


bgame-nodepool1



추가

다음





7

새로운 인증키

test-05-31-1



8




정리

쿠버네티스 서비스를 하기 위해서는 5개의 서브넷이 필요하다.






<20> 명령서버에 툴설치와 권한 주기



1

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

ncloud 환경 설정 하기

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

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


2

ncloud CLI 다운로드


wget https://www.ncloud.com/api/support/download/files/cli/CLI_1.1.19_20240321.zip


unzip CLI_1.1.19_20240321.zip

cd CLI_1.1.19_20240321/

cd cli_linux/

cp ncloud /usr/bin

ncloud help



최신버전

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



3

ncloud configure


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




6


cd

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




7

# 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



8

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



kw



kw







<21> 쿠버네티스에 서비스 올리기



1

테스트 (선택)


kubectl  create deployment nginx-project --image=nginx  --dry-run=client -o yaml --port=80 > nginx-deploy.yaml --kubeconfig kubeconfig.yaml


kubectl apply -f nginx-deploy.yaml --kubeconfig kubeconfig.yaml


kubectl get pods  --kubeconfig kubeconfig.yaml




2

게임 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





3

# alias 설정 하기


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



4

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


5

kw 로 모니터링 하기


모니터링 상태




<5> 서비스 동작 확인


1




2

콘솔에서  네트워크 서브넷 확인



3

NAT 확인



4

라우팅 테이블 확인

0.0.0.0/0  NATGW




5

참고자료

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





<6> 리소스 삭제 - 라우팅 테이블 삭제, 쿠버네티스 삭제, LB 삭제



1

라우팅 테이블에서 NAT 설정 삭제

프라이빗에 0.0.0.0/0  NAT1 라우팅 테이블 삭제


2

NAT1 삭제



3

쿠버네티스 삭제  (5분)

쿠버네티스는  Server에서 반납이 안됨.

Ncloud Kubernestes Service에서 삭제해야 함.



4

LB 삭제

네트워크 삭제 - VPC 삭제 전 서브넷부터 삭제하자.



5

서브넷 삭제



6

VPC 삭제










terraform destroy --auto-approve



참고사이트

테라폼을 통해 Ncloud Kubernetes Service (NKS) 클러스터 구축하기

https://medium.com/naver-cloud-platform/cbe27e197a97





질문 답변

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



다음은 테라폼


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


감사합니다.






                    

                    

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