실습하도록 택스트 파일로 명령어 첨부합니다.
# 왜 쿠버네티스 인가?
1
관리가 용이하다.
2
컨테이너 기반이라 온프라미스나 어떤 클라우드에서도 바로 사용이 가능하다.
1
https://brunch.co.kr/@topasvga/3956
1
https://www.ncloud.com/ > 콘솔 클릭
2
무작정 쿠버네티스를 생성해 보자.
Services > Containers > Ncloud Kubernetes Service > 생성하기
3
네트워크가 필요합니다.
다음으로 안 넘어갑니다.
4
네트워크 만들어요.
서브넷 3개는 필수!!!
Subnet (퍼블릭 또는 프라이빗)
LB Private 서브넷
LB Public 서브넷
Kubernetes 클러스터 생성을 위해서는 IP 대역(10.0.0.0/8,172.16.0.0/12,192.168.0.0/16) 내에서 /17~/26 범위의 Subnet, 로드 밸런서 전용 Subnet이 필요합니다.
Docker Bridge 대역의 충돌을 방지하기 위해 172.17.0.0/16 범위 내의 Subnet, 로드 밸런서 전용 Subnet는 선택할 수 없습니다.
비공인) 표준 네트워크를 참고해서 네트워크를 만들어 봅시다.
https://brunch.co.kr/@topasvga/3956
# 6개의 서브넷을 만든다.
5
Services > Networking > VPC > VPC 생성
agame-naver-dev
10.0.0.0/21
# 6개의 서브넷을 만든다.
pri1
10.0.0.0/23
N(Private)
일반
pub1-command
10.0.2.0/24
일반
pri-db1
10.0.3.0/24
N(Private)
일반
pub-nat1
10.0.4.0/24
NatGateway
pub-lb1
10.0.5.0/24
LoadBalancer
pri-lb1
10.0.6.0/24
N(Private)
LoadBalancer
6
Services > Containers > Ncloud Kubernetes Service > 생성하기
agame-k8s-cl
++Ncloud Kubernetes Service 콘솔 이외의 기능으로 서버 자원(VM), VPC, Subnet을 수동으로 정지 또는 삭제하는 경우 클러스터에 오류가 발생할 수 있습니다.
Kubernetes 워커노드 자원을 반납하는 경우, Ncloud Kubernetes Service 콘솔에서 반납해 주시기 바랍니다.
7
확인만 하자.
나중에 생성하자 ~
NAT Gateway 생성하기
8
노드풀
agame-k8s-np1
노드 2개로
추가 > 다음
9
새로운 인증키
agame-k8s-key
인증키 생성 > 다음 > 생성하기
20분
10
타이머
https://vclock.kr/timer/#countdown=00:10:00&enabled=0&seconds=0&sound=xylophone&loop=1
8
Nodes 확인
9
클러스터 이름 (UUID) 확인하기
Clusters > 해당 클러스터 이름 클릭 > 클러스터 이름 (UUID) 확인하기 > 복사해 두기
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 > 서버 생성
command-08-13
새로운 공인 IP 할당
agame-default acg 사용
3
ncloud CLI 다운로드
wget https://www.ncloud.com/api/support/download/files/cli/CLI_1.1.20_20240620.zip
unzip CLI_1.1.20_20240620.zip
cd CLI_1.1.20_20240620/
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
#하시코프 테라폼 설치하기
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
6
사용을 위한 인증
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
cd
ncp-iam-authenticator create-kubeconfig --region KR --clusterUuid b01xxxxxxxxxx --output kubeconfig.yaml
# -clusterUuid는 콘솔에서 확인하자. 쿠버네티스 클러스터 UUID이다.
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
# alials 단축 명령어
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
[root@agame-web01-dev ~]# k get nodes
NAME STATUS ROLES AGE VERSION
agame-dev-np1-w-5e0j Ready <none> 77m v1.28.10
# 터미널 하나 더 띠워 모니터링 하기
kw
1
게임 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
2
콘솔에서 사설 라우팅 테이블에 0.0.0.0/0 NAT1 설정을 하면 pod들이 서비스 가능해진다.
3
kw로 모니터링하기
모니터링 상태
5
# 서버 20대로 늘리기
# pod 증가 시키기
k scale deployment deployment-2048 --replicas=20
https://brunch.co.kr/@topasvga/3193
1
쿠버네티스 클러스터 삭제
// Server에서 삭제하지 마세요!!!
2
로드 밸런서 삭제
3
natgw 라우팅 삭제 - 수동 생성 자원은 수동 삭제
route table에서 삭제
4
natgw 삭제
5
서브넷 삭제
6
vpc 삭제
1
https://brunch.co.kr/@topasvga/3144
2
https://brunch.co.kr/@topasvga/1656
3
쿠버네티스 추천 서적
https://brunch.co.kr/@topasvga/1455
다음은 테라폼
https://brunch.co.kr/@topasvga/3975
감사합니다.