arrow_back

Hello Node Kubernetes

가입 로그인
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Hello Node Kubernetes

Lab 1시간 universal_currency_alt 크레딧 5개 show_chart 중급
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP005

Google Cloud 사용자 주도형 실습

개요

이 실습의 목표는 개발한 코드를 Kubernetes로 실행되는 복제 애플리케이션으로 만드는 것입니다. 이때 Kubernetes는 Kubernetes Engine으로 실행됩니다. 이 실습에서 사용할 코드는 간단한 Hello World node.js 앱입니다.

다음은 실습의 다양한 부분이 어떻게 연동되는지 이해하기 위한 그림입니다. 실습을 진행하면서 그림을 참조 자료로 사용하세요. 실습을 완료하면 이해할 수 있게 되니 지금은 무시하고 넘어가도 좋습니다.

ba830277f2d92e04.png

Kubernetes는 kubernetes.io에서 제공하는 오픈 소스 프로젝트이며 노트북에서 고가용성 멀티노드 클러스터, 공용 클라우드에서 온프레미스 배포, 가상 머신에서 베어 메탈까지 다양한 환경에서 사용할 수 있습니다.

이 실습에서는 Kubernetes Engine(Compute Engine으로 실행되는 Google 호스팅 버전의 Kubernetes)과 같은 관리된 환경을 사용하여 기본 인프라를 설정하는 대신 Kubernetes를 경험하는 데 집중합니다.

실습할 내용

  • Node.js 서버 만들기
  • Docker 컨테이너 이미지 만들기
  • 컨테이너 클러스터 만들기
  • Kubernetes 포드 만들기
  • 서비스 확장

기본 요건

  • vim, emacs 또는 nano와 같은 표준 Linux 텍스트 편집기 사용에 익숙하면 도움이 됩니다.

핵심 개념을 더욱 효율적으로 학습하기 위해서는 수강자가 직접 명령어를 입력해 보는 것이 좋습니다. 대부분 실습에는 필요한 모든 명령어가 포함된 코드 블록이 포함되어 있습니다. 실습을 수강하는 동안 적절한 위치에 손쉽게 코드 블록의 명령어를 복사한 후 붙여넣을 수도 있습니다.

설정

실습 시작 버튼을 클릭하기 전에

다음 안내를 확인하세요. 실습에는 시간 제한이 있으며 일시중지할 수 없습니다. 실습 시작을 클릭하면 타이머가 시작됩니다. 이 타이머에는 Google Cloud 리소스를 사용할 수 있는 시간이 얼마나 남았는지 표시됩니다.

실무형 실습을 통해 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 직접 실습 활동을 진행할 수 있습니다. 실습 시간 동안 Google Cloud에 로그인하고 액세스하는 데 사용할 수 있는 새로운 임시 사용자 인증 정보가 제공됩니다.

이 실습을 완료하려면 다음을 준비해야 합니다.

  • 표준 인터넷 브라우저 액세스 권한(Chrome 브라우저 권장)
참고: 이 실습을 실행하려면 시크릿 모드 또는 시크릿 브라우저 창을 사용하세요. 개인 계정과 학생 계정 간의 충돌로 개인 계정에 추가 요금이 발생하는 일을 방지해 줍니다.
  • 실습을 완료하기에 충분한 시간---실습을 시작하고 나면 일시중지할 수 없습니다.
참고: 계정에 추가 요금이 발생하지 않도록 하려면 개인용 Google Cloud 계정이나 프로젝트가 이미 있어도 이 실습에서는 사용하지 마세요.

실습을 시작하고 Google Cloud 콘솔에 로그인하는 방법

  1. 실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열립니다. 왼쪽에는 다음과 같은 항목이 포함된 실습 세부정보 패널이 있습니다.

    • Google 콘솔 열기 버튼
    • 남은 시간
    • 이 실습에 사용해야 하는 임시 사용자 인증 정보
    • 필요한 경우 실습 진행을 위한 기타 정보
  2. Google 콘솔 열기를 클릭합니다. 실습에서 리소스가 가동된 후 로그인 페이지가 표시된 다른 탭이 열립니다.

    팁: 두 개의 탭을 각각 별도의 창으로 나란히 정렬하세요.

    참고: 계정 선택 대화상자가 표시되면 다른 계정 사용을 클릭합니다.
  3. 필요한 경우 실습 세부정보 패널에서 사용자 이름을 복사하여 로그인 대화상자에 붙여넣습니다. 다음을 클릭합니다.

  4. 실습 세부정보 패널에서 비밀번호를 복사하여 시작 대화상자에 붙여넣습니다. 다음을 클릭합니다.

    중요: 왼쪽 패널에 표시된 사용자 인증 정보를 사용해야 합니다. Google Cloud Skills Boost 사용자 인증 정보를 사용하지 마세요. 참고: 이 실습에 자신의 Google Cloud 계정을 사용하면 추가 요금이 발생할 수 있습니다.
  5. 이후에 표시되는 페이지를 클릭하여 넘깁니다.

    • 이용약관에 동의합니다.
    • 임시 계정이므로 복구 옵션이나 2단계 인증을 추가하지 않습니다.
    • 무료 평가판을 신청하지 않습니다.

잠시 후 Cloud 콘솔이 이 탭에서 열립니다.

참고: 왼쪽 상단에 있는 탐색 메뉴를 클릭하면 Google Cloud 제품 및 서비스 목록이 있는 메뉴를 볼 수 있습니다. 탐색 메뉴 아이콘

Cloud Shell 활성화

Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다. Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.

  1. Google Cloud 콘솔 상단에서 Cloud Shell 활성화 Cloud Shell 활성화 아이콘를 클릭합니다.

연결되면 사용자 인증이 이미 처리된 것이며 프로젝트가 PROJECT_ID로 설정됩니다. 출력에 이 세션의 PROJECT_ID를 선언하는 줄이 포함됩니다.

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.

  1. (선택사항) 다음 명령어를 사용하여 활성 계정 이름 목록을 표시할 수 있습니다.
gcloud auth list
  1. 승인을 클릭합니다.

  2. 다음과 비슷한 결과가 출력됩니다.

출력:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (선택사항) 다음 명령어를 사용하여 프로젝트 ID 목록을 표시할 수 있습니다.
gcloud config list project

출력:

[core] project = <project_ID>

출력 예시:

[core] project = qwiklabs-gcp-44776a13dea667a6 참고: gcloud 전체 문서는 Google Cloud에서 gcloud CLI 개요 가이드를 참조하세요.

Node.js 애플리케이션 만들기

Cloud Shell로 Kubernetes Engine으로 배포할 Node.js 서버를 만듭니다.

vi server.js

편집기를 시작합니다.

i

다음 내용을 파일에 추가합니다.

var http = require('http');
var handleRequest = function(request, response) {
  response.writeHead(200);
  response.end("Hello World!");
}
var www = http.createServer(handleRequest);
www.listen(8080);

server.js파일을 저장한 후 Esc를 누르고 다음과 같이 입력합니다.

:wq

Cloud Shell에 node 실행 파일이 설치되어 있으므로 다음 명령어를 실행하여 노드 서버를 시작합니다. 이 명령어는 결과를 반환하지 않습니다.

node server.js

Cloud Shell의 기본 웹 미리보기 기능을 사용하여 새로운 브라우저 탭을 열고 포드 8080.

bde9fe42e27656fb.png

새 브라우저 탭이 열리며 결과가 표시됩니다.

24aab6bb51533e91.png

계속 진행하기 전에 Cloud Shell로 돌아가 Ctrl+c를 입력하여 실행 중인 노드 서버를 중단합니다. 이제 이 애플리케이션을 Docker 컨테이너로 패키징합니다.

Docker 컨테이너 이미지 만들기

다음으로 빌드할 이미지를 설명하는 Dockerfile을 만듭니다. Docker 컨테이너 이미지는 다른 기존 이미지를 확장하여 만들 수 있으니 여기서도 기존 노드 이미지를 확장하는 방법을 선택합니다.

vi Dockerfile

편집기를 시작합니다.

i

다음 내용을 추가합니다.

FROM node:6.9.2
EXPOSE 8080
COPY server.js .
CMD node server.js

이 Docker 이미지 '레시피'에서는 다음과 같은 작업을 합니다.

  • Docker 허브에 있는 node 이미지에서 시작합니다.
  • 8080을 노출합니다.
  • server.js파일을 이미지로 복사합니다.
  • 앞서 수동으로 했던 것처럼 노드 서버를 시작합니다.

Esc를 눌러서 Dockerfile 파일을 저장한 후 다음과 같이 입력합니다.

:wq

아래 명령어에서 PROJECT_ID를 콘솔과 실습의 연결 세부정보 부분에서 찾을 수 있는 GCP 프로젝트 ID로 바꾸고 이미지를 빌드합니다.

docker build -t gcr.io/PROJECT_ID/hello-node:v1 .

모든 요소를 다운로드하고 가져오는 데 시간이 걸리지만 이미지가 빌드되는 진행률 표시줄을 확인할 수 있습니다.

작업이 완료되면 새롭게 만들어진 컨테이너 이미지를 로컬에서 테스트합니다. 해당 이미지로부터 Docker 컨테이너를 포트 8080에서 deamon으로 실행하도록 다음과 같은 명령어를 입력합니다. PROJECT_ID를 콘솔과 실습의 연결 세부정보 부분에서 찾을 수 있는 GCP Project ID로 바꿉니다.

docker run -d -p 8080:8080 gcr.io/PROJECT_ID/hello-node:v1

다음과 비슷한 결과가 표시됩니다.

325301e6b2bffd1d0049c621866831316d653c0b25a496d04ce0ec6854cb7998

결과를 확인하려면 Cloud Shell의 웹 미리보기 기능을 사용합니다.

bde9fe42e27656fb.png

또는 Cloud Shell 프롬프트에서 curl을 사용합니다.

curl http://localhost:8080

다음과 같은 결과가 표시됩니다.

Hello World!

다음으로 실행 중인 컨테이너를 중지합니다.

다음을 실행하여 Docker 컨테이너 ID를 찾습니다.

docker ps

다음과 비슷한 결과가 표시됩니다.

CONTAINER ID        IMAGE                              COMMAND
2c66d0efcbd4        gcr.io/PROJECT_ID/hello-node:v1    "/bin/sh -c 'node

아래 명령어에서 CONTAINER ID를 위에서 출력된 컨테이너 ID로 대체하고 실행하여 컨테이너를 중지합니다.

docker stop [CONTAINER ID]

콘솔 출력 결과는 다음(컨테이너 ID)과 유사해야 합니다.

2c66d0efcbd4

이제 이미지가 의도한 대로 작동하고 있으니 이 이미지를 Google Cloud 프로젝트에서 액세스할 수 있는 비공개 Docker 이미지 저장소인 Google Container Registry로 푸시합니다.

PROJECT_ID를 콘솔 또는 실습의 연결 세부정보 부분에 있는 GCP 프로젝트 ID로 바꾸고 다음 명령어를 실행합니다.

gcloud auth configure-docker
docker push gcr.io/PROJECT_ID/hello-node:v1

첫 푸시를 완료하는 데 몇 분 정도 걸릴 수 있습니다. 빌드되는 동안 진행률 표시줄을 확인할 수 있습니다.

The push refers to a repository [gcr.io/qwiklabs-gcp-6h281a111f098/hello-node]
ba6ca48af64e: Pushed
381c97ba7dc3: Pushed
604c78617f34: Pushed
fa18e5ffd316: Pushed
0a5e2b2ddeaa: Pushed
53c779688d06: Pushed
60a0858edcd5: Pushed
b6ca02dfe5e6: Pushed
v1: digest: sha256:8a9349a355c8e06a48a1e8906652b9259bba6d594097f115060acca8e3e941a2 size: 2002

컨테이너 이미지가 콘솔에 나열됩니다. 탐색 메뉴 > Container Registry를 선택합니다.

Kubernetes_Container_reg.png

이제 Kubernetes가 액세스하고 조정할 수 있고 프로젝트 전체에서 사용할 수 있는 Docker 이미지가 생겼습니다.

container_reg.png

클러스터 만들기

이제 Kubernetes Engine 클러스터를 만들 준비가 되었습니다. 클러스터는 Google이 호스팅한 Kubernetes 마스터 API 서버와 몇 개의 워커 노드로 구성되어 있습니다. 워커 노드는 Compute Engine 가상 머신입니다.

gcloud를 사용하여 미리 프로젝트를 설정해야 합니다. PROJECT_ID를 콘솔과 실습의 연결 세부정보 부분에 있는 GCP 프로젝트 ID로 바꿉니다.

gcloud config set project PROJECT_ID

n1-standard-1 노드 2개로 클러스터를 만듭니다. 이 작업은 완료하는 데 몇 분 정도 시간이 걸릴 수 있습니다.

gcloud container clusters create hello-world \
                --num-nodes 2 \
                --machine-type n1-standard-1 \
                --zone us-central1-a

클러스터가 구축 될 때 발생하는 경고를 무시해도됩니다.

콘솔 출력 결과는 다음과 같이 표시됩니다.

Creating cluster hello-world...done.
Created [https://container.googleapis.com/v1/projects/PROJECT_ID/zones/us-central1-a/clusters/hello-world].
kubeconfig entry generated for hello-world.
NAME         ZONE           MASTER_VERSION  MASTER_IP       MACHINE_TYPE   STATUS
hello-world  us-central1-a  1.5.7           146.148.46.124  n1-standard-1  RUNNING

참고: 콘솔로도 탐색 메뉴를 열고 Kubernetes Engine > Kubernetes 클러스터 > 클러스터 만들기를 선택하여 이 클러스터를 만들 수 있습니다.

탐색 메뉴 > Kubernetes Engine을 선택하면 Kubernetes Engine으로 가동되고 완벽하게 작동하는 Kubernetes 클러스터를 확인할 수 있습니다.

kubernetes_cluster.png

컨테이너화된 애플리케이션을 Kubernetes 클러스터로 배포할 차례입니다. 이제부터는 Cloud Shell 환경에 이미 설정된 kubectl 명령어를 사용합니다.

아래 진행 상황 확인을 클릭하여 실습 진행 상황을 확인하세요.

클러스터를 만듭니다.

포드 만들기

Kubernetes 포드는 관리 및 네트워킹 목적으로 묶여있는 컨테이너 그룹입니다. 컨테이너가 1개 또는 여러 개 포함될 수 있습니다. 여기에서는 비공개 Container Registry에 저장된 Node.js 이미지로 빌드한 1개의 컨테이너를 사용합니다. 이는 포트 8080에서 콘텐츠를 제공합니다.

PROJECT_ID를 콘솔과 실습의 연결 세부정보에 있는 GCP 프로젝트 ID로 바꾸고 kubectl run 명령어로 포드를 만듭니다.

kubectl create deployment hello-node \
    --image=gcr.io/PROJECT_ID/hello-node:v1

다음과 같은 결과가 표시됩니다.

deployment.apps/hello-node created

보다시피 deployment 개체를 만들었습니다. 포드를 만들고 확장하는 방법으로 배포를 권장합니다. 여기에서 새로운 배포는 hello-node:v1을 실행하는 단일 포드 복제본을 관리합니다.

배포를 보려면 다음을 실행합니다.

kubectl get deployments

다음과 같은 결과가 표시됩니다.

NAME         READY   UP-TO-DATE   AVAILABLE   AGE
hello-node   1/1     1            1           1m36s

배포에서 생성된 포드를 보려면 다음을 실행합니다.

kubectl get pods

다음과 같은 결과가 표시됩니다.

NAME                         READY     STATUS    RESTARTS   AGE
hello-node-714049816-ztzrb   1/1       Running   0          6m

이 시점에서 몇몇 흥미로운 kubectl 명령어를 살펴 봅니다. 이 명령어들은 클러스터의 상태를 변경하지 않으며 자세한 내용은 여기에서 확인할 수 있습니다.

kubectl cluster-info
kubectl config view

문제해결 명령어는 다음과 같습니다.

kubectl get events
kubectl logs <pod-name>

이제 포드를 외부에서 액세스 가능하게 만들어야 합니다.

아래 진행 상황 확인을 클릭하여 실습 진행 상황을 확인하세요.

포드 만들기

외부 트래픽 허용하기

기본적으로 포드는 클러스터 내에서 내부 IP로만 액세스할 수 있습니다. hello-node 컨테이너에 Kubernetes 가상 네트워크 외부에서 액세스할 수 있게 하려면 포드를 Kubernetes 서비스로 노출해야 합니다.

Cloud Shell에서 kubectl expose 명령어와 --type="LoadBalancer" 플래그를 합쳐서 포드를 공용 인터넷에 노출할 수 있습니다. 이 플래그는 외부에서 액세스 가능한 IP를 만드는 데 필요합니다.

kubectl expose deployment hello-node --type="LoadBalancer" --port=8080

다음과 같은 결과가 표시됩니다.

service/hello-node exposed

이 명령어에서 사용된 플래그는 기본 인프라가 제공하는 부하 분산기(여기에서는 Compute Engine 부하 분산기)를 사용하도록 명시합니다. 포드가 아니라 배포를 직접 노출한다는 점을 참고하세요. 이로 인해 배포가 관리하는 모든 포드에 걸쳐 서비스가 트래픽을 부하 분산하게 됩니다. 이번 예시에서는 포드가 1개이지만 나중에 복제본을 더 추가하게 됩니다.

Kubernetes 마스터에서는 Google Cloud Platform 외부에서 서비스에 완전하게 액세스할 수 있도록 부하 분산기, 관련된 Compute Engine 전달 규칙, 타겟 풀 및 방화벽 규칙을 만듭니다.

공개적으로 액세스할 수 있는 서비스의 IP 주소를 찾으려면 kubectl에 모든 클러스터 서비스를 나열하도록 요청합니다.

kubectl get services

다음과 같은 결과가 표시됩니다.

NAME         CLUSTER-IP     EXTERNAL-IP      PORT(S)    AGE
hello-node   10.3.250.149   104.154.90.147   8080/TCP   1m
kubernetes   10.3.240.1     <none>           443/TCP    5m

hello-node 서비스에 IP 주소가 2개 있으며 2개 모두 포트 8080을 제공합니다. CLUSTER-IP는 클라우드 가상 네트워크에서만 볼 수 있는 내부 IP이며 EXTERNAL-IP는 부하 분산된 외부 IP입니다.

브라우저에서 http://<EXTERNAL_IP>:8080 주소로 접속하면 서비스를 이용할 수 있습니다.

67cfa8c674f8c708.png

컨테이너 및 Kubernetes로 이동함으로써 이 시점에서 몇 가지 장점을 누릴 수 있게 되었습니다. 이제 워크로드를 실행할 호스트를 지정할 필요가 없으며 서비스 모니터링과 재시작의 이점을 활용 수 있습니다. 새로운 Kubernetes 인프라를 어떻게 이용할 수 있는지 더 살펴보겠습니다.

아래 진행 상황 확인을 클릭하여 실습 진행 상황을 확인하세요.

Kubernetes 서비스 만들기

서비스 확장하기

Kubernetes에서 제공되는 강력한 특징 중 하나는 애플리케이션을 손쉽게 확장할 수 있다는 점입니다. 애플리케이션에 용량이 더 필요하다고 가정해보겠습니다. 복제본 컨트롤러에 원하는 개수만큼 새로운 복제본 포드를 관리하도록 지정할 수 있습니다.

kubectl scale deployment hello-node --replicas=4

다음과 같은 결과가 표시됩니다.

deployment.extensions/hello-node scaled

업데이트된 배포에 관한 설명을 요청할 수 있습니다.

kubectl get deployment

다음과 같은 결과가 표시됩니다.

NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
hello-node   4         4         4            4           16m

또한 모든 포드를 나열할 수 있습니다.

kubectl get pods

다음과 같은 결과가 표시됩니다.

NAME                         READY     STATUS    RESTARTS   AGE
hello-node-714049816-g4azy   1/1       Running   0          1m
hello-node-714049816-rk0u6   1/1       Running   0          1m
hello-node-714049816-sh812   1/1       Running   0          1m
hello-node-714049816-ztzrb   1/1       Running   0          16m

여기에서는 선언적 접근법이 사용되었습니다. 새로운 인스턴스를 시작하고 중지하는 대신 항상 실행 중이어야 하는 인스턴스의 개수를 선언합니다. Kubernetes 조정 루프는 현재 상황이 요청과 일치하는지 확인하며 필요 시 조치를 취합니다.

다음은 Kubernetes 클러스터의 상태를 요약한 그림입니다.

587f7f0a097aaa2.png

아래 진행 상황 확인을 클릭하여 실습 진행 상황을 확인하세요.

서비스 확장하기

서비스 업그레이드하기

프로덕션에 배포한 애플리케이션에 버그 수정이나 추가 기능이 필요한 시점이 있습니다. Kubernetes를 활용하여 사용자에게 영향을 주지 않고 새로운 버전을 배포할 수 있습니다.

먼저 애플리케이션을 수정합니다. server.js를 편집합니다.

vi server.js
i

그리고 응답 메시지를 업데이트합니다.

response.end("Hello Kubernetes World!");

server.js 파일 저장 후 Esc를 누르고 다음과 같이 입력합니다.

:wq

이제 버전 번호를 증가시킨 태그(이 예시에서는 v2)와 함께 레지스트리에 새로운 컨테이너 이미지를 빌드하고 게시할 수 있습니다.

PROJECT-ID를 콘솔과 실습의 연결 세부정보 섹션에 있는 자신의 GCP 프로젝트 ID로 바꾸고 다음 명령어를 실행합니다.

docker build -t gcr.io/PROJECT_ID/hello-node:v2 .
docker push gcr.io/PROJECT_ID/hello-node:v2

Kubernetes에서 원활하게 복제본 컨트롤러를 애플리케이션의 새로운 버전으로 업데이트합니다. 실행 중인 컨테이너의 이미지 라벨을 수정하려면 기존 hello-node deployment를 수정하고 이미지를 gcr.io/PROJECT_ID/hello-node:v1에서 gcr.io/PROJECT_ID/hello-node:v2로 바꿔야 합니다.

이 작업을 실행하려면 kubectl edit 명령어를 사용합니다. 전체 배포 yaml 구성을 표시하는 텍스트 편집기가 열립니다. 지금 yaml 구성을 모두 이해할 필요는 없습니다. 구성의 spec.template.spec.containers.image 필드를 업데이트하면 배포에서 포드를 새로운 이미지로 업데이트하도록 한다는 점만 이해하면 됩니다.

kubectl edit deployment hello-node

Spec > containers > image 를 찾아 버전 번호를 v2로 변경하십시오.

# 아래 개체를 수정합니다. '#'로 시작하는 명령어는 무시되며
# 빈 파일에서는 수정이 종료됩니다. 저장 중 오류가 발생하면 이 파일이
# 관련 오류가 있는 상태로 다시 열립니다.
#
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  creationTimestamp: 2016-03-24T17:55:28Z
  generation: 3
  labels:
    run: hello-node
  name: hello-node
  namespace: default
  resourceVersion: "151017"
  selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/hello-node
  uid: 981fe302-f1e9-11e5-9a78-42010af00005
spec:
  replicas: 4
  selector:
    matchLabels:
      run: hello-node
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: hello-node
    spec:
      containers:
      - image: gcr.io/PROJECT_ID/hello-node:v1 ## Update this line ##
        imagePullPolicy: IfNotPresent
        name: hello-node
        ports:
        - containerPort: 8080
          protocol: TCP
        resources: {}
        terminationMessagePath: /dev/termination-log
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      securityContext: {}
      terminationGracePeriodSeconds: 30

변경 후 파일을 저장하고 닫습니다. Esc를 누른 후 다음을 실행합니다.

:wq

다음과 같은 결과가 표시됩니다.

deployment.extensions/hello-node edited

배포를 새로운 이미지로 업데이트하려면 다음을 실행합니다.

kubectl get deployments

새로운 포드는 새로운 이미지로 생성되며 기존 포드는 삭제됩니다.

다음과 같은 결과가 표시됩니다 (다음을 보려면 위 명령을 다시 실행해야 할 수도 있습니다).

NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
hello-node   4         4         4            4           1h

이와 같은 작업이 진행되는 동안 서비스 중단이 발생하지는 않습니다. 시간이 조금 지나면 사용자가 애플리케이션의 새로운 버전에 액세스하기 시작합니다. 이 문서에서 순차적 업데이트에 관한 자세한 내용을 확인할 수 있습니다.

Kubernetes Engine 클러스터를 설정하고 나면 배포, 확장 및 업데이트된 기능으로 Kubernetes가 인프라 대신 애플리케이션에 집중하도록 도와준다는 점에 동의하게 될 것입니다.

학습한 내용 테스트하기

퀴즈를 통해 Google Cloud Platform에 관해 학습한 내용을 테스트해 보세요. 여러 개의 보기를 선택할 수 있습니다.

축하합니다

Kubernetes를 활용한 실습이 끝났습니다. 이번에는 이 기술을 간략하게만 익혀 보았으므로 직접 포드, 복제본 컨트롤러 및 서비스에 관해 더욱 자세히 알아보시기 바랍니다. 또한 활성 여부 조사(상태 확인)를 진행하고 직접 Kubernetes API를 사용해 보세요.

다음 실습 참여하기

다음 실습인 Kubernetes Engine 배포 관리에 참여하여 퀘스트를 계속하거나 다음 추천 항목을 확인하세요.

다음 단계/자세히 알아보기

Google Cloud 교육 및 자격증

Google Cloud 기술을 최대한 활용하는 데 도움이 됩니다. Google 강의에는 빠른 습득과 지속적인 학습을 지원하는 기술적인 지식과 권장사항이 포함되어 있습니다. 기초에서 고급까지 수준별 학습을 제공하며 바쁜 일정에 알맞은 주문형, 실시간, 가상 옵션이 포함되어 있습니다. 인증은 Google Cloud 기술에 대한 역량과 전문성을 검증하고 입증하는 데 도움이 됩니다.

설명서 최종 업데이트: 2020 년 12 월 4 일
실습 최종 테스트: 2020 년 12 월 4 일

Copyright 2024 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.