Kubectl 로 노드 검사하기

KubernetesBeginner
지금 연습하기

소개

이 랩에서는 kubectl을 사용하여 Kubernetes 클러스터의 노드를 검사하는 방법을 배우게 됩니다. 기본적인 노드 정보부터 시작하여 taint(테인트) 및 toleration(톨러레이션) 과 같은 고급 주제까지 다룰 것입니다. 이 랩은 이미 Kubernetes 클러스터가 설정되어 있고 kubectl이 설치되어 있다고 가정합니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 86%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

Minikube 클러스터 시작

리소스를 생성하기 전에 실행 중인 Kubernetes 클러스터가 필요합니다. Minikube 는 로컬 머신에서 실행되는 가벼운 Kubernetes 환경입니다.

  1. 작업 디렉토리로 이동:

    터미널을 열고 기본 프로젝트 폴더로 이동합니다.

    cd /home/labex/project
  2. Minikube 시작:

    Minikube 를 시작하여 Kubernetes 클러스터를 초기화합니다.

    minikube start
    • 이 명령은 로컬 머신에 단일 노드 Kubernetes 클러스터를 설정합니다.
    • Minikube 는 시스템 성능에 따라 시작하는 데 몇 분 정도 걸릴 수 있습니다.
  3. Minikube 가 실행 중인지 확인:

    Minikube 클러스터의 상태를 확인합니다.

    minikube status
    • kubeletapiserver와 같은 구성 요소가 Running으로 나열되어 있는지 확인합니다.
    • 클러스터가 실행 중이지 않으면 minikube start를 다시 실행합니다.

Minikube 를 시작하는 데 문제가 발생하면 필요에 따라 minikube delete를 사용하여 환경을 재설정하십시오.

기본 노드 정보

가장 먼저 할 일은 클러스터의 노드에 대한 기본 정보를 얻는 것입니다.

  1. 클러스터의 노드 목록을 보려면 다음 명령을 실행합니다.

    kubectl get nodes

    이렇게 하면 클러스터의 모든 노드 목록과 해당 상태가 표시됩니다.

  2. 특정 노드에 대한 자세한 정보를 얻으려면 다음 명령을 실행합니다.

    kubectl describe node minikube

    minikube를 검사하려는 노드의 이름으로 바꿉니다. 이렇게 하면 노드의 상태, 용량 및 사용량에 대한 자세한 정보가 제공됩니다.

레이블 및 어노테이션

레이블과 주석은 클러스터의 노드에 메타데이터를 추가하는 데 사용할 수 있습니다. 이 메타데이터는 특정 작업에 대한 노드를 선택하거나 특정 기준에 따라 노드를 필터링하는 데 사용할 수 있습니다.

  1. 특정 노드의 레이블과 주석을 보려면 다음 명령을 실행합니다.

    kubectl get node minikube --show-labels=true

    이렇게 하면 지정된 노드의 레이블과 주석이 표시됩니다.

  2. 노드에 레이블을 추가하려면 다음 명령을 실행합니다.

    kubectl label node minikube org=labex
  3. 노드에 주석을 추가하려면 다음 명령을 실행합니다.

    kubectl annotate node minikube environment=production
  4. 노드의 레이블을 확인하려면 다음 명령을 사용합니다.

    kubectl get nodes --show-labels

    이렇게 하면 클러스터의 모든 노드 목록과 해당 레이블이 출력됩니다. 노드는 목적이나 특성을 식별하는 데 도움이 되도록 레이블을 지정할 수 있습니다.

Taints 및 Tolerations

테인트와 톨러레이션은 클러스터에서 어떤 파드가 어떤 노드에서 스케줄링될 수 있는지 제어하는 데 사용할 수 있습니다. 테인트는 특정 유형의 파드에 적합하지 않음을 나타내는 노드에 대한 특수 레이블이며, 톨러레이션은 일치하는 테인트가 있는 노드에서 파드를 스케줄링할 수 있도록 하는 설정입니다.

  1. 특정 노드의 테인트를 보려면 다음 명령을 실행합니다.

    kubectl describe node minikube | grep Taints

    이렇게 하면 지정된 노드의 테인트가 표시됩니다.

  2. 노드에 테인트를 추가하려면 다음 명령을 실행합니다.

    kubectl taint node minikube app=backend:NoSchedule
  3. 파드에 톨러레이션을 생성하려면 다음 명령을 실행합니다.

    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
        - name: my-container
          image: nginx
      tolerations:
        - key: app
          operator: Exists
          effect: NoSchedule
    EOF

    이 파드는 테인트의 이름으로 app을 사용하고, 테인트가 가져야 할 효과로 NoSchedule을 사용합니다.

노드 용량 및 리소스 사용량 확인

노드에서 사용 가능한 리소스를 보려면 다음 명령을 사용합니다.

kubectl describe node minikube | grep -A 8 "Allocated resources"

minikube를 검사하려는 노드의 이름으로 바꿉니다.

이렇게 하면 노드의 용량 및 현재 리소스 사용량을 포함한 자세한 정보가 제공됩니다.

노드 이벤트 확인

Kubernetes 에서 특정 노드와 관련된 모든 이벤트를 필터링하려면 다음 명령을 사용할 수 있습니다.

kubectl get events --field-selector involvedObject.kind=Node,involvedObject.name=minikube

minikube를 쿼리하려는 노드의 이름으로 바꿉니다. 이 명령은 해당 노드와 관련된 모든 이벤트 (예: 재시작, 업그레이드 등) 를 나열합니다.

노드 Cordon 및 Uncordon 작업

경우에 따라 유지 관리 또는 기타 이유로 노드를 로테이션에서 제외해야 할 수 있습니다. Kubernetes 는 새 Pod 가 예약되지 않도록 노드를 예약 불가능으로 표시하는 방법을 제공합니다. 이를 "cordon"이라고 합니다.

노드를 격리하려면 다음 명령을 사용합니다.

kubectl cordon minikube

minikube를 격리하려는 노드의 이름으로 바꿉니다.

그런 다음 다음 명령을 사용하여 노드 상태를 확인합니다.

kubectl get node

노드 격리를 해제하고 새 Pod 가 예약되도록 하려면 다음 명령을 사용합니다.

kubectl uncordon minikube

minikube를 격리 해제하려는 노드의 이름으로 바꿉니다.

노드를 격리해도 기존 Pod 가 자동으로 노드에서 이동하지는 않습니다. 중단을 방지하려면 노드를 격리하기 전에 Pod 를 수동으로 삭제하거나 이동해야 합니다.

축하합니다. Kubernetes 에서 노드를 격리하고 격리 해제하는 방법을 배웠습니다.

요약

이 랩에서는 kubectl을 사용하여 Kubernetes 클러스터의 노드를 검사하는 방법을 배웠습니다. 노드를 나열하고, 상태를 확인하고, 레이블을 보고, 용량 및 리소스 사용량을 검사하는 방법을 배웠습니다. 또한 유지 관리 및 업그레이드를 위해 노드를 드레이닝하고 격리 해제하는 방법도 배웠습니다.