ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 도커/쿠버네티스 공부 #7
    IT_개발/devops 2024. 1. 13. 14:16

    매니페스트 파일

    컴포즈 파일과 마찬가지로 주 항목이 있다.

    ex)

    apiVersion: API그룹 및 버전

    kind: 리소스 유형

    metadata: 메타데이터

    spec: 리소스 내용

     

    리소스 설정:

    api그룹과 리소스 유형을 지정해야함

    작성 예시는 공식사이트 참고

    (https://kubernetes.io/ko/docs/concepts/cluster-administration/manage-deployment/)

    메타데이터와 스펙:

    메타데이터에는 리소스의 이름이나 레이블을 기재

    스펙은 리소스의 내용을 정의

    ex)주요 메타데이터

    name: 리소스의 이름, 문자열로 된 유일(?)식별자

    namespace: 리소스를 세분화한 DNS호환 레이블

    uid: 유일 식별자

    resourceVersion: 리소스 버전

    generation: 생성 순서를 나타내는 번호

    creationTimestamp: 생성일시

    deletionTimestamp: 삭제일시

    labels: 임의의 레이블

    anotation: 리소스에 설정할 값, 선택대상은 되지 못한다

     

    레이블과 셀렉터: 

    파드나 서비스같은 리소스에 원하는 레이블을 붙일 수 있음, 키-값 형태로 메타데이터로 설정,

    레이블을 지정하면 셀렉터 기능을 사용 특정 레이블이 부여된 파드만 배포하는 등 특정 파드를 선택해 설정 할 수 있다.

     

    메타데이터와 스펙 작성 - 파드

    파드를 대상으로 메타데이터와 스펙 작성 예시

    주항목 metadata와 spec하위에 들여쓰기로 하위항목을 작성

    항목예시)

    metadata:

      name: (파드 이름)

      labels: (레이블)

    spec:

      containers: (컨테이너 구성)

        -name: (컨테이너 이름)

          image: (이미지 이름)

          ports: (포트설정)

    실제 작성예시)

    apiVersion: v1

    kind: Pod

    metadata: 

      name: apa000pod

      labels:

        app: apa000kube

    spec:

      containers:

        - name: apa000ex91

          image: httpd

          ports: 

          - containerPort: 80

     

    메타데이터와 스펙작성 - 디플로이먼트

    디플로이먼트의 스펙은 템플릿 형태로 파드의 설정을 기재

    항목예시)

    apiVersion:

    kind:

    metadata: 

      name: (디플로이먼트 이름)

    spec: 

      selector: (셀렉터 설정)

        matchLabels: (셀렉터가 선택할 관리대상 레이블)

      replicas: (레플리카 설정)

      template: (템플릿(파드의 정보))

        metadata: (파드의 메타데이터 기재)

        spec: (파드의 스펙을 기재)

    -셀렉터의 설정: 특정한 레이블이 부여된 파드를 관리할 수 있도록 설정 여기서 쓰는 matchLabels은 template하위의 metadata에 기재된것

    -레플리카의 설정: 파드의 레플리카에 대한 관리, 파드수를 몇개로 유지할것인지설정, 0으로 설정시 파드가 사라진다

    -템플릿 작성: 생성할 파드의 정보를 여기에 기재, 파드의 이름은 지정하지 않는다.(파드의 수가 늘어나면 레이블로 관리하는 경우가 많기 때문)

    디플로이먼트 메니페스트 작성 예시)

    apiVersion: app/v1

    kind: Deployment

    metadata:

      name: apa000dep

    spec:

      selector:

        matchLabels:

          app: apa000kube

      replicas: 3

      template:

        metadata: 

          labels:

            app: apa000kube

        spec:

          containers

          - name: apa000ex91

            image: httpd

            ports:

            - containerPort: 80

     

    메타데이터와 스펙 작성 - 서비스

    서비스의 역할은 파드로 들어오는 요청을 관리하는것으로 설정내용도 통신과 관련된것

    항목 예시)

    apiVersion:

    kind:

    metadata:

      name: (서비스의 이름)

    spec:

      type: (서비스의 유형)

      ports: (포트설정)

      - port: (서비스의 포트)

        targetPort: (컨테이너의 포트)

        protocol: (통신에 사용되는 프로토콜)

        nodePort: (워커노드의 포트)

      selector: (셀렉터 설정)

    -유형 설정: 유형은 서비스의 종류를 말함, 외부로부터 어떤유형의 IP주소(또는 DNS)로 접근할지를 설정

      ClusterIP: (클러스터 IP를 통해 서비스에 접근하도록 함, 외부에서는 접근 불가)

      NodePort: (워커노드의 IP를 통해 서비스에 접근하도록 함)

      LoadBalancer: (로드밸런서의 IP를 통해 서비스에 접근)

      ExternalName: (파드에서 서비스를 통해 외부로 나가기 위한 설정)

    -포트 설정

      port: (서비스의 포트)

      nodePort: (워커노드의 포트)

      targetPort: (컨테이너 포트)

    프로토콜은 통신프로토콜을 의미, 일반적으로 TCP로 설정

    -셀렉터 설정: 서비스에서는 matchLabels를 사용하면 안됨

    실제 작성예시)

    apiVersion: v1

    kind: Service

    metadata:

      name: apa000ser

    spec:

      type: NodePort

      ports:

      - port: 8099

        targetPort: 80

        protocol: TCP

        nodePort: 30080

      selector:

        app: apa000kube

    'IT_개발 > devops' 카테고리의 다른 글

    도커/쿠버네티스 공부 #9  (0) 2024.01.20
    도커/쿠버네티스 공부 #8  (0) 2024.01.17
    도커/쿠버네티스 공부 #6  (1) 2024.01.10
    도커/쿠버네티스 공부 #5  (0) 2024.01.07
    도커/쿠버네티스 공부 #4  (0) 2024.01.06
Designed by Tistory.