[구글스터디잼] Kubernetes in the Google Cloud #1

해당 글은 현재 하고 있는 구글 스터디잼 Kubernetes in the Google Cloud 을 학습하는 과정에서 배우는 것을 정리하는 글입니다.

총 10개의 챕터가 있고 일단은 가장 처음 두 개인, Introduction to Docker, Hello Node Kubernetes 를 공부했는데…

1] Introduction to docker
-> 실제로 Docker 책을 보면 쉽게 보게되는 명령들을 소개해줍니다. 즉 docker 를 실행시키거나, 현재 수행중인 container 에 접속한다거나, 현재의 수정본을 docker hub 등의 외부 registry에 등록하는 방법(사실 여기서는 gcloud 를 이용해서 gcp내의 registry에 등록하더군요.)

/node-app:0.2

사실 이미 docker 를 사용해 보신 경험이 있다면, 특별한 차이를 느끼지 못하실꺼 같습니다. 다른 차이는 실습을 하게 되는 환경에서 이미 docker/kubenetes 등이 다 설치되어 있어서… 아주 편하게 실습을 할 수 있다는 것 정도… 일단 제목이 Kubernetes in the Google Cloud 인거 처럼 kubenetes 내용은 2장 부터 시작됩니다.

2] Hello Node Kubernetes

Kubernetes 는 Container Orchestration Tool 이라고 볼 수 있습니다.(즉 컨테이너를 관리해주는?) 여기서는 간단히 kubenetes 위에서 node application을 배포하고 Rolling update 하는 것을 보여주게 됩니다.

2-1] Cluster 의 생성
다음과 같은 과정을 통해서 클러스터를 생성하게 됩니다. 클러스터가 생성된다고 이미지가 돌고 있거나 그러지는 않고, 클러스터만 실행된다고 생각하면 됩니다.

#project 이름 설정
gcloud config set project PROJECT_ID

#hello-world 라는 이름으로 cluster 생성, 노드는 2개, 머신 타입은 n1-standard-1, 생성되는 존은 us-centrall-a 입니다.
gcloud container clusters create hello-world \
                --num-nodes 2 \
                --machine-type n1-standard-1 \
                --zone us-central1-a


2-2] Pod 의 생성
생성된 클러스터에서 이제 실제로 container를 실행하게 됩니다.

#hello-node 라는 이름으로 컨테이너 실행
kubectl run hello-node \
    --image=gcr.io/PROJECT_ID/hello-node:v1 \
    --port=8080

#kubectl get deployments 로 현재 deployment 상황을 볼 수 있고
kubectl get deployments

#kubectl get pods 로 현재 수행중인 pod를 볼 수 있습니다.
kubectl get pods

2-3] container 외부에 노출하기
갓 만들어진 컨테이너를 외부에 서비스하기 위해서는 외부에서 접속을 할 수 있어야 합니다. 하지만 처음 생성되었을때는 kubenetes 내부에서만 연결이 되고 외부에서는 접속이 안될 것입니다. 이럴 때 특정 pod는 외부에서 접속할 수 있어야 하는데, 이러면 외부 IP를 가지거나 , 외부에서 해당 pod에 연결할 수 있는 proxy가 실행되어야 할껍니다.(아니면 기존 proxy의 설정이 바뀌거나…)

#외부에 노출하기
kubectl expose deployment hello-node --type="LoadBalancer"

#어떤 서비스들이 있는지 확인
kubectl get services
#결과의 EXTERNAL-IP를 통해서 외부 IP를 확인할 수 있습니다.

2-3] container scaling(개수 변경)
최초에는 container 가 하나만 실행되는데, 이 개수를 바꾸거나 하고 싶을때 어떻게 해야하는지 설명합니다.

#실행되는 컨테이너의 개수를 4개로 바꾸기
kubectl scale deployment hello-node --replicas=4

#kubectl get deployment를 하면 아까와 다른 결과를 볼 수 있습니다.

다만 이 과정과정가 눈깜짝할 사이에 끝나지는 않습니다. 저는 실험결과 몇초에서 몇분 정도 지나야 이제 제대로 적용되는 걸 볼 수 있습니다.

이제 쿠버네티스의 상태는 다음과 비슷합니다.
kube1

실제로 다음에 해보면 좋을것 같은 부분…
scale 은 실제로 서비스를 할 때, 중요한 부분이므로, 자신들의 서비스를 넣고, 롤링 업데이트나 scale을 바꿀때, 실제로 영향이 어떻게 되는지를 확인하시는게 좋을듯 합니다.

Advertisements