주녁, DevNote
article thumbnail

개요

On-premise에서 kubernetes(= k8s) 환경을 직접 구성해보며 학습하는 Hands On 시리즈입니다. 

목표

k8s 환경 내에 간단한 서비스를 배포하기

(배포 과정이 목적이기 때문에 기본 이미지를 사용한다!)


여정

컨테이너 이미지 작성(k8s Hello World)

# k8s에서 만든 hello world 컨테이너 이미지
kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1

# 결과 확인
curl http://<내부 IP>:<Port>

 


Deployment YAML 작성

어플리케이션의 컨테이너 이미지와 실행정보를 담은 YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world
spec:
  replicas: 4
  selector:
    matchLabels:
      app: hello-world
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
        - name: hello-world
          image: gcr.io/google-samples/kubernetes-bootcamp:v1
          ports:
            - containerPort: 80

Service YAML 작성

Load Balancer와 App의 실행 정보를 담은 YAML 파일

apiVersion: v1
kind: Service
metadata:
  name: hello-world-lb
spec:
  selector:
    app: hello-world
  ports:
    - name: http
      port: 80
      targetPort: 80
  type: LoadBalancer

k8s 클러스터 내 배포

# Hello Wolrd App 배포
# -f : yaml 파일 설정 적용
# -n : 네임스페이스(패키지 개념) 적용
sudo kubectl apply -f deployment.yaml -n hello-world

# LoadBalancer 배포
sudo kubectl apply -f service.yaml -n hello-world
# 결과확인

# 마스터 노드에서
watch kubectl get deployment -n hello-world -A -o wide

# 배포된 워커노드에서 
kubectl describe node ${nodeName} -n hello-world

k8s 클러스터 내 배포한 앱 삭제

배포한 순서대로 삭제해야 재실행(Recovery)되지 않는다.

(여기서는 deployment → service → pods 순)

sudo kubectl get deployment -n hello-world
sudo kubectl get service -n hello-world
sudo kubectl get pods -n hello-world

sudo kubectl delete deployment ${배포한 app 이름} -n hello-world
sudo kubectl delete service ${배포한 service 이름} -n hello-world
sudo kubectl delete pods ${실행중인 pod 이름} -n hello-world

마무리

이번 시간에는 k8s 클러스터 내에 hello-world 기본 이미지를 배포해보았다.

 

다음 시간에는 쿠버네티스를 시각화해서 볼 수 있는 편리한 대시보드를 설치해보도록 하자.


참고자료

[k8s/쿠버네티스] - Deployment로 애플리케이션 배포 — 천천히 올바르게 (tistory.com)

쿠버네티스 #6 - 실제 서비스 배포해보기 (tistory.com)

4) Kubernetes 로 Docker 배포하기 (tistory.com)

[NCLOUD] Naver CLoud에서 Kubernetes를 사용해보자 – NKS (manvscloud.com)

kubernetes를 이용한 서비스 무중단 배포 – tech.kakao.com

profile

주녁, DevNote

@junwork

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!