이 페이지에서는 Anthos 비공개 모드에서 actl
명령줄 도구를 사용하여 클러스터 문제를 진단하는 방법을 설명합니다. diagnose
명령어는 클러스터 상태를 캡처하는 로그 컬렉션이 포함된 보관 파일을 생성합니다.
소개
actl diagnose
명령어로 클러스터의 상태를 캡처할 수 있습니다.
진단 정보는 문제를 발견하고 더 효과적으로 배포를 디버깅하는 데 도움이 될 수 있습니다. 이 명령어는 정의된 범위에 해당하는 모든 관련 클러스터 및 노드 구성 파일을 캡처한 후 단일 tar 보관 파일에 해당 정보를 패키징합니다. 명령어 플래그를 사용하면 명령어의 진단 범위를 선택할 수 있습니다.
actl diagnose
actl diagnose
명령어를 사용하여 클러스터 문제를 해결합니다. 이 명령어는 클러스터의 상태, 구성, 로그를 tar 파일 하나로 압축합니다. 명령어 기본 구성에는 클러스터에 대한 다음 정보가 포함됩니다.
- Kubernetes 버전
- kube-system 및 APM 컨트롤러 네임스페이스의 Kubernetes 리소스 상태: 클러스터, 머신, 노드, 서비스, 엔드포인트, ConfigMap, ReplicaSet, CronJob, pod, 이러한 pod 소유자, 배포, DaemonSet, StatefulSet
- 대상 클러스터가 사용자 클러스터인 경우 사용자 제어 영역 상태(사용자 클러스터 제어 영역은 관리자 클러스터에서 실행)
- IP 주소, iptable 규칙, 마운트 지점, 파일 시스템, 네트워크 연결, 실행 중인 프로세스를 포함한 각 노드 구성에 대한 세부정보
- Kubernetes API 서버를 사용할 수 없는 경우 관리자 클러스터 제어 영역 노드의 컨테이너 로그
- pod, 서비스, 배포, 엔드포인트, 보안 비밀, ConfigMap, 모든 Istio 구성요소 및 사이드카의 현재 및 이전 로그, 모든 Istio 구성 아티팩트를 포함한 Istio 시스템 정보
- config-management-system 관련 네임스페이스의 구성을 포함한 구성 동기화의 정보
actl diagnose
명령어의 로그
시나리오에서 스냅샷 만들기
actl diagnose
명령어는 5가지 시나리오를 지원합니다. 시나리오를 지정하려면 --scenario
플래그를 사용하여 구성이 다음과 같은 스냅샷을 수집합니다.
- all: (기본값) auth, config-management, kubernetes, management-center, service-mesh를 포함한 사전 정의된 모든 시나리오가 포함됩니다.
- auth
- config-management
- Kubernetes
- management-center
- service-mesh
5가지 시나리오 각각을 관리자 클러스터에서 사용할 수 있습니다. 모든 시나리오를 사용하여 관리자 클러스터 스냅샷을 만들려면 다음을 실행합니다.
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG\
--cluster=CLUSTER_NAME\
--scenario=all
다음을 바꿉니다.
ADMIN_CLUSTER_KUBECONFIG
: 관리자 클러스터의 kubeconfig 파일입니다.- (선택사항)
CLUSTER_NAME
: 관리자 클러스터 이름입니다. 클러스터 이름을 모르는 경우 이 플래그를 생략하면 스냅샷을 만들 클러스터를 선택하라는 메시지가 표시됩니다.
출력에는 파일 목록과 tar 파일의 이름이 포함됩니다.
Using ["all"] snapshot configuration...
? Choose a cluster (namespace/name) cluster-admin/admin
Taking snapshots throttled at 10 in-flight requests...
kubectlCommands/anthos-management-center-operator/kubectl_get_updateitems
kubectlCommands/kubectl_cluster-info
kubectlCommands/kubectl_version
kubectlCommands/anthos-management-center/kubectl_logs_git-server-0_--container_git-server_--since_24h0m0s
kubectlCommands/anthos-management-center/kubectl_get_deployments
...
nodes/10.200.0.5/files/lib/systemd/system/docker.service
nodes/10.200.0.4/files/lib/systemd/system/docker.service
...
istioCommands/istioctl_bug-report
Snapshot succeeded.
Snapshots saved in "[TAR_FILE_PATH]/[TAR_FILE_NAME].tar.gz".
스냅샷을 기간으로 제한
--log-since
플래그를 사용하여 로그 컬렉션을 최근 기간으로 제한합니다. 예를 들어 지난 2일부터 또는 지난 3시간부터 로그를 수집할 수 있습니다. 기본적으로 diagnose
은 지난 24시간부터 로그를 수집합니다. 이 플래그는 kubectl
로그에만 지원됩니다.
로그 수집 기간을 제한하려면 다음을 따르세요.
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--scenario=all \
--log-since=DURATION
DURATION
을 2d 또는 3h와 같은 시간 값으로 바꿉니다. 기본 기간은 24h입니다.
스냅샷의 테스트 실행 수행
--dry-run
플래그를 사용하여 수행할 작업과 스냅샷 구성을 표시할 수 있습니다.
관리자 클러스터에서 테스트 실행을 수행하려면 다음을 실행합니다.
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--dry-run
스냅샷 구성 맞춤설정
이 5가지 시나리오가 조직의 요구사항에 맞지 않는 경우 맞춤설정된 스냅샷을 만들 수 있습니다. 구성을 생성한 후 복사하여 새 구성 파일에 붙여넣거나 구성 파일을 처음부터 만들 수 있습니다. 그런 다음 커스텀 구성 파일에서 스냅샷을 만들면 됩니다.
옵션 1: 스냅샷 구성 생성
--scenario
플래그와 --dry-run
플래그를 전달하여 특정 시나리오의 스냅샷 구성을 생성할 수 있습니다. 예를 들어 클러스터의 all(기본값) 시나리오에 대한 스냅샷 구성을 보려면 다음 명령어를 입력합니다.
actl diagnose \
--scenario=all \
--dry-run \
다음은 출력의 예시입니다.
ExcludeWords:
- certificateAuthorityData
- password
InFlightRequests: 10
KubectlCommands:
- Commands:
- kubectl get deployments
- kubectl get deployments -o yaml
- kubectl get pods
- kubectl get pods -o yaml
- kubectl get secret
- kubectl logs
- kubectl get gateways -o yaml
Namespaces:
- istio-system
NodeCommands:
- Commands:
- uptime
- df --all --inodes
- ip addr
- iptables-save --counters
- mount
- ip route list table all
- top -bn1
- docker info
- docker ps -a
- ps -edF
- ps -eo pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup
- conntrack --count
Nodes: []
NodeFiles:
- Files:
- /proc/sys/fs/file-nr
- /proc/sys/net/netfilter/nf_conntrack_max
- /lib/systemd/system/kubelet.service
- /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
- /lib/systemd/system/docker.service
- /etc/docker/daemon.json
Nodes: []
NomosBugReport:
Enabled: true
IstioBugReport:
Enabled: true
명령줄 인터페이스에서 이 명령어 결과를 복사하여 새로 만든 구성 파일(예: myconfig.yaml
)에 붙여넣을 수 있습니다. 다음 값을 수정할 수 있습니다.
InFlightRequests
: 스냅샷을 만드는 데 사용된 동시 스레드 수입니다.excludeWords
: 스냅샷에서 제외할 단어 목록입니다(대소문자를 구분하지 않음). 이러한 단어가 포함된 줄은 스냅샷 결과에서 삭제됩니다. 'password'는 지정 여부와 관계없이 항상 제외됩니다.kubectlCommands
: 실행할kubectl
명령어의 목록입니다. 명령어는 해당 네임스페이스에서 실행됩니다.kubectl logs
명령어의 경우 해당 네임스페이스의 모든 pod와 컨테이너가 자동으로 추가됩니다. 네임스페이스 지정에 정규 표현식이 지원됩니다. 네임스페이스를 지정하지 않으면default
네임스페이스가 가정됩니다.nodeCommands
: 해당 노드에서 실행할 명령어 목록입니다. 결과가 저장됩니다. 노드가 지정되지 않으면 대상 클러스터의 모든 노드가 고려됩니다.nodeFiles
: 해당 노드에서 수집할 파일 목록입니다. 파일이 저장됩니다. 노드가 지정되지 않으면 대상 클러스터의 모든 노드가 고려됩니다.istioBugReport
:istioctl bug-report
스냅샷을 사용 설정하는 플래그입니다.nomosBugReport
:nomos bugreport
스냅샷을 사용 설정하는 플래그입니다.
옵션 2: 커스텀 스냅샷 구성 파일 수동 정의
원하는 스냅샷 매개변수를 사용하여 YAML 파일을 만듭니다. 예를 들면 다음과 같습니다.
ExcludeWords:
- certificateAuthorityData
- password
InFlightRequests: 10
KubectlCommands:
- Commands:
- kubectl get deployments
- kubectl get deployments -o yaml
- kubectl get pods
- kubectl get pods -o yaml
- kubectl get secret
- kubectl logs
- kubectl get gateways -o yaml
Namespaces:
- istio-system
커스텀 스냅샷 구성을 사용하여 스냅샷 만들기
--snapshot-config
플래그를 사용하여 커스텀 스냅샷 구성 파일을 전달합니다.
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--snapshot-config=SNAPSHOT_CONFIG_FILE
SNAPSHOT_CONFIG_FILE
을 커스텀 스냅샷 구성 파일의 이름(예: myconfig.yaml
)으로 바꿉니다.
스냅샷 콘텐츠 검토
tar 파일의 콘텐츠를 검토하려면 다음 명령어를 사용하여 추출합니다.
tar -zxf TAR_FILE_PATHTAR_FILENAME.tar.gz --directory EXTRACTION_DIRECTORY_NAME
지원팀과 상호작용에 연결하기 전에 tar 파일의 콘텐츠를 검토합니다.