brunch

26. 쿠버네티스 서비스

by Master Seo

<1> 쿠버네티스 클러스터를 사용하기위해 서브넷이 필요하다.

<2> 리눅스 환경에서 쿠버네티스 클러스터 관리하기



<1> 쿠버네티스 클러스터를 사용하기위해 서브넷이 필요하다.



1


Private 또는 Public 서브넷

로드 밸런서 전용 서브넷 2개가 필요하다. 버블릭 , 브라이빗

클러스터를 Private에 놓는다면 , NATGW 서브넷과 NAT GW도 필요하다.



VPC 10.0.0.0/20

Pri1 10.0.0.0/23

Pub1 10.0.2.0/24

Pub-NAT1 10.0.3.0/24

Pub-lb1 10.0.4.0/24

Pri-lb1 10.0.5.0/24



2

슬라이드2.JPG
슬라이드3.JPG








<2> 리눅스 환경에서 쿠버네티스 클러스터 관리하기



0

ncp-iam- 유틸 설치 필요 등




1

# ncp-agame-com 명령서버 1대 만들기

콘솔은 신규 버전 콜솔 사용하세요.

그렇지 않으면 서버 설치시 구 버전 OS가 설치되지 않아 설치가 안될수 있습니다.

Rocky Linux 8.10-base 로 생성

혹, 설치 안되면 Rocky Linux 9으로 생성

public에 설치

High-CPU - vCPU 2개 , 메모리 4GB (디폴트)

ncp-agame-com

추가

새로운 공인 IP 할당

다음 > 다음 > 보유하고 있는 인증키 이용 > ncp-agame-nks-key > 다음

agame-dev-vpc-default-acg > 다음 > 서버 생성 (10분 소요)




2

# 명령툴들 설치하기

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

ncp_iam_BPA

ncp_iam_BPKMK

2) 서버 접속해 ncloud configure 실행

3) ncloud CLI 다운로드

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

5) # kubectl 명령어 설치

6) # alials 단축 명령어



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

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

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

신규 API 인증키 생성

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

Access Key ID , Secret Key 복사해 두기

ncp_iam_xxxxxxxxxxx

ncp_iam_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx



2) 서버 접속해 ncloud configure 실행

# 서버 접속을 위한 보안 설정 = 나면 ssh 접속되게 하자.

Server > ACG 변경

agame-dev-vpc-default-acg

tcp 0.0.0.0/0 (전체) 80 추가 - 외부에서 웹접속되게 하기

tcp myip 클릭 22 추가 - 외부에서 ssh 접속용

tcp 10.0.0.0/8 22 추가 - 웹서버에서 WAS 서버 접속용

tcp 0.0.0.0/0 (전체) X 눌러 삭제

적용



# putty로 서버 로그인

명렁 서버의 공인IP 확인

root

passwd

나만의 passwd 로 입력



3) 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



# 네이버 클라우드에 명령을 내릴수 있도록 권한 부여

ncloud configure

ncp_iam_xxxxxxxxxxx

ncp_iam_xxxxxxxxxxx

<엔터>



# 권한 있는지 확인 = 리전에 서버 리스트 확인하기

ncloud vserver getRegionList



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

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

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

cd CLI_1.1.23_20241121/

cd cli_linux/

ncloud vserver getRegionList



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

cd

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

# clusterUuid는 콘솔에서 확인하자.

쿠버네티스 클러스터 UUID이다.

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



5) # 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



6) # alials 단축 명령어

vi ~/.bash_profile

맨 아래줄에 아래 내용 3줄 추가

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

저장하고 나옴

:wq!

# 반영 , 아래 2줄 실행

source ~/.bash_profile

k get nodes

# kubectl get nodes

# 터미널하나 더 띠우기 - 터미널 2 - 모니터링 하기

kwn




3

모니터링 툴 # kube-ops-view 설치해 보자.

# 파드와 노드증가를 시각화 하여 확인하는 Kubeops view 툴이다.

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



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

cd kube-ops-view/

k apply -k deploy



# 외부에서 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분 걸림)

콘솔에서 로드 밸런서 생성확인

웹 브라우저에서 해당 URL 로 접속



# 그림 설명

위 3개 cloudwatch-agent

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




5

# 웹서버 생성, 로드 밸런서 생성 , 서버수 조정

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

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

k scale deployment websrv --replicas=20




6

# 쿠버네티스에 게임 올리기 - deployment-2048 게임 올리기

cat <<EOF | k create -f -

apiVersion: apps/v1

kind: Deployment

metadata:

name: deployment-2048

spec:

replicas: 2

selector:

matchLabels:

app.kubernetes.io/name: app-2048

template:

metadata:

labels:

app.kubernetes.io/name: app-2048

spec:

containers:

- name: app-2048

image: alexwhen/docker-2048

ports:

- containerPort: 80

EOF

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

7

마리오 게임 올리기

cat <<EOF | k create -f -

apiVersion: apps/v1

kind: Deployment

metadata:

name: mario

labels:

app: mario

spec:

replicas: 1

selector:

matchLabels:

app: mario

template:

metadata:

labels:

app: mario

spec:

containers:

- name: mario

image: pengbai/docker-supermario

---

apiVersion: v1

kind: Service

metadata:

name: mario

spec:

selector:

app: mario

ports:

- port: 80

targetPort: 8080

protocol: TCP

type: LoadBalancer

externalTrafficPolicy: Local

EOF




# 로드밸런서 도메인으로 웹사이트 접속

화면 캡춰해 제출




# 게임들

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




# 마리오 게임 삭제

k delete deploy,svc mario




8

삭제

API 키 삭제

클러스터 삭제

이미지 삭제

로드 밸런서 삭제

명령서버 삭제

VPC 삭제





다음

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


keyword
매거진의 이전글25. Web Serice Monitoring