<1> 쿠버네티스 엔진 클러스터 만들기
<2> 클러스터 클릭하여 세부 정보 확인
<3> 노드 관리하기
<4> Node모니터링, Pod모니터링
<5> 리눅스 서버 1대 만들어 kubectl로 제어 설정하기
<6> 게임 1개 올려보기
<7> 정리
0
네트워크 구성
VPC 172.16.0.0/16
main Subnet 172.16.0.0/20
1
Container Pack > Kubernetes Engine > 클러스터 만들기
클러스터 이름
dgame-dev-cl
tetris-kakao-dev-k8s
1.24 버전 사용가능 (2023년 4월 현재)
1.23 버전과 2개 가능
2
노트풀이름 입력
dgame-node
노드수 2개로 변경
3
노드풀 확장으로 변경
최소 2
최대 10
4
키페어 생성
tetris-kakao-dev-k8s
3
Cluster 생성 완료
1
세부 정보 확인
vCPU 디폴트 4개
MEM 16 GB
보안그룹
2
노드풀 확인
1.24 버전
노드수 2개
3
상세 노드 호스트명, IP 확인 가능하다.
4
보안그룹 확인
인바운드
아웃 바운드
1
Cluster > 해당 클러스터 클릭 > 노드 풀
노드풀 탭을 보면 버전과 노드수 확인이 가능하다. 2개
노드풀 설정에서 노드풀을 3개 등으로 변경가능하다.
2
자동 확정 설정은 디폴트는 사용안함이다.
사용 함으로 변경해 설치했다.
참고 자료
1
Node 모니터링
Cluster > 해당 클러스터 클릭 > 노드에서
Node 모니터링
2
해당 호스트 클릭 > 모니터링 탭 > 해당 호스트의 CPU등 사용량 확인가능하다.
Pod 선택시 Pod도 모니터링 가능하다.
1
리눅스 서버 1대 만들기
tetris-kakao-dev-command1
퍼블릭 ip는 인스턴스 생성후 public ip 연결 설정하여 연결한다. Network > VPC > Public ip
디폴트 보안그룹은 모두 막혀 있다. tcp 22 허용하자.
puttgen으로 ppk로 변환 접속
kubectl download
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
2
kubectl로 제어 설정하기
Cluster > kubectl 클릭
kubectl 제어 설정 - kubeconfig파일 다운로드
다운로드 폴더에 kubeconfig-dgame-dev-cl.yaml 파일 이름으로 다운로드해 진다.
3
Access-key 받기
카카오 i 클라우드 콘솔 우측 상단에 위치한 프로필에서 사용자 엑세스 키를 클릭
tetris-ka-dev-access
4
kubeconfig-dgame-dev-cl.yaml 파일에 access-key , secretkey 입력
vi kubeconfig-dgame-dev-cl.yaml
name: dgame-dev-cl-admin@dgame-dev-cl
current-context: dgame-dev-cl-admin@dgame-dev-cl
kind: Config
preferences: {}
users:
- name: dgame-dev-cl-admin
user:
exec:
apiVersion: client.authentication.k8s.io/v1beta1
args: null
command: kic-iam-auth
env:
- name: "OS_AUTH_URL"
value: "https://iam.kakaoi.io/identity/v3"
- name: "OS_AUTH_TYPE"
value: "v3applicationcredential"
- name: "OS_APPLICATION_CREDENTIAL_ID"
value: "634f94d54d7394bce01"
- name: "OS_APPLICATION_CREDENTIAL_SECRET"
value: "hpjdQZK8VvRMHZ5sS5VCM6yAEIxgIjXCcvg"
- name: "OS_REGION_NAME"
value: "kr-central-1"
[root@host-172-16-1-255 ~]#
vi kubeconfig-tetris-kakao-dev-k8s
export KUBE_CONFIG="kubeconfig-tetris-kakao-dev-k8s"
5
export KUBE_CONFIG="kubeconfig-dgame-dev-cl.yaml"
6
kubectl --kubeconfig=$KUBE_CONFIG get nodes
NAME STATUS ROLES AGE VERSION
host-172-16-0-147 Ready <none> 4h42m v1.24.6
host-172-16-1-109 Ready <none> 5h2m v1.24.6
host-172-16-2-107 Ready <none> 5h2m v1.24.6
7
alias kubectl='kubectl --kubeconfig=$KUBE_CONFIG'
alias k=kubectl
source ~/.bash_profile
k get nodes
0
kube-ps1 설치 및 사용- 프롬프트에 Context와 Namespace를 표시
(⎈|default:default) [root@2048game-nhn-web01 ~]# kubectl ns default
Context "default" modified.
Active namespace is "default".
curl -fsSLO https://github.com/kubernetes-sigs/krew/releases/download/v0.4.3/krew-linux_amd64.tar.gz
tar zxvf krew-linux_amd64.tar.gz
./krew-linux_amd64 install krew
yum install -y tree
tree -L 3 /root/.krew/bin
[root@kops-ec2 ~]# k oomd
No out of memory pods found in default namespace.
7
helm 설치
curl -s https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
8
기존에 만들어 놓은 명령 서버 (instance)에 접속하여 필요한 툴을 설치한다.
yum -y install tree jq git htop
wget https://github.com/andreazorzetto/yh/releases/download/v0.4.0/yh-linux-amd64.zip
yum install unzip -y
unzip yh-linux-amd64.zip
mv yh /usr/local/bin/
9
클러스터 와 네임스페이스 변경 유틸?
git clone https://github.com/ahmetb/kubectx /opt/kubectx
ln -s /opt/kubectx/kubens /usr/local/bin/kubens
ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
kubens
10
watch -d kubectl get ns,svc,deploy,pods
kubectl delete ns sock-shop
kubectl delete deploy --all
테트리스 게임 올리기
https://brunch.co.kr/@topasvga/3179
1
2049 게임 올리기
cat <<EOF | kubectl --kubeconfig=$KUBE_CONFIG 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
2
lb 생성하기
kubectl --kubeconfig=$KUBE_CONFIG expose deployment deployment-2048 --port=80 --type=LoadBalancer
3
생성 확인
kubectl --kubeconfig=$KUBE_CONFIG get svc,ep
참고 : LB가 사설로 나온다.
4
url 확인
GAMENIP=$(kubectl --kubeconfig=$KUBE_CONFIG get pod -l app=mario -o jsonpath='{.items[0].status.hostIP}')
GAMENPORT=$(kubectl --kubeconfig=$KUBE_CONFIG get svc mario -o jsonpath={.spec.ports[0].nodePort})
echo -e "GAME URL = http://$GAMENIP:$GAMENPORT"
참고 : LB가 사설로 나온다.
5
참고
쿠버네티스 게임
https://brunch.co.kr/@topasvga/1656
다음은
https://brunch.co.kr/@topasvga/3033
가입시 사업자 등록증 입력이 필요하다.
테트리스등 게임시 로드밸런서가 사설IP로 나온다. 이유를 확인해보자. nhn등은 공인으로 나온다.
감사합니다.