✔️ 실습에 앞서..
실습 목표
- kubectl tool 사용 연습
- deployment yaml 파일 작성하기
- deployments 실행, 업데이트, 스케일 조정하기
- depolyments 및 deployment style 업데이트 연습하기
✔️ 초기 설정
Set zone
로컬 영역을 us-central1-a로 대체해 작동중인 Google Cloud zone을 설정한다.
gcloud config set compute/zone us-central1-a
Get sample code for this lab
컨테이너 및 deployments를 만들고 실행하기 위한 샘플 코드 가져오기
gsutil -m cp -r gs://spls/gsp053/orchestrate-with-kubernetes .
cd orchestrate-with-kubernetes/kubernetes
5개의 n1-standard-1 노드를 가진 클러스터 생성하기
gcloud container clusters create bootcamp --num-nodes 5 --scopes "https://www.googleapis.com/auth/projecthosting,storage-rw"
✔️ Learn about the deployment object
Deployments에 대해 알아보자 우선 Deployment 개체를 살펴보자
kubectl explain 명령을 사용하면 Deployment 개체에 대해 알 수 있다.
kubectl explain deployment
또한 --recursive 옵션을 사용해 모슨 필드를 볼 수 있다.
kubectl explain deployment --recursive
explain 명령을 사용하면 Deployment 객체의 구조를 이해하고 각 필드가 수행하는 작업을 쉽게 이해할 수 있다.
kubectl explain deployment.metadata.name
✔️ Create a deployment
deployments/auth.yaml 구성 파일을 업데이트하자
vi deployments/auth.yaml
Deployment의 컨테이너 섹션의 이미지를 변경하자
...
containers:
- name: auth
image: "kelseyhightower/auth:1.0.0"
...
cat deployments/auth.yaml
이제 Deployment에서 하나의 replica를 만들고 auth 컨테이너의 버전 1.0.0을 사용하는 방법에 알아보자
kubectl 명령을 실행해 auth deployment를 작성하면 deployment manifast의 데이터에 적합한 하나의 파드가 생성된다.
즉 replica 필드에 지정된 수를 변경해 Deployment 개체를 만든다.
kubectl create -f deployments/auth.yaml
Deployment를 작성하면 확인할 수 있다.
kubectl get deployments
deployment가 한번 생성되면 Kubernetes는 Deployment를 위해 ReplicaSet을 생성할 것이다.
Deployment를 위해 ReplicaSet이 생성된 것을 확인할 수 있다.
kubectl get replicasets
auto-xxxxxxx 형식의 RaplicaSet을 확인할 수 있다.
Deployment의 일부로서 작성된 파드를 표시할 수 있다. RaplicaSet이 생성될 때 kubernetes에 의해 단일 Pod가 생성된다.
kubectl get pods
이제 auth deployment를 위한 service를 만들어야 한다.
auth service를 만든다.
kubectl create -f services/auth.yaml
이제 hello Deployment를 생성하고 노출시키기 위해 동일한 작업을 한다.
kubectl create -f deployments/hello.yaml
kubectl create -f services/hello.yaml
마지막으로 frontend Deployment도 반복해준다.
kubectl create secret generic tls-certs --from-file tls/
kubectl create configmap nginx-frontend-conf --from-file=nginx/frontend.conf
kubectl create -f deployments/frontend.yaml
kubectl create -f services/frontend.yaml
frontend에는 ConfigMap을 작성했음을 확인하자
frontend의 external IP를 이용해 frontend와 상호작용한다.
kubectl get services frontend
curl -ks https://<EXTERNAL-IP>
hello 응답을 받는다.
또한 kubectl의 output templating 기능을 사용해 curl을 one-liner로 사용할 수 있다.
curl -ks https://`kubectl get svc frontend -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`
✔️ Scale a Deployment
Deployment가 생성되었으므로 확장할 수 있다.
이를 수행하기 위해서는 spec.replicas 필드를 업데이트한다.
kubectl explain 명령을 사용해 이 필드에 대한 설명을 다시 볼 수 있다.
kubectl explain deployment.spec.replicas
replicas 필드는 kubectl scale 명령을 사용해 가장 쉽게 업데이트 할 수 있다.
kubectl scale deployment hello --replicas=5
현재 5개의 Pod가 실행 중인지 확인한다.
kubectl get pods | grep hello- | wc -l
이제 어플리케이션을 축소해본다.
kubectl scale deployment hello --replicas=3
다시 올바른 수의 pod가 있는지 확인해보자
kubectl get cods | grep hello- | wc - l
kubernetes의 deployments와 pod group의 관리 및 확장 방법에 대해 실습을 완료했다.
'Study > Study Jam' 카테고리의 다른 글
[Study Jam] Continuous Delivery with Jenkins in Kubernetes Engine - 1 (0) | 2022.03.25 |
---|---|
[Study Jam] Managing Deployments Using Kubernetes Engine - 2 (0) | 2022.03.24 |
[Study Jam] Introduce to Docker (도커 입문) - 2. Debug, Publish (0) | 2022.03.24 |
[Study Jam] Introduce to Docker (도커 입문) - 1. Build, Run (0) | 2022.03.24 |
[Study Jam] Orchestrating the Cloud with Kubernetes - 2 (0) | 2022.03.24 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!