본문 바로가기
도커&쿠버네티스

[katakoda] Deploy Containers Using YAML 컨테이너 배포하기

by bzerome240 2022. 3. 22.
이 시나리오에서는 Kubectl을 사용하여 배포, 복제 컨트롤러를 생성 및 시작하고 yaml 정의를 작성하여 서비스를 통해 노출하는 방법을 배웁니다.
YAML 정의는 배포를 위해 예약되는 Kubernetes 객체를 정의합니다. 객체를 업데이트하고 클러스터에 재배포하여 구성을 변경할 수 있습니다.

 

1 디플로이먼트 생성하기

 

디플로이먼트 객체는 가장 흔한 쿠버네티스 객체이다.

디플로이먼트 객체는 이름과 라벨과 함께 필요한 컨테이너 사양을 정의한다. 

 

80포트에서 실행하는 도커이미지 katacoda/docker-http-server 를 사용해서 webapp1이라는 어플리케이션을 실행하는 방법을 정의 한 YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: webapp1
  template:
    metadata:
      labels:
        app: webapp1
    spec:
      containers:
      - name: webapp1
        image: katacoda/docker-http-server:latest
        ports:
        - containerPort: 80

 

클러스터에 배포하기

kubectl create -f deployment.yaml

 

디플로이먼트 확인하기

ubectl get deployment

 

개별 디플로이먼트의 세부사항 출력하기

kubectl describe deployment webapp1

 

 

2 서비스 생성하기

 

여러 레플리카 또는 인스턴스가 배포되면 공통 라벨 기반으로 자동으로 로드밸런스된다

서비스는 NodePort를 통해 애플리케이션을 사용할 수 있다.

apiVersion: v1
kind: Service
metadata:
  name: webapp1-svc
  labels:
    app: webapp1
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 30080
  selector:
    app: webapp1

모든 쿠버네티스 객체는 동일한 방법으로 배포된다.

 

서비스 배포하기

kubectl create -f service.yaml

 

서비스 확인하기

kubectl get svc

 

서비스 자세한 내용 확인하기

kubectl describe svc webapp1-svc

 

curl host01:30080

 

 

3 디플로이먼트 확장하기

 

실행중인 인스턴스 수 증가 시키기 위해 YAML 파일의 레플리카 수 수정하기 ex) replicas: 4

 

기존 정의된 파일 업데이트는 kubectl apply를 사용한다.

kubectl apply -f deployment.yaml

 

클러스가 원하는 상태가 된다.

kubectl get deployment

 

요청과 일치하도록 pod가 추가된다.

kubectl get pods

모든 pod에는 동일한 라벨이 있으므로 NodePort 뒤에서 로드 밸런싱 된다.

 

포트에 요청이 발생하면 다른 컨테이너가 요청을 처리한다.

curl host01:30080

 

 

 

 

 

728x90
반응형

댓글