Azure Stack Hub에서 AKS 엔진 문제 해결
Azure Stack Hub에서 AKS 엔진을 배포하거나 작업할 때 문제가 발생할 수 있습니다. 이 문서에서는 AKS 엔진 배포 문제를 해결하는 단계를 살펴봅니다. AKS 엔진에 대한 정보를 수집하고, Kubernetes 로그를 수집하고, 사용자 지정 스크립트 확장 오류 코드를 검토합니다. AKS 엔진에 대한 GitHub 문제를 열 수도 있습니다.
참고
AKSe 버전 0.75.3 이상의 aks-engine
경우 아래 명령은 가 아닌 aks-engine
로 aks-engine-azurestack
시작됩니다.
AKS 엔진 설치 문제 해결
이전 설치 단계가 실패한 경우 GoFish 패키지 관리자를 사용하여 AKS 엔진을 설치할 수 있습니다. GoFish는 자신을 플랫폼 간 Homebrew 설명합니다.
GoFish를 사용하여 AKS 엔진을 설치하는 방법에 대한 지침은 여기에서 찾을 수 있습니다.
노드 및 클러스터 로그 수집
노드 및 클러스터 로그 검색에서 노드 및 클러스터 로그 수집에 대한 지침을 찾을 수 있습니다.
사전 요구 사항
이 가이드에서는 Azure CLI 및 AKS 엔진을 이미 다운로드했다고 가정합니다.
또한 이 가이드에서는 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 로그를 제공할 수 있습니다.
- Azure Stack Hub 운영자에게 문의할 수 있습니다. 운영자는 .ZIP 파일에 저장된 로그의 정보를 사용하여 지원 사례를 만듭니다.
- Kubernetes 로그를 업로드할 수 있는 스토리지 계정에 대한 SAS URL이 있는 경우 다음 명령을 포함하고 SAS URL에 플래그를 지정하여 로그를 스토리지 계정에 저장할 수 있습니다.
지침은 스토리지 계정 컨테이너에 로그 업로드를 참조하세요.aks-engine get-logs -upload-sas-url <SAS-URL>
- 클라우드 운영자인 경우 다음을 수행할 수 있습니다.
- Azure Stack Hub 관리 포털의 도움말 + 지원 블레이드를 사용하여 로그를 업로드합니다. 자세한 내용은 관리자 포털을 사용하여 지금 로그 보내기를 참조하세요.
- PEP(Privileged End Point)를 사용하여 Get-AzureStackLog PowerShell cmdlet을 사용합니다. 자세한 내용은 PowerShell을 사용하여 지금 로그 보내기를 참조하세요.
GitHub 문제 열기
배포 오류를 resolve 수 없는 경우 GitHub 문제를 열 수 있습니다.
AKS 엔진 리포지토리에서 GitHub 문제를 엽니다.
CSE 오류
exit code <INSERT_YOUR_EXIT_CODE>
형식을 사용하여 제목을 추가합니다.문제에 다음 정보를 포함합니다.
클러스터를 배포하는 데 사용되는 클러스터 구성 파일인
apimodel.json
입니다. GitHub에 게시하기 전에 모든 비밀과 키를 제거합니다.다음 kubectl 명령
get nodes
의 출력입니다.비정상 노드의
/var/log/azure/cluster-provision.log
콘텐츠입니다.
다음 단계
- Azure Stack Hub의 AKS 엔진에 대해 읽어보세요.