Learn/Google Cloud Study Jam

2. Orchestrating the Cloud with Kubernetes

Dahoon06 2022. 7. 8. 19:06
728x90
반응형

- Cluster(클러스터)

컨테이너 형태의 애플리케이션을 호스팅하는 물리/가상 환경의 노드로 이루어진 집합 (애플리케이션을 실행하기 위한 일련의 노드 머신)

쿠버네티스를 실행 중 === 클러스터를 실행 중

 

클러스터의 용도에 따라 워커 노드(Worker Node)와 마스터 노드(Master Node)로 구분

 

워커 노드(Worker Node)

: 각기 다른 컨테이너를 가직고 있는 노드, 각기 다른 목적과 기능으로 세분화된 컨테이너들이 실제 배치되는 노드를 의미

 

마스터 노드(Master Node)

대규모 컨테이너를 운영하려면 각 워커 노드들의 가용 리소스 현황을 고려하여 최적의 컨테이너 배치와 모니터링, 그리고 각 컨테이너에 대한 효율적이 추가 관리가 필요, 이 역할을 수행하는 노드를 마스터 노드라 칭함

 

- Provisioning(프로비저닝)

IT 인프라를 설정하는 프로세스

어떤 종류의 서비스든 사용자의 요구에 맞게 시스템 자체를 제공하는 것

 

Google Kubernetes Engine


# 시간 타임 설정
gcloud config set compute/zone us-central1-b

# 클러스터 시작
gcloud container clusters create io

 

다음 작업으로 프로젝트에 필요한 저장소를 가져옵니다.

gsutil cp -r gs://spls/gsp021/* .

# 실습할 저장소로 이동
cd orchestrate-with-kubernetes/kubernetes

# 파일 확인
ls

 

저장소에 구성된 파일은 아래와 같습니다.

deployments/  /* 디플로이먼트 매니페스트  */
  ...
nginx/        /* nginx 구성 파일 */
  ...
pods/         /* 파드 매니페스트 */
  ...
services/     /* 서비스 매니페스트 */
  ...
tls/          /* TLS 인증서 */
  ...
cleanup.sh    /* 정리 스크립트 */

 

deployments : 디플로이먼트를 정의할 수 있고, 배포 작업을 좀 더 세분화하여 조작 가능하도록 하는 파일

 

nginx : nginx 관리 파일

 

pods : 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 단위 ( 하나 이상의 컨테이너 그룹 )

 

services : 라벨 셀렉터 (label selector)를 이용하여 관리하고자 하는 Pod를 정의할 수 있습니다.

services teamplate

더보기

apiVersion: v1

kind: Service

metadata:

 name: hello-node-svc

spec:

 selector:

   app: hello-node

 ports:

   - port: 80

     protocol: TCP

     targetPort: 8080

 type: LoadBalancer

 

tls : TLS Certificate 관리

기본적으로 3가지의 인증 파일 필요

1. CA에서 발급한 root certificate

2. Server에서 발급한 server certificate

3. Client에서 발급한 client certificate

 

 

모놀리식 아키텍처(Monolithic Architecture)

더보기

하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합대 있는 구조를 의미.

* 기능이 한 번에 다 들어 있어 하나의 기능을 수정하게 되면 다른 기능까지 수정해야 할 수도 있다.

 

장점1. 간단한 개발2. 간편한 배포3. 단순한 확장성 -> 코드의 확장 -> 재배포

 

단점1. 코드 품질이 낮아짐2. 애플리케이션 시작이 오래 걸림3. 애플리케이션의 지속적인 배포가 어려움4. 애플리케이션의 확장이 어려움

 

kubectl create deployment nginx --image=nginx:1.10.0

# 실행중인 nginx 컨테이너 확인
kubectl get pods

# Kubernetes 외부로 노출
kubectl expose deployment nginx --port 80 --type LoadBalancer

# 컨테이너 조회
curl http://<External IP>:80

 

 


728x90
반응형

'Learn > Google Cloud Study Jam' 카테고리의 다른 글

3. Managing Deployments Using Kubernetes Engine  (0) 2022.07.16
1 - 2. Kubernetes Engine:Qwik Start  (0) 2022.07.01
1 - 1. Dokcer 소개  (0) 2022.06.30