[Kubernetes] 쿠버네티스 실습 2 - 기본 사용법(1)

22 Nov 2023 - juno

#cloud  #kubernetes 


2023-11-22 클라우드 프로그래밍 12주차 강의2


목차

매니페스트

매니페스트(manifest)

디플로이먼트 YAML 파일 예시

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  replicas: 4
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myfront
        image: myphpimage
        volumeMounts:
        - name: html-volume
          mountPath: /var/www/html
        ports:
        - containerPort: 80
      - name: mytaskapi
        image: myphpimage
        volumeMounts:
        - name: task-volume
          mountPath: /var/www/html
        ports:
        - containerPort: 80
      - name: myuserapi
        image: myphpimage
        volumeMounts:
        - name: user-volume
          mountPath: /var/www/html
        ports:
        - containerPort: 80
      volumes:
      - name: html-volume
        hostPath:
          path: /path/to/your/html
      - name: task-volume
        hostPath:
          path: /path/to/your/php/task
      - name: user-volume
        hostPath:
          path: /path/to/your/php/user
    replicas -> 파드를 몇개까지 만들것인가, 그리고 worker0, worker1의 자원 상태에따라 그 파드들을 적절히 분배한다.

서비스 YAML 예시

apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  type: NodePort #NodePort, LoadBalancer(kubectl get services 로 외부 서비스 IP 확인), ClusterIP(클러스터 내부에서만 접속, 외부접속 X)
  selector:
    app: myapp
  ports:
  - name: myfront
    port: 8011
    targetPort: 80
  - name: mytaskapi
    port: 8012
    targetPort: 80
  - name: myuserapi
    port: 8013
    targetPort: 80
    pod들은 master에는 없고 worker0, worker1에만 있음

파드 생성 및 관리

파드생성(실습)

#create로 파드 생성
kubectl create deployment my-httpd --image=httpd --replicas=1 --port=80

스테이트리스와 스테이트풀

디플로이먼트 관리(실습)

디플로이먼트 목록 확인

kubectl get deployment

디플로이먼트의 추가 정보를 포함하여 목록 확인

kubectl get deployment -o wide

파드 관리(실습)

파드 목록 확인

kubectl get pod

파드의 추가 정보를 포함하여 목록 확인

kubectl get pod -o wide

NAME: my-httpd-7547bdb59f-62tcw

  • my-httpd -> 이미지 이름
  • 7547bdb59f -> 디플로이먼트 이름
  • 62tcw -> 파드 이름

curl 명령어로 httpd 웹 서버에 IP로 접속

#‘It works!’라는 결과가 출력되었다면 웹 서비스가 정상적으로 동작하고 있다는 의미
curl 10.36.0.1

파드 삭제(실습)

디플로이먼트 삭제

#kubectl delete deployment [ 디플로이먼트 이름 ]
kubectl delete deployment my-httpd

파드 관리(실습)

생성된 컨테이너나 파드에 접속

kubectl exec -it my-httpd-7547bdb59f-cdkd9 -- /bin/bash

파드의 로그 확인

kubectl logs my-httpd-7547bdb59f-cdkd9

파드에 접속되었던 로그들이 뜸

reference

교수님 강의 및 블로그, hull.kr