CSI 드라이버: 로그 수집 방법
Summary: 이 문서에서는 기본 로그를 수집하여 Dell CSM(Container Storage Module) 제품군의 문제 해결을 시작하는 방법을 보여줍니다. Dell CSI(Container Storage Interface) 드라이버
Instructions
CSI 드라이버 로그 수집
이 작업은 디버그 활성화, 가능한 경우 문제 재현, CSI 드라이버 컨트롤러에 대한 로그 수집, 노드 Pod에서 로그 수집으로 구성됩니다.
kubectl OpenShift 환경에서는 명령을 "oc"로 대체할 수 있습니다.
CSI 드라이버 컨트롤러 및 노드 포드에 대한 디버그 로그를 활성화합니다.
설명서의 "동적 로깅 구성" 기능을 참조하십시오. https://dell.github.io/csm-docs/docs/csidriver
컨트롤러 및 노드 포드의 이름을 확인합니다.
를 사용하십시오. kubectl get pods 명령을 사용하여 드라이버 네임스페이스의 Pod를 나열합니다.
# kubectl get pods -n isilon NAME READY STATUS RESTARTS AGE isilon-controller-66d7d9d7c-6j6f4 6/6 Running 0 11m isilon-node-9wngk 2/2 Running 0 27d
CSI 드라이버 컨트롤러 로그를 수집합니다.
컨트롤러 포드에 대한 로그를 수집해야 합니다. 를 사용하여 모든 컨트롤러에서 로그 수집 kubectl logs 명령을 실행합니다. 드라이버와 같은 관련 컨테이너를 전달해야 합니다.
kubectl logs -n <namespace> <controller> <container> > <file name>
예:
kubectl logs -n isilon isilon-controller-66d7d9d7c-6j6f4 driver > isilon-controller-66d7d9d7c-6j6f4_driver.log
문제와 관련된 모든 필수 컨테이너(연결기, 스냅샷터, 프로비저너, 드라이버, 크기 조정기 등)에 대해 반복합니다. 컨트롤러 이름 및 컨테이너와 일치하도록 출력 파일의 파일 이름을 변경해야 합니다.
CSI 드라이버 노드 Pod 로그를 수집합니다.
작업자 노드에 대한 로그도 수집해야 합니다. 여기에는 하나의 노드가 포함될 수 있으며, 문제 Pod가 한 노드에서 다른 노드로 이동하는 경우 여러 노드가 포함될 수 있습니다. 이렇게 하면 CSI 드라이버 노드 Pod(드라이버, 등록 기관 등)의 각 컨테이너에 대한 로그가 수집됩니다.
kubectl logs -n <namespace> <worker node> > <filename>.txt
예:
kubectl logs -n isilon isilon-node-9wngk driver > isilon-node-9wngk_driver.txt kubectl logs -n isilon isilon-node-9wngk registrar > isilon-node-9wngk_registrar.txt
대안
스크립트
: 이렇게 하면 모든 컨트롤러 로그가 개별적으로 생성되고(필요한 경우 "isilon" 네임스페이스 2자리 변경) 필요에 따라 컨테이너가 추가됩니다.
for x in $(kubectl get pods -n isilon | grep controller | awk '{print $1}'); do for i in attacher provisioner driver snapshotter;do kubectl logs -n isilon $x -c $i > $x-$i.txt;done;done
이렇게 하면 노드 로그를 수집하고(필요한 경우 두 위치에서 "isilon" 네임스페이스 변경) 필요에 따라 컨테이너를 추가합니다.
for x in $(kubectl get pods -n isilon | grep node | awk '{print $1}'); do for i in driver registrar;do kubectl logs -n isilon $x -c $i > $x-$i.txt;done;done
이후 옵션
모든 로그를 수집하면 필요한 것보다 많은 데이터를 얻을 수 있습니다. 이 "--since" 옵션을 사용하여 알려진 시간 동안 수집할 수 있습니다. 이 옵션 다음에는 로그 수집이 얼마나 오래 전에 이루어져야 하는지에 따라 초, 분, 시간 동안 "5초", "5m" 또는 "5시간"이 표시됩니다. 문제가 재현된 경우에도 도움이 되며, 마지막 5분 동안의 로그(또는 재현하는 데 걸린 시간)를 수집합니다.
예:
kubectl logs -n isilon isilon-node-xxx driver --since 5m > isilon-node-xxx_driver.txt
모든 컨테이너
위에서 설명한 대로 로그를 별도로 수집하면 문제 해결에 도움이 됩니다. 경우에 따라 컨테이너 이름을 "--all-containers"를 사용하여 모든 Pod의 컨테이너 로그를 수집하는 것이 유용할 수 있습니다.
예:
kubectl logs -n isilon isilon-node-xxx --all-containers> isilon-node_driver.txt
기타 필수 정보:
컨테이너 오케스트레이터(K8s, OpenShift 등) 및 버전
Kubernetes 버전 및 플레이버
드라이버 버전
어레이 버전 또는 마이크로코드
K8 노드 운영 체제 및 버전
Additional Information
배포를 나열하려면 다음을 수행합니다.
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
csi-powerscale isilon-controller 1/1 1 1 14d
powermax powermax-controller 1/1 1 1 26d unity-controller 1/1 1 26d
unity-controller 1/1 1 47d
vxflexos vxflexos-controller 2/2 2 2 107d
-이름:
X_CSI_DEBUG 가치: "true"
인 Isilon의 경우 OneFS REST API의 콘텐츠도 0(true)으로 설정하여 디버그에 기록해야 합니다.
-이름:
X_CSI_VERBOSE 값: 데몬 세트를 편집하여 "0"
CSI 드라이버 노드 디버그 로그를 활성화합니다.
디버그가 데몬 세트를 편집하여 활성화됩니다.
데몬 세트를 나열하려면 다음을 수행합니다.
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
csi-powerscale isilon-node 2 2 2 2 14d
powermax powermax-node 2 2 2 2 26d
unity-node 2 2 2 2 47d
vxflexos vxflexos-node 2 2 2 2 2 107d
-이름:
X_CSI_DEBUG 가치: "true"
Isilon의 경우 OneFS REST API의 콘텐츠도 0(true)으로 설정하여 디버그에 기록해야 합니다.
-이름:
X_CSI_VERBOSE 값: "0"
디버그 로그는 소급되지 않으므로 로그를 수집하기 전에 가능하면 문제를 재현합니다.