다음을 통해 공유


Azure Stack Hub에서 AKS 엔진 문제 해결

Azure Stack Hub에서 AKS 엔진을 배포하거나 작업할 때 문제가 발생할 수 있습니다. 이 문서에서는 AKS 엔진 배포 문제를 해결하는 단계를 살펴봅니다. AKS 엔진에 대한 정보를 수집하고, Kubernetes 로그를 수집하고, 사용자 지정 스크립트 확장 오류 코드를 검토합니다. AKS 엔진에 대한 GitHub 문제를 열 수도 있습니다.

참고

AKSe 버전 0.75.3 이상의 aks-engine 경우 아래 명령은 가 아닌 aks-engineaks-engine-azurestack 시작됩니다.

AKS 엔진 설치 문제 해결

이전 설치 단계가 실패한 경우 GoFish 패키지 관리자를 사용하여 AKS 엔진을 설치할 수 있습니다. GoFish는 자신을 플랫폼 간 Homebrew 설명합니다.

GoFish를 사용하여 AKS 엔진을 설치하는 방법에 대한 지침은 여기에서 찾을 수 있습니다.

노드 및 클러스터 로그 수집

노드 및 클러스터 로그 검색에서 노드 및 클러스터 로그 수집에 대한 지침을 찾을 수 있습니다.

사전 요구 사항

이 가이드에서는 Azure CLIAKS 엔진을 이미 다운로드했다고 가정합니다.

또한 이 가이드에서는 AKS 엔진을 사용하여 클러스터를 배포했다고 가정합니다. 자세한 내용은 Azure Stack Hub에서 AKS 엔진을 사용하여 Kubernetes 클러스터 배포를 참조하세요.

로그 검색

aks-engine get-logs 명령은 클러스터 문제를 해결하는 데 유용할 수 있습니다. 명령은 워크스테이션에 파일 집합을 생성, 수집 및 다운로드합니다. 파일에는 노드 구성, 클러스터 상태 및 구성, 로그 파일 설정이 포함됩니다.

상위 수준: 명령은 각 노드에 SSH 세션을 설정하고, 관련 파일을 수집하고 압축하는 로그 수집 스크립트를 실행하고, .ZIP 파일을 로컬 컴퓨터에 다운로드하여 작동합니다.

SSH 인증

클러스터 Linux 노드에 대한 SSH 세션을 설정하려면 유효한 SSH 프라이빗 키가 필요합니다. Windows 자격 증명은 API 모델에 저장되며 여기에서 로드됩니다. Windows 노드에서 SSH를 사용하도록 설정하려면 true로 설정합니다 windowsprofile.sshEnabled .

스토리지 계정 컨테이너에 로그 업로드

클러스터 로그가 성공적으로 검색되면 선택적 매개 변수 --upload-sas-url 가 설정된 경우 AKS 엔진이 Azure Storage 계정 컨테이너에 저장할 수 있습니다. AKS 엔진은 컨테이너 이름이 제공된 SAS URL의 일부가 될 것으로 예상합니다. 예상되는 형식은 입니다 https://{blob-service-uri}/{container-name}?{sas-token}.

참고

AD FS ID 공급자를 사용하는 사용자 지정 클라우드의 스토리지 계정은 아직 지원되지 않습니다.

클러스터를 조인할 수 없는 노드

기본적으로 는 aks-engine get-logs 클러스터에 성공적으로 조인된 노드에서 로그를 수집합니다. 클러스터에 조인할 수 없는 VM에서 로그를 수집하려면 플래그 --vm-names를 설정합니다.

--vm-name k8s-pool-01,k8s-pool-02

aks-engine get-logs에 대한 사용량

클러스터가 배포되고 해당 클러스터를 배포하는 데 원래 사용된 API 모델이 에 _output/<dnsPrefix>/apimodel.json저장되어 있다고 가정하면 다음과 같은 명령을 실행하는 로그를 수집할 수 있습니다.

aks-engine get-logs \
    --location <location> \
    --api-model _output/<dnsPrefix>/apimodel.json \
    --ssh-host <dnsPrefix>.<location>.cloudapp.azure.com \
    --linux-ssh-private-key ~/.ssh/id_rsa

매개 변수

매개 변수 필수 설명
--location Yes 클러스터 리소스 그룹의 Azure 위치입니다.
--api-model 클러스터에 대해 생성된 API 모델의 경로입니다.
--ssh-host 클러스터의 모든 노드에 연결할 수 있는 SSH 수신기의 FQDN 또는 IP 주소입니다.
--linux-ssh-private-key 클러스터 Linux 노드에서 원격 세션을 만드는 데 사용할 수 있는 SSH 프라이빗 키의 경로입니다.
--output-directory 아니요 출력 디렉터리- 누락된 경우 에서 --api-model 파생됩니다.
--control-plane-only 아니요 컨트롤 플레인 노드에서만 로그를 수집합니다.
--vm-names 아니요 지정된 VM(쉼표로 구분된 이름)에서만 로그를 수집합니다.
--upload-sas-url 아니요 수집된 로그를 업로드하는 Azure Storage 계정 SAS URL입니다.

사용자 지정 스크립트 확장 오류 코드 검토

AKS 엔진은 배포 작업을 수행하기 위해 CSE(사용자 지정 스크립트 확장)에 대한 리소스로 각 Ubuntu Server에 대한 스크립트를 생성합니다. 스크립트가 오류를 throw하면 에서 /var/log/azure/cluster-provision.log오류를 기록합니다. 오류가 포털에 표시됩니다. 오류 코드는 문제의 사례를 파악하는 데 도움이 될 수 있습니다. CSE 종료 코드에 대한 자세한 내용은 를 참조하세요 cse_helpers.sh.

Microsoft 지원 엔지니어에게 Kubernetes 로그 제공

로그를 수집하고 검사한 후에도 문제를 resolve 수 없는 경우 지원 티켓을 만드는 프로세스를 시작하고 수집한 로그를 제공할 수 있습니다.

운영자는 Microsoft 지원에서 필요할 수 있는 다른 시스템 로그와 함께 생성한 로그를 결합할 수 있습니다. 운영자는 Microsoft에서 사용할 수 있도록 할 수 있습니다.

다음과 같은 여러 가지 방법으로 Kubernetes 로그를 제공할 수 있습니다.

GitHub 문제 열기

배포 오류를 resolve 수 없는 경우 GitHub 문제를 열 수 있습니다.

  1. AKS 엔진 리포지토리에서 GitHub 문제를 엽니다.

  2. CSE 오류 exit code <INSERT_YOUR_EXIT_CODE>형식을 사용하여 제목을 추가합니다.

  3. 문제에 다음 정보를 포함합니다.

    • 클러스터를 배포하는 데 사용되는 클러스터 구성 파일인 apimodel.json입니다. GitHub에 게시하기 전에 모든 비밀과 키를 제거합니다.

    • 다음 kubectl 명령 get nodes의 출력입니다.

    • 비정상 노드의 /var/log/azure/cluster-provision.log 콘텐츠입니다.

다음 단계