노드 설정 검증하기

노드 설정 검증하기 (Validate node setup)

노드 준수 테스트 (Node Conformance Test)

노드 준수 테스트(node conformance test)는 노드에 대한 시스템 검증과 기능 테스트를 제공하는 컨테이너화된 테스트 프레임워크예요. 이 테스트는 노드가 Kubernetes의 최소 요구 사항을 충족하는지 검증하며, 테스트를 통과한 노드는 Kubernetes 클러스터에 합류할 자격이 있어요.

출처: 문서

본문

노드 사전 요구 사항 (Node Prerequisite)

노드 준수 테스트를 실행하려면 노드가 표준 Kubernetes 노드와 같은 사전 요구 사항을 충족해야 해요. 최소한 노드에는 다음 데몬이 설치되어 있어야 해요.

  • Docker, containerd, CRI-O 같은 CRI 호환 컨테이너 런타임
  • kubelet

노드 준수 테스트 실행하기

노드 준수 테스트를 실행하려면 다음 단계를 수행해요.

  • kubelet의 --kubeconfig 옵션 값을 확인해요. 예를 들어 --kubeconfig=/var/lib/kubelet/config.yaml처럼요. 테스트 프레임워크는 kubelet을 테스트하기 위해 로컬 컨트롤 플레인을 시작하므로, API 서버의 URL로 http://localhost:8080을 사용해요. 사용할 수 있는 다른 kubelet 명령줄 파라미터도 있어요. --cloud-provider: --cloud-provider=gce를 사용하고 있다면 테스트를 실행하려면 그 플래그를 제거해야 해요.
  • 다음 명령으로 노드 준수 테스트를 실행해요.

다른 아키텍처용 노드 준수 테스트 실행하기

Kubernetes는 다른 아키텍처용 노드 준수 테스트 docker 이미지도 제공해요.

Arch Image
amd64 node-test-amd64
arm node-test-arm
arm64 node-test-arm64

선택한 테스트 실행하기

특정 테스트를 실행하려면 FOCUS 환경 변수를 실행하려는 테스트의 정규식으로 덮어써요.

sudo docker run -it --rm --privileged --net=host \
  -v /:/rootfs:ro -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \
  -e FOCUS=MirrorPod \ # Only run MirrorPod test
  registry.k8s.io/node-test:0.2

특정 테스트를 건너뛰려면 SKIP 환경 변수를 건너뛰려는 테스트의 정규식으로 덮어써요.

sudo docker run -it --rm --privileged --net=host \
  -v /:/rootfs:ro -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \
  -e SKIP=MirrorPod \ # Run all conformance tests but skip MirrorPod test
  registry.k8s.io/node-test:0.2

노드 준수 테스트는 node e2e test의 컨테이너화된 버전이에요. 기본적으로 모든 준수 테스트를 실행해요.

이론적으로는 컨테이너와 마운트해야 할 볼륨을 제대로 구성하면 어떤 node e2e 테스트든 실행할 수 있어요. 하지만 컨테이너를 올바르게 구성하고 필요한 볼륨을 마운트하면 기술적으로 모든 node e2e 테스트를 실행할 수 있어요. 다만 비준수 테스트를 실행하려면 훨씬 더 복잡한 구성이 필요하므로, 준수 테스트만 실행하는 것을 강력히 권장해요.

주의 사항 (Caveats)

  • 이 테스트는 노드에 몇몇 docker 이미지를 남겨요. 여기에는 노드 준수 테스트 이미지와 기능 테스트에서 사용된 컨테이너 이미지가 포함돼요.
  • 이 테스트는 노드에 죽은 컨테이너(dead container)를 남겨요. 이 컨테이너들은 기능 테스트 중에 생성돼요.

더 알아보기 (Learn more)