brunch

매거진 kakao cloud

You can make anything
by writing

C.S.Lewis

by Master Seo Feb 05. 2024

카카오 클라우드 4탄-8. 쿠버네티스

카카오 클라우드에서 쿠버네티스 올려 서비스해보자~



<1> kr-central-2 , VPC생성 

<2> Centos 생성, 깃, 도커, Kubectl 설치

<3> Access-key 발급

<4> 콘솔에서 쿠버네티스 만들기

<5> kubectl로 쿠버네티스 API 호출하기

<6> 컨테이너 레지스트리에 이미지 올리기

<7> 쿠버네티스에 서비스 배포하기

<8> 서비스 접속 확인하기

<9> 참고 사이트





<1> kr-central-2 , VPC생성 


handson-cluster-vpc

쿠버네티스는 서로다른 AZ에  서브넷은 2개가 필수

나머지는 디폴트로  생성

(5분 걸림)





<2> Centos 생성, 깃, 도커, Kubectl 설치


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

yum install git -y



3

yum install docker -y



참고

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




<3> Access-key 발급



1

오른쪽 위

계정 > 사용자 엑세스키 클릭



2

사용자 엑세스 키 만들기






<4> 콘솔에서 쿠버네티스 만들기



1

vm 접속용 키페어 먼저 만든다.



2

handon-cluster-kr2


서브넷을 2개 만들었으면 이상 없다.

서브넷을 1개 만들었다면 아래와 같이 서로다른 AZ에 2개 이상의 서브넷이 필요하다고 나온다.



2

클러스터 만들고 별도로 노드풀을 만들어야 한다!


노드풀 만들기

handon-cluster-node2


키페어 지정  (미리 만들어 놓은 VM 키페어)


만들기





<5> kubectl로 쿠버네티스 API 호출하기



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




<6> 컨테이너 레지스트리에 이미지 올리기


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






<7> 쿠버네티스에 서비스 배포하기


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 연결하기




<8> 서비스 접속 확인하기





<9> 참고 사이트


1

https://docs.kakaocloud.com/tutorial/kubernetes/k8s-engine-k8s-cluster



2

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




몰아보기

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



감사합니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari