이 문서를 사용하여 AKS Arc에서 스토리지 관련 문제를 해결하고 resolve 수 있습니다.
영구 볼륨 클레임을 구성하면 "에이전트를 초기화할 수 없습니다. 오류: mkdir /var/log/agent: 사용 권한이 거부됨"
이 권한 거부 오류는 기본 스토리지 클래스가 워크로드에 적합하지 않을 수 있음을 나타내며 Kubernetes 버전 1.19.x 이상에서 실행되는 Linux 워크로드에서 발생합니다. 보안 모범 사례에 따라 많은 Linux 워크로드에서 Pod에 securityContext fsGroup
대한 설정을 지정합니다. 기본 스토리지 클래스는 매개 변수를 지정 fstype (=ext4)
하지 않으므로 워크로드는 Azure Stack HCI의 AKS에서 시작되지 않으므로 Kubernetes는 워크로드에서 요청한 에 따라 fsGroup
파일 및 영구 볼륨의 소유권을 변경하지 못합니다.
이 문제를 resolve PVC를 프로비전하는 데 사용할 수 있는 사용자 지정 스토리지 클래스를 정의합니다.
컨테이너 스토리지 인터페이스 Pod가 'ContainerCreating' 상태로 중단됨
Kubernetes 버전 1.16.10을 사용하여 새 Kubernetes 워크로드 클러스터를 만든 다음 1.16.15로 업데이트했습니다. 업데이트 후 Pod가 csi-msk8scsi-node-9x47m
ContainerCreating 상태로 중단되고 kube-proxy-qqnkr
Pod가 아래 출력과 같이 종결 상태로 중단되었습니다.
Error: kubectl.exe get nodes
NAME STATUS ROLES AGE VERSION
moc-lf22jcmu045 Ready <none> 5h40m v1.16.15
moc-lqjzhhsuo42 Ready <none> 5h38m v1.16.15
moc-lwan4ro72he NotReady master 5h44m v1.16.15
\kubectl.exe get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
5h38m
kube-system csi-msk8scsi-node-9x47m 0/3 ContainerCreating 0 5h44m
kube-system kube-proxy-qqnkr 1/1 Terminating 0 5h44m
kubelet
상태가 좋지 않아 더 이상 API 서버와 통신할 수 없으므로 유일한 해결 방법은 서비스를 다시 시작하는 kubelet
것입니다. 다시 시작한 후 클러스터는 실행 중 상태로 전환됩니다.
크래시 덤프 로그에서 채워진 디스크 스토리지
생성된 크래시 덤프 로그에서 디스크 스토리지를 채울 수 있습니다. 이는 만료된 Geneva 에이전트 클라이언트 인증서 때문입니다. 증상은 다음과 같습니다.
- 서비스가 시작되지 않습니다.
- 리소스가 부족하여 Kubernetes Pod, 배포 등을 시작하지 못합니다.
중요
이 문제는 2022년 4월부터 2023년 3월까지 릴리스에서 2023년 4월 18일 이후에 생성된 모든 새로운 Mariner 관리 및 대상 클러스터 노드에 영향을 미칠 수 있습니다. 이 문제는 2023-05-09 릴리스 이상에서 해결되었습니다.
이 문제는 디스크 공간을 할당하거나 새 파일을 작성하는 작업에 영향을 줄 수 있으므로 "디스크 공간/리소스 부족" 오류는 좋은 힌트입니다. 지정된 노드에 이 문제가 있는지 검사 하려면 다음 셸 명령을 실행합니다.
clouduser@moc-lwm2oudnskl $ sudo du -h /var/lib/systemd/coredump/
이 명령은 진단 파일에서 사용하는 스토리지 공간을 보고합니다.
근본 원인
Geneva 에이전트를 서비스 엔드포인트에 인증하는 데 사용되는 클라이언트 인증서가 만료되면 에이전트가 충돌하여 크래시 덤프가 발생합니다. 에이전트의 크래시/재시도 루프는 초기 시작 시 약 5초이며 시간 제한이 없습니다. 즉, 몇 초마다 노드의 파일 시스템에 새 파일(약 330MB)이 만들어지며 디스크 스토리지를 빠르게 사용할 수 있습니다.
완화 방법
권장되는 완화 방법은 업데이트된 인증서가 있는 최신 릴리스 버전 1.10.18.10425로 업그레이드하는 것입니다. 이렇게 하려면 먼저 AKS-HCI 호스트를 업데이트하기 전에 워크로드 클러스터 를 지원되는 부 버전 으로 수동으로 업그레이드합니다.
AKS Arc 릴리스 및 모든 최신 AKS-HCI 뉴스에 대한 자세한 내용은 AKS 릴리스 페이지를 구독하세요.
업그레이드가 옵션이 아닌 경우 mdsd 서비스를 끌 수 있습니다. 각 Mariner 노드:
다음 셸 명령을 사용하여 Geneva 에이전트를 끕니다.
sudo systemctl disable --now mdsd
Geneva 에이전트가 성공적으로 비활성화되었는지 확인합니다.
sudo systemctl status mdsd
다음 명령을 사용하여 누적된 파일을 삭제합니다.
sudo find /var/lib/systemd/coredump/ -type f -mmin +1 -exec rm -f {} \; sudo find /run/systemd/propagate -name 'systemd-coredump@*' -delete sudo journalctl --rotate && sudo journalctl --vacuum-size=500M
노드를 다시 부팅합니다.
sudo reboot
스토리지 Pod가 충돌하고 로그에 'createSubDir' 매개 변수가 잘못되었습니다.
배포에 SMB 또는 NFS CSI 드라이버가 설치되어 있고 이전 버전에서 5월 빌드로 업그레이드하는 경우 오류가 발생할 수 있습니다. 라는 createSubDir
매개 변수 중 하나가 더 이상 허용되지 않습니다. 배포에 적용되는 경우 아래 지침에 따라 스토리지 클래스 오류를 resolve.
이 오류가 발생하면 스토리지 Pod가 충돌하고 로그에 매개 변수가 createSubDir
잘못되었음을 나타냅니다.
스토리지 클래스를 다시 만듭니다.
영구 볼륨을 만들 때 볼륨 탑재 시도가 실패합니다.
AKS Arc 환경에서 영구 볼륨 또는 영구 볼륨 클레임을 삭제한 후 동일한 공유에 매핑할 새 영구 볼륨이 만들어집니다. 그러나 볼륨을 탑재하려고 하면 탑재가 실패하고 오류와 함께 NewSmbGlobalMapping failed
Pod 시간이 초과됩니다.
새 볼륨을 탑재하지 못하는 경우를 해결하기 위해 Windows 노드에 SSH를 실행하고 Remove-SMBGlobalMapping
볼륨에 해당하는 공유를 제공할 수 있습니다. 이 명령을 실행한 후 볼륨을 탑재하려고 하면 성공합니다.