카카오 클라우드에서 쿠버네티스 올려 서비스해보자~
handson-cluster-vpc
쿠버네티스는 서로다른 AZ에 서브넷은 2개가 필수
나머지는 디폴트로 생성
(5분 걸림)
1
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
3
yum install docker -y
참고
https://brunch.co.kr/@topasvga/3032
1
오른쪽 위
계정 > 사용자 엑세스키 클릭
2
사용자 엑세스 키 만들기
1
vm 접속용 키페어 먼저 만든다.
2
handon-cluster-kr2
서브넷을 2개 만들었으면 이상 없다.
서브넷을 1개 만들었다면 아래와 같이 서로다른 AZ에 2개 이상의 서브넷이 필요하다고 나온다.
2
클러스터 만들고 별도로 노드풀을 만들어야 한다!
노드풀 만들기
handon-cluster-node2
키페어 지정 (미리 만들어 놓은 VM 키페어)
만들기
1
Cluster > kubectl 클릭 > kubeconfig 파일 다운로드
2
vi kubeconfig-dgame-dev-cl.yaml
Access-key, Secret-key 를 입력한다.
3
export KUBE_CONFIG="kubeconfig-dgame-dev-cl.yaml"
kubectl --kubeconfig=$KUBE_CONFIG get nodes
NAME STATUS ROLES AGE VERSION
host-10-0-16-139 Ready <none> 19m v1.26.6
host-10-0-18-167 Ready <none> 19m v1.26.6
host-10-0-3-234 Ready <none> 19m v1.26.6
// 아래와 같은 오류시는 Access-key, Secret-key를 다시 확인하라!!!
k get nodes
An error occurred when creating openstack client: Bad request with: [POST https://iam.kakaoi.io/identity/v3/auth/tokens], error message: {"error":{"code":400,"message":"Could not find Application Credential: ${7b365ee6a2b34edb839faea0670c1d40}","title":"Bad Request"}}
E0206 02:59:49.033367 37146 memcache.go:265] couldn't get current server API group list: Get "https://948206e2-9802-494f-bdb6-3bf523cfc160-public.ke.kr-central-2.kakaocloud.com/api?timeout=32s": getting credentials: exec: executable kic-iam-auth failed with exit code 1
4
alias kubectl='kubectl --kubeconfig=$KUBE_CONFIG'
alias k=kubectl
source ~/.bash_profile
k get nodes
Centos 리눅스 서버에서 작업
1
mkdir ~/k8se-handson
cd ~/k8se-handson
git clone https://github.com/kakaoenterprise/kic-library-monolithic.git
2
복제한 리포지토리를 컨테이너 이미지로 사용할 수 있도록 Build 합니다
cd ~/k8se-handson/kic-library-monolithic
docker build --tag kic-library-monolithic:latest .
docker image ls # 도커 이미지 리스트에 kic-library-monolithic 추가 여부 확인
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/kic-library-monolithic latest dbd7b5cd27e4 15 seconds ago 615 MB
docker.io/library/openjdk 8u212-jdk-alpine a3562aa0b991 4 years ago 106 MB
3
Docker Hub는 Container Registry로 생성한 컨테이너 이미지를 업로드하여 관리할 수 있습니다. 생성한 이미지의 태그를 수정하고 Docker Hub에 push 합니다.
# 도커 아이디, 비밀번호 입력/도커 미가입 시, 회원가입 후 입력
docker login
docker tag kic-library-monolithic:latest docker.io/masterseo/kic-library-monolithic
docker image ls # 추가된 컨테이너 이미지의 REPOSITORY 이름, TAG 확인
docker push docker.io/masterseo/kic-library-monolithic
명령어 형식)
# 도커 아이디, 비밀번호 입력/도커 미가입 시, 회원가입 후 입력
docker login
docker tag kic-library-monolithic:latest docker.io/${DOCKER_USERNAME}/kic-library-monolithic
docker image ls # 추가된 컨테이너 이미지의 REPOSITORY 이름, TAG 확인
docker push docker.io/${DOCKER_USERNAME}/kic-library-monolithic
Container Registry에 업로드한 이미지를 쿠버네티스에서 배포할 수 있습니다.
업로드한 이미지를 deployment 형태로 생성하고 LoadBalancer 타입으로 배포합니다.
library-monolithic은 spring의 기본 리스닝 포트인 8080을 사용하므로 진입 포트는 80, 이를 8080 포트로 중계합니다
1
cd
kubectl create deployment library-monolithic --image=docker.io/masterseo/kic-library-monolithic
kubectl expose deployment library-monolithic --type=LoadBalancer --port=80 --target-port=8080
kubectl get svc
명령어 형식)
kubectl create deployment library-monolithic --image=docker.io/${DOCKER_USERNAME}/kic-library-monolithic
kubectl expose deployment library-monolithic --type=LoadBalancer --port=80 --target-port=8080
kubectl get svc
2
콘솔에서 로드 밸런서 설정하기
로드밸런서 공인 IP 연결하기
1
https://docs.kakaocloud.com/tutorial/kubernetes/k8s-engine-k8s-cluster
2
https://brunch.co.kr/@topasvga/3193
https://brunch.co.kr/@topasvga/3651
감사합니다.