노드 설정 검증하기
노드 설정 검증하기 (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)를 남겨요. 이 컨테이너들은 기능 테스트 중에 생성돼요.