네이버 클라우드 쿠버네티스를 콘솔로 테스트 환경 구축하자
네트워크부터 구축이 필요하다.
이후, 쿠버네티스 생성과 명령을 내리는 서버 1대를 만들어 사용한다.
NKS를 사용하기 위한 네트워크 구성하자.
NKS만들자.
ncp-game-com5 명령서버 1대 만들자.
여기서는 쿠버네티스 생성을 위한 최소 네트워크 서브넷 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
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
https://vclock.kr/timer/#countdown=00:10:00&enabled=0&seconds=0&sound=xylophone&loop=1
6
클러스터 생성중
7
Server 에서도 Server 인스턴스 설정중 상태
8
노드 서버 확인
아래는 노드서버가 2대인 경우
9
기본 모니터링을 제공한다.
기본 제공
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
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 ~]#
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)
# 방법 1 - git 다운로드 설치 - 80 접속
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 접속
( 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
감사합니다.