선언적 접근

유현민·2022년 9월 26일
0

도커 & 쿠버네티스

목록 보기
26/28
post-thumbnail

명령적 접근

  • 명령을 외워야 한다.

  • 항상 반복한다.

deployment.yaml

  • config 파일을 사용해서 원하는 목표 상태를 정의한다.

  • .yml or .yaml 파일 생성, 이름은 마음대로

  • apiVersion은 홈페이지에서 확인

  • kind : Deployment 등 타입? 적기

  • metadata : 이름 적기

  • spec : 사양 적기

  • replicas : pod 인스턴스의 수, 적지 않으면 1이 기본, pod가 실행되는 것을 원하지 않는다면 0

  • template : pod를 정의

  • labels : 이름 지정하기를 원한다면

  • spec : 개별 pod 사양 지정

  • matchExpressions:
    - {key: app, operator: In, values: [second-app, first-app]}

kubectl apply -f 파일이름 -> 연결된 클러스테어 구성 파일을 적용

  • labels에서 본인이 정의한 모든 pod가 matchLabels에 적혀 있으면 kind에 적혀있는 deployment에 의해 제어되어야 한다고 알린다.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: second-app-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: second-app
      tier: backend
  template:
    metadata: 
      labels:
        app: second-app
        tier: backend
    spec: 
      containers:
        - name: second-node
          image: y7y1h13/kub-first-app:2
          

service.yaml

kubectl apply -f service.yaml -> service 적용

apiVersion: v1
kind: Service
metadata:
  name: backend
spec:
  selector:
    app: second-app
    tier: backend
  ports:
    - protocol: 'TCP'
      port: 80
      targetPort: 8080
    # - protocol: 'TCP'
    #   port: 443
    #   targetPort: 443
  type: LoadBalancer

수정, rollback

변경 후 전의 적용 명령어 실행

삭제

kubectl delete deployment 이름

kubectl delete -f 파일이름

kubectl delete deployments,services -l group=그룹이름 -> 콤마뒤에 띄어쓰기 x

파일 하나로?

---를 이용하면 파일 안에서 나누기 가능

  • 가능하면 service를 먼저 배치하는 것이 좋다.

  • 리소스는 위에서 아래로 생성된다.

구동 확인

          livenessProbe:
            httpGet:
              path: /
              port: 8080
            periodSeconds: 10
            initialDelaySeconds: 5
profile
smilegate megaport infra

0개의 댓글