Kubernetes 학습 노트 ---002 Kubernetes 대상 이해

Kubernetes 학습 노트 - 002 Kubernetes 대상 이해


이 페이지에서는 Kubernetes 객체가 Kubernetes API에 표시되는 방법과 .yaml 형식의 파일에 표시되는 방법에 대해 설명합니다.

Kubernetes 객체 이해


Kubernetes 시스템에서 Kubernetes 객체는 영구적인 솔리드입니다.Kubernetes는 이 실체를 사용하여 전체 집단의 상태를 표시합니다.특히 다음과 같은 정보를 설명합니다.
  • 실행 중인 컨테이너 및 Node에 적용되는 컨테이너 유형
  • 응용할 수 있는 자원
  • 응용 실행 시 나타나는 정책, 예를 들어 리셋 정책, 업그레이드 정책, 오류 정책
  • Kubernetes 대상은 '목표적 기록' 입니다. 대상을 만들면 Kubernetes 시스템은 대상이 존재하는지 확인하기 위해 계속 작업합니다.창설 대상을 통해 본질적으로 Kubernetes 시스템에 필요한 집단 작업 부하가 어떻게 보이는지 알려주는 것이 바로 Kubernetes 집단의 기대 상태(Desired State)이다.
    Kubernetes 대상을 조작합니다. 창설, 수정, 삭제, Kubernetes API를 사용해야 합니다.예를 들어 kubectl 명령줄 인터페이스를 사용할 때 CLI는 필요한 Kubernetes API 호출을 실행하고 프로그램에서 클라이언트 라이브러리 (소스 관리 도구) 를 사용하여 Kubernetes API를 직접 호출할 수 있다.

    객체 규약(Spec) 및 상태(Status)


    모든 Kubernetes 대상은 두 개의 끼워 넣은 대상 필드를 포함하고, 대상의 설정을 관리합니다. 대상 스펙과 대상 status입니다.spec는 객체의 원하는 상태(Desired State) - 원하는 객체의 특징을 설명하는 데 필요합니다.status는 Kubernetes 시스템에서 제공하고 업데이트된 객체의 실제 상태(Actual State)를 설명합니다.Kubernetes 제어면은 항상 대상의 실제 상태를 기대 상태와 일치하도록 관리하려고 노력합니다.
    예를 들어 Kubernetes Deployment 객체는 클러스터에서 실행되는 응용 프로그램을 나타낼 수 있습니다.Deployment를 만들 때, 이 응용 프로그램이 세 개의 복사본이 실행되어야 한다는 규칙을 설정해야 할 수도 있습니다.Kubernetes 시스템은 Deployment 규약을 읽고 우리가 원하는 이 응용 프로그램의 세 가지 실례인 갱신 상태를 시작하여 규약과 일치하도록 합니다.만약 그 실례들 중 실패한 (상태 변경) 이 있다면, Kubernetes 시스템은 수정을 통해 규정과 상태 사이의 불일치에 응답합니다. 이 경우, 새로운 실례를 시작해서 대체합니다.

    Kubernetes 객체 설명


    Kubernetes 대상을 만들 때, 대상의 기대 상태와 대상에 대한 기본 정보 (예: 이름) 를 설명하기 위한 규칙을 제공해야 합니다.Kubernetes API를 사용하여 객체를 만들 때(또는 직접 만들거나 기반kubectl API 요청은 요청체에 JSON 형식의 정보를 포함해야 합니다.대다수 상황에서 필요는.yaml 파일에서 kubectl에 이 정보를 제공합니다.kubectl API 요청을 실행할 때 이 정보를 JSON 형식으로 변환합니다.
    Kubernetes Deployment의 필수 필드와 대상 규약을 보여 주는 .yaml 예제 파일이 있습니다.application/deployment.yaml
    apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2 # tells deployment to run 2 pods matching the template
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
    

    위와 유사한 .yaml 파일을 사용하여 Deployment를 만듭니다. kubectl 명령줄 인터페이스 (CLI) 의 kubectl apply 명령을 사용하여 .yaml 파일을 매개 변수로 만듭니다.다음은 예입니다.
    kubectl apply -f https://k8s.io/examples/application/deployment.yaml --record
    

    출력은 다음과 같습니다.
    deployment.apps/nginx-deployment created
    

    필수 필드


    만들려는 Kubernetes 객체에 해당하는 .yaml 파일에서 다음 필드를 구성해야 합니다.
  • apiVersion - 객체에 사용되는 Kubernetes API의 버전을 만듭니다
  • .
  • kind - 만들려는 객체 유형
  • metadata - 문자열, UID 및 옵션name 1개
  • 를 포함한 객체의 고유성을 식별할 수 있는 데이터

    좋은 웹페이지 즐겨찾기