AKS(Azure Kubernetes Service)에 대한 질문과 대답
이 문서에서는 AKS(Azure Kubernetes Service)에 대한 질문과 대답을 제공합니다.
현재 어떤 Azure 지역에서 AKS를 제공하나요?
사용 가능한 지역의 전체 목록은 AKS 지역 및 가용성을 참조하세요.
여러 지역에 AKS 클러스터를 분산할 수 있나요?
아니요. AKS 클러스터는 지역 리소스로, 여러 지역에 걸쳐 있을 수 없습니다. 여러 영역을 포함하는 아키텍처를 만드는 방법에 대한 지침은 비즈니스 연속성 및 재해 복구에 대한 모범 사례를 참조하세요.
여러 가용성 영역에 AKS 클러스터를 분산할 수 있나요?
예. 지원하는 지역에 있는 하나 이상의 가용성 영역에서 AKS 클러스터를 배포할 수 있습니다.
Kubernetes API 서버에 액세스할 수 있는 사용자를 제한할 수 있나요?
예. API 서버에 대한 액세스를 제한하는 옵션에는 다음 두 가지가 있습니다.
- API 서버에 대한 퍼블릭 엔드포인트를 유지하지만 신뢰할 수 있는 IP 범위 세트로 액세스를 제한하려는 경우 API Server 권한 있는 IP 범위를 사용합니다.
- API 서버를 가상 네트워크 내에서만 액세스할 수 있도록 제한하려면 프라이빗 클러스터를 사용합니다.
단일 클러스터에서 다른 크기의 VM을 사용할 수 있나요?
예, 여러 노드 풀을 만들어 AKS 클러스터에서 다른 크기의 가상 머신을 사용할 수 있습니다.
보안 업데이트가 AKS 에이전트 노드에 적용되나요?
AKS는 매주 "공급업체 수정"이 있는 CVE를 패치합니다. 수정이 없는 CVE는 수정되기 전에 "공급업체 수정"을 기다리고 있습니다. AKS 이미지는 30일 이내에 자동으로 업데이트됩니다. 업데이트된 노드 이미지를 정기적으로 적용하여 최신 패치 이미지 및 OS 패치가 모두 적용되고 최신 상태인지 확인하는 것이 좋습니다. 다음 방법 중 하나를 사용하여 이 작업을 수행할 수 있습니다.
- Azure Portal 또는 Azure CLI를 통해 수동으로.
- AKS 클러스터를 업그레이드하여. 클러스터 업그레이드는 자동으로 노드를 차단 및 드레이닝한 후 최신 Ubuntu 이미지와 새 패치 버전 또는 부 Kubernetes 버전을 사용하여 새 노드를 다시 온라인 상태로 전환합니다. 자세한 내용은 AKS 클러스터 업그레이드를 참조하세요.
- 노드 이미지 업그레이드를 사용합니다.
AKS의 컨테이너 이미지 크기 제한은 얼마인가요?
AKS는 컨테이너 이미지 크기에 대한 제한을 설정하지 않습니다. 그러나 이미지가 클수록 메모리 수요가 높다는 것을 이해하는 것이 중요합니다. 크기가 클수록 잠재적으로 리소스 제한 또는 작업자 노드의 사용 가능한 전체 메모리를 초과할 수 있습니다. 기본적으로 AKS 클러스터의 VM 크기 Standard_DS2_v2 메모리는 7GiB로 설정됩니다.
컨테이너 이미지가 TB(테라바이트) 범위와 같이 지나치게 큰 경우 디스크 공간이 부족하여 kubelet이 컨테이너 레지스트리에서 노드로 이미지를 끌어오지 못할 수 있습니다.
Windows Server 노드
Windows Server 노드의 경우 Windows 업데이트가 자동으로 실행되고 최신 업데이트를 적용하지 않습니다. Windows 업데이트 릴리스 주기와 사용자 고유의 유효성 검사 프로세스에 대한 정기적인 일정에 따라, 클러스터에서 업그레이드를 수행하고 AKS 클러스터에서 Windows Server 노드 풀을 업그레이드해야 합니다. 이 업그레이드 프로세스는 최신 Windows Server 이미지 및 패치를 실행하는 노드를 만든 다음, 이전 노드를 제거합니다. 이 프로세스에 대한 자세한 내용은 AKS에서 노드 풀 업그레이드를 참조하세요.
고객이 알고 있어야 하는 AKS 대상 보안 위협이 있나요?
Microsoft는 컨테이너용 Microsoft Defender와 같은 서비스를 통해 워크로드를 보호하기 위해 수행할 수 있는 추가 작업에 대한 지침을 제공합니다. 다음은 고객이 알고 있어야 하는 AKS 및 Kubernetes와 관련된 보안 위협입니다.
- 새 대규모 캠페인 대상 Kubeflow - 2021년 6월 8일
관리되는 컨트롤 플레인은 내 노드와 어떻게 통신하나요?
AKS는 보안 터널 통신을 사용하여 api-서버 및 개별 노드 kubelets가 별도의 가상 네트워크에서도 통신할 수 있도록 합니다. 터널은 TLS 암호화를 통해 보호됩니다. AKS에서 사용되는 현재 주 터널은 이전에 apiserver-network-proxy로 알려진 Konnectivity입니다. 모든 네트워크 규칙이 Azure 필수 네트워크 규칙 및 FQDN을 따르는지 확인하세요.
AKS를 통해 2개의 리소스 그룹이 생성되는 이유는 무엇인가요?
AKS는 AKS에서 제공하는 관리되는 Kubernetes 환경 내에서 Azure 플랫폼의 많은 핵심 기능을 적용할 수 있는 Virtual Machine Scale Sets, 가상 네트워크 및 관리 디스크를 비롯한 많은 Azure 인프라 리소스를 기반으로 합니다. 예를 들어, 대부분의 Azure Virtual Machine 유형은 AKS에서 직접 사용할 수 있으며, Azure Reservations를 사용하여 이러한 리소스에 대해 자동으로 할인 혜택을 받을 수 있습니다.
이 아키텍처를 지원하기 위해 각 AKS 배포는 다음 두 리소스 그룹에 걸쳐 있습니다.
- 첫 번째 리소스 그룹을 만듭니다. 이 그룹에는 Kubernetes 서비스 리소스만 포함됩니다. AKS 리소스 공급자는 배포하는 동안 두 번째 리소스 그룹을 자동으로 만듭니다. 두 번째 리소스 그룹의 예는 MC_myResourceGroup_myAKSCluster_eastus입니다. 이 두 번째 리소스 그룹의 이름을 지정하는 방법에 대한 자세한 내용은 다음 섹션을 참조하세요.
- 노드 리소스 그룹으로 알려져 있는 두 번째 리소스 그룹에는 클러스터와 연결된 인프라 리소스의 모든 항목이 포함됩니다. 이러한 리소스에는 Kubernetes 노드 VM, 가상 네트워킹 및 스토리지가 포함됩니다. 기본적으로 노드 리소스 그룹에는 MC_myResourceGroup_myAKSCluster_eastus와 같은 이름이 지정됩니다. AKS는 클러스터가 삭제될 때마다 노드 리소스 그룹을 자동으로 삭제하므로, 클러스터의 수명 주기를 공유하는 리소스에만 사용해야 합니다.
AKS 노드 리소스 그룹에 고유한 이름을 지정할 수 있나요?
예. 기본적으로 AKS는 노드 리소스 그룹 이름을 MC_resourcegroupname_clustername_location으로 지정하지만 사용자 고유의 이름을 제공할 수도 있습니다.
고유한 리소스 그룹 이름을 지정하려면 aks-preview Azure CLI 확장 버전 0.3.2 이상을 설치합니다. 명령을 사용하여 AKS 클러스터를 az aks create
만들 때 매개 변수를 --node-resource-group
사용하고 리소스 그룹의 이름을 지정합니다. Azure Resource Manager 템플릿을 사용하여 AKS 클러스터를 배포하는 경우 nodeResourceGroup 속성을 사용하여 리소스 그룹 이름을 정의할 수 있습니다.
- 자체 구독에서 Azure 리소스 공급자가 자동으로 보조 리소스 그룹을 만듭니다.
- 클러스터를 만들 때만 사용자 지정 리소스 그룹 이름을 지정할 수 있습니다.
노드 리소스 그룹으로 작업할 때는 다음을 수행할 수 없습니다.
- 노드 리소스 그룹에 기존 리소스 그룹을 지정합니다.
- 노드 리소스 그룹에 다른 구독을 지정합니다.
- 클러스터를 만든 후 노드 리소스 그룹 이름을 변경합니다.
- 노드 리소스 그룹 내에서 관리 리소스의 이름을 지정합니다.
- 노드 리소스 그룹 내에서 관리 리소스의 Azure에서 만든 태그를 수정하거나 삭제합니다. 다음 섹션에서 추가 정보를 참조하세요.
노드 리소스 그룹에서 태그 및 AKS 리소스의 다른 속성을 수정할 수 있나요?
노드 리소스 그룹에서 Azure에서 만든 태그 및 기타 리소스 속성을 수정하거나 삭제하면 크기 조정 및 업그레이드 오류와 같은 예기치 않은 결과가 발생할 수 있습니다. AKS를 사용하면 최종 사용자가 만든 사용자 지정 태그를 만들고 수정할 수 있으며 노드 풀을 만들 때 이러한 태그를 추가할 수 있습니다. 예를 들어 사업부 또는 비용 센터를 할당하기 위해 사용자 지정 태그를 만들거나 수정할 수 있습니다. 또 다른 옵션은 관리되는 리소스 그룹에 범위가 있는 Azure Policy를 만드는 것입니다.
그러나 AKS 클러스터의 노드 리소스 그룹에서 리소스에 대해 Azure로 만든 태그를 수정하는 작업은 지원되지 않으며, 이러한 작업은 SLO(서비스 수준 목표)를 중단하게 됩니다. 자세한 내용은 AKS는 서비스 수준 계약을 제공합니까?를 참조하세요.
AKS가 지원하는 Kubernetes 허용 컨트롤러는 무엇인가요? 허용 컨트롤러를 추가하거나 제거할 수 있나요?
AKS는 다음과 같은 허용 컨트롤러를 지원합니다.
- NamespaceLifecycle
- LimitRanger
- ServiceAccount
- DefaultStorageClass
- DefaultTolerationSeconds
- MutatingAdmissionWebhook
- ValidatingAdmissionWebhook
- ResourceQuota
- PodNodeSelector
- PodTolerationRestriction
- ExtendedResourceToleration
현재, AKS에서 허용 컨트롤러 목록을 수정할 수 없습니다.
AKS에서 허용 컨트롤러 Webhook를 사용할 수 있나요?
예, AKS에서 허용 컨트롤러 Webhook를 사용할 수 있습니다. 컨트롤 플레인 레이블로 표시된 내부 AKS 네임스페이스를 제외하는 것이 좋습니다. 예를 들어:
namespaceSelector:
matchExpressions:
- key: control-plane
operator: DoesNotExist
AKS는 API 서버 송신을 방화벽으로 처리하므로 클러스터 내에서 허용 컨트롤러 웹후크에 액세스할 수 있어야 합니다.
허용 컨트롤러 Webhook가 kube-system 및 내부 AKS 네임스페이스에 영향을 미칠 수 있나요?
시스템의 안정성을 보호하고 사용자 지정 허용 컨트롤러가 kube-system의 내부 서비스에 영향을 주지 않도록 하기 위해 네임스페이스 AKS에는 kube-system 및 AKS 내부 네임스페이스를 자동으로 제외하는 Admissions Enforcer가 있습니다. 이 서비스는 사용자 지정 허용 컨트롤러가 kube-system에서 실행되는 서비스에 영향을 주지 않도록 합니다.
사용자 지정 허용 웹후크를 지원하기 위해 kube-system(권장되지 않음)에 항목을 배포하는 데 중요한 사용 사례가 있는 경우 허용 적용자에서 무시되도록 다음 레이블 또는 주석을 추가할 수 있습니다.
레이블: "admissions.enforcer/disabled": "true"
또는 주석: "admissions.enforcer/disabled": true
Azure Key Vault는 AKS와 통합되나요?
비밀 저장소 CSI 드라이버용 Azure Key Vault 공급자는 AKS에 Azure Key Vault의 네이티브 통합을 제공합니다.
Windows Server 컨테이너를 AKS에서 실행할 수 있습니까?
예, Windows Server 컨테이너는 AKS에서 사용할 수 있습니다. AKS에서 Windows Server 컨테이너를 실행하려면 Windows Server를 게스트 OS로 실행하는 노드 풀을 만듭니다. Windows Server 컨테이너는 Windows Server 2019만 사용할 수 있습니다. 시작하려면 Windows Server 노드 풀을 사용하여 AKS 클러스터 만들기를 참조하세요.
노드 풀에 대한 Windows Server 지원에는 Kubernetes 프로젝트의 업스트림 Windows Server에 적용되는 몇 가지 제한 사항이 포함됩니다. 이러한 제한 사항에 대한 자세한 내용은 AKS의 Windows Server 컨테이너 제한 사항을 참조하세요.
AKS는 서비스 수준 계약을 제공합니까?
AKS는 표준 가격 책정 계층에서 작동 시간 SLA 기능을 사용하여 SLA를 보장합니다.
무료 가격 책정 계층에는 연결된 서비스 수준 계약이 없지만 서비스 수준 목표가 99.5%입니다. 업그레이드, 비정상 언더레이 노드, 플랫폼 유지 관리 또는 애플리케이션이 요청으로 API Server를 압도하는 경우 일시적인 연결 문제가 관찰됩니다. 중요 업무용 및 프로덕션 워크로드의 경우 또는 워크로드가 API Server 다시 시작을 용납하지 않는 경우 가동 시간 SLA를 포함하는 표준 계층을 사용하는 것이 좋습니다.
AKS 에이전트 노드에 Azure 예약 할인을 적용할 수 있나요?
AKS 에이전트 노드는 표준 Azure 가상 머신으로 요금이 청구됩니다. AKS에서 사용하는 VM 크기에 대해 Azure Reservations를 구매한 경우 해당 할인이 자동으로 적용됩니다.
Azure 테넌트 간에 클러스터를 이동/마이그레이션할 수 있나요?
테넌트 간에 AKS 클러스터를 이동하는 것은 현재 지원되지 않습니다.
내 클러스터를 구독 간에 이동/마이그레이션할 수 있나요?
현재 구독 간의 클러스터 이동은 지원되지 않습니다.
AKS 클러스터를 현재 Azure 구독에서 다른 구독으로 이동할 수 있나요?
AKS 클러스터와 연결된 리소스를 Azure 구독 간에 이동하는 것은 지원되지 않습니다.
AKS 클러스터 또는 AKS 인프라 리소스를 다른 리소스 그룹으로 이동하거나 이름을 바꿀 수 있나요?
AKS 클러스터 및 연결된 리소스를 이동하거나 이름을 바꾸는 것은 지원되지 않습니다.
클러스터 삭제가 오래 걸리는 이유는 무엇인가요?
사용자 요청 시 대부분의 클러스터가 삭제됩니다. 일부 경우, 특히 고객이 자신의 리소스 그룹을 가져오거나 RG 간 태스크를 수행할 때 삭제에 추가 시간이 발생하거나 삭제가 실패할 수 있습니다. 삭제 시 문제가 발생하면 RG에 잠금이 없는지와 RG 외부의 모든 리소스와 RG의 연결이 끊어져 있는지를 다시 확인합니다.
클러스터를 삭제한 후 복원할 수 있나요?
아니요, 클러스터를 삭제한 후에는 복원할 수 없습니다. 클러스터를 삭제하면 연결된 리소스 그룹 및 모든 해당 리소스도 삭제됩니다. 리소스를 유지하려는 경우 클러스터를 삭제하기 전에 다른 리소스 그룹으로 이동합니다. 소유자 또는 사용자 액세스 관리자 기본 제공 역할이 있는 경우 실수로 삭제 및 수정하지 않도록 Azure 리소스를 잠글 수 있습니다. 자세한 내용은 인프라를 보호하기 위해 리소스 잠금을 참조하세요.
'NodeLost' 또는 '알 수 없음' 상태의 pod/배포가 있는 경우 클러스터를 여전히 업그레이드할 수 있나요?
가능하지만 권장하지는 않습니다. 클러스터의 상태가 알려져 있고 정상일 때 업그레이드를 수행하는 것이 가장 좋습니다.
하나 이상의 노드가 있는 클러스터가 비정상 상태이거나 종료된 경우 업그레이드를 수행할 수 있나요?
아니요. 실패한 상태의 모든 노드를 삭제/제거합니다. 그렇지 않으면 업그레이드 전에 클러스터에서 해당 노드가 제거됩니다.
클러스터 삭제를 실행했지만 오류가 표시됩니다. [Errno 11001] getaddrinfo failed
가장 일반적으로 이 문제는 하나 이상의 NSG(네트워크 보안 그룹)가 여전히 사용 중이고 클러스터와 연결된 경우에 발생합니다. 이러한 NSG를 제거한 후 다시 시도하세요.
업그레이드를 실행했지만 pod이 충돌 루프에 있습니다. 준비 상태 프로브가 실패하나요?
서비스 주체가 만료되지 않았는지 확인합니다. 참조 항목: AKS 서비스 주체 및 AKS 업데이트 자격 증명.
클러스터가 작동하지만 갑자기 LoadBalancer를 프로비저닝하거나 PVC를 탑재할 수 없습니다.
서비스 주체가 만료되지 않았는지 확인합니다. 참조 항목: AKS 서비스 주체 및 AKS 업데이트 자격 증명.
AKS 클러스터를 0으로 크기를 조정할 수 있나요?
실행 중인 AKS 클러스터를 완전히 중지하고 각각의 컴퓨팅 비용을 절감할 수 있습니다. 또한 모든 또는 특정 User
노드 풀의 크기를 0으로 조정하거나 크기를 자동으로 조정하여 필요한 클러스터 구성만 유지하도록 선택할 수도 있습니다.
시스템 노드 풀을 0으로 직접 조정할 수 없습니다.
Virtual Machine Scale Set API를 사용하여 수동으로 크기를 조정할 수 있나요?
아니요, Virtual Machine Scale Set API를 사용하여 크기 조정 작업은 지원되지 않습니다. AKS API(az aks scale
)를 사용하세요.
Virtual Machine Scale Sets 사용하여 노드 0으로 수동으로 스케일링할 수 있나요?
아니요, Virtual Machine Scale Set API를 사용하여 크기 조정 작업은 지원되지 않습니다. AKS API를 사용하여 0개의 비시스템 노드 풀로 확장하거나 클러스터를 대신 중지할 수 있습니다.
모든 VM을 중지하거나 할당 취소할 수 있나요?
AKS에는 이러한 구성을 견디고 복구할 수 있는 복원 메커니즘이 있지만 지원되는 구성은 아닙니다. 대신 클러스터를 중지하세요.
사용자 지정 VM 확장을 사용할 수 있나요?
AKS는 관리형 서비스이며 IaaS 리소스 조작은 지원되지 않습니다. 사용자 지정 구성 요소를 설치하려면 Kubernetes API 및 메커니즘을 사용하세요. 예를 들어 DaemonSets를 활용하여 필수 구성 요소를 설치할 수 있습니다.
AKS는 고객 데이터를 클러스터 지역 외부에 저장하나요?
아니요. 모든 데이터는 클러스터의 지역에 저장됩니다.
AKS 이미지가 루트로 실행되어야 하나요?
다음 이미지에는 "루트로 실행"에 대한 기능 요구 사항이 있으며 모든 정책에 대해 예외를 제출해야 합니다.
- mcr.microsoft.com/oss/kubernetes/coredns
- mcr.microsoft.com/azuremonitor/containerinsights/ciprod
- mcr.microsoft.com/oss/calico/node
- mcr.microsoft.com/oss/kubernetes-csi/azuredisk-csi
Azure CNI 투명 모드와 브리지 모드는 무엇인가요?
1.2.0 버전부터 Azure CNI에서는 단일 테넌시 Linux CNI 배포에 대해 기본적으로 투명 모드를 설정합니다. 브리지 모드는 투명 모드로 교체되는 중입니다. 이 섹션에서는 두 모드의 차이점 및 Azure CNI에서 투명 모드를 사용하는 경우의 이점/제한 사항에 대해 자세히 설명합니다.
브리지 모드
이름에서 알 수 있듯이 브리지 모드 Azure CNI는 "Just-In-Time" 방식으로 "azure0"이라는 L2 브리지를 만듭니다. 모든 호스트 측 Pod veth
쌍 인터페이스는 이 브리지에 연결됩니다. 따라서 VM 통신 내 Pod-Pod 및 나머지 트래픽은 이 브리지를 통과합니다. 해당 브리지는 하나 이상의 실제 디바이스에 바인딩하지 않는 한 자체적으로 수신하거나 전송할 수 없는 레이어 2 가상 디바이스입니다. 이러한 이유로 Linux VM의 eth0를 ‘azure0’ 브리지에 대한 종속 항목으로 변환해야 합니다. 이로 인해 Linux VM 내에 복잡한 네트워크 토폴로지가 생성되고 CNI가 DNS 서버 업데이트 등과 같은 다른 네트워킹 기능을 처리해야 하는 문제가 발생합니다.
다음 예제에서는 브리지 모드에서 IP 경로 설정의 모양을 보여 둡니다. 노드에 있는 Pod 수에 관계없이 두 개의 경로만 있을 것입니다. 첫 번째는 azure0의 로컬을 제외한 모든 트래픽이 ip ‘src 10.240.0.4’(노드 기본 IP)를 사용하는 인터페이스를 통해 서브넷의 기본 게이트웨이로 이동하고, 두 번째는 커널이 결정하는 커널에 대해 ‘10.20.x.x’ Pod 공간을 사용하는 것입니다.
default via 10.240.0.1 dev azure0 proto dhcp src 10.240.0.4 metric 100
10.240.0.0/12 dev azure0 proto kernel scope link src 10.240.0.4
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
root@k8s-agentpool1-20465682-1:/#
투명 모드
투명 모드는 Linux 네트워킹을 설정하는 데 직접적인 접근 방식을 사용합니다. 이 모드에서 Azure CNI는 Linux VM에서 eth0 인터페이스의 속성을 변경하지 않습니다. Linux 네트워킹 속성을 변경하는 최소한의 방식은 클러스터가 브리지 모드에서 직면할 수 있는 복잡한 예상 외의 문제를 줄이는 데 도움이 됩니다. 투명 모드에서 Azure CNI는 호스트 네트워크에 추가될 호스트 측 Pod veth
쌍 인터페이스를 만들고 추가합니다. VM Pod-Pod 간 통신은 CNI가 추가할 ip 경로를 지납니다. 기본적으로 Pod-Pod 통신은 레이어 3을 지나며, Pod 트래픽은 L3 회람 규칙에 의해 라우팅됩니다.
다음 예제에서는 투명 모드의 IP 경로 설정을 보여 둡니다. 각 Pod의 인터페이스는 고정 경로를 연결하여 Dest IP를 Pod로 사용하는 트래픽이 Pod의 호스트 쪽 veth
쌍 인터페이스로 직접 전송되도록 합니다.
10.240.0.216 dev azv79d05038592 proto static
10.240.0.218 dev azv8184320e2bf proto static
10.240.0.219 dev azvc0339d223b9 proto static
10.240.0.222 dev azv722a6b28449 proto static
10.240.0.223 dev azve7f326f1507 proto static
10.240.0.224 dev azvb3bfccdd75a proto static
168.63.129.16 via 10.240.0.1 dev eth0 proto dhcp src 10.240.0.4 metric 100
169.254.169.254 via 10.240.0.1 dev eth0 proto dhcp src 10.240.0.4 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
투명 모드의 이점
conntrack
DNS 병렬 경합 상태를 완화하고 노드 로컬 DNS를 설정할 필요 없이 5초 DNS 대기 시간 문제를 방지합니다(성능상의 이유로 노드 로컬 DNS를 계속 사용할 수 있음).- 초기 5초 DNS 대기 시간 CNI 브리지 모드는 현재 ‘just-in-time’ 브리지 설정으로 인해 도입됩니다.
- 브리지 모드의 코너 케이스 중 하나는 Azure CNI에서 사용자가 VNET 또는 NIC에 추가하는 사용자 지정 DNS 서버 목록을 계속 업데이트할 수 없다는 것입니다. 이로 인해 CNI는 DNS 서버 목록의 첫 번째 인스턴스만 선택합니다. CNI가 eth0 속성을 변경하지 않으면서 투명 모드에서 해결됩니다. 여기에서 자세한 내용을 알아보세요.
- UDP 트래픽의 효과적인 처리 및 ARP 시간이 초과될 때 UDP 플러드 폭풍 완화 기능을 제공합니다. 브리지 모드에서는 브리지가 VM 내 Pod 간 통신에서 대상 Pod의 MAC 주소를 인식하지 못하는 경우 기본적으로 모든 포트에 대한 패킷 폭풍이 발생합니다. 경로에 L2 디바이스가 없으므로 투명 모드로 해결됩니다. 여기에서 자세한 내용을 알아보세요.
- 투명 모드는 브리지 모드와 비교할 때 처리량 및 대기 시간 측면에서 VM Pod 간 통신에 더 나은 성능을 보입니다.
볼륨에 많은 파일이 있는 경우 권한 소유권 설정이 느려지는 문제를 방지하는 방법은 무엇인가요?
일반적으로 Pod가 루트가 아닌 사용자로 실행되는 경우(필요한 경우) Pod에서 볼륨을 읽고 쓸 수 있도록 Pod의 보안 컨텍스트 내부에 fsGroup
을 지정해야 합니다. 이 요구 사항은 여기에 자세히 설명되어 있습니다.
그러나 fsGroup
설정의 한 가지 부작용은 볼륨이 탑재될 때마다 Kubernetes가 볼륨 내부의 모든 파일과 디렉터리에 대해 재귀적으로 chown()
및 chmod()
를 사용해야 한다는 것입니다. 아래에 몇 가지 예외가 있습니다. 이는 볼륨의 그룹 소유권이 이미 요청된 fsGroup
과 일치하는 경우에도 발생하며, 작은 파일이 많은 큰 볼륨의 경우 비용이 많이 들 수 있으므로 Pod 시작에 오랜 시간이 걸리게 됩니다. 이 시나리오는 v1.20 이전에 알려진 문제이며 해결 방법은 Pod 실행을 루트로 설정하는 것입니다.
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 0
fsGroup: 0
이 이슈는 Kubernetes 1.20 버전에서 해결되었습니다. 자세한 내용은 Kubernetes 1.20: 볼륨 권한 변경에 대한 세분화된 제어를 참조하세요.
AKS에서 배포에 FIPS 암호화 라이브러리를 사용할 수 있나요?
FIPS 사용 노드는 이제 Linux 기반 노드 풀에서 지원됩니다. 자세한 내용은 FIPS 사용 노드 풀 추가를 참조하세요.
AKS를 통해 NSG를 구성할 수 있나요?
AKS는 서브넷에 NSG(네트워크 보안 그룹)를 적용하지 않으며 해당 서브넷과 연결된 NSG를 수정하지 않습니다. AKS는 네트워크 인터페이스 NSG 설정만 수정합니다. CNI를 사용하는 경우 NSG의 보안 규칙이 노드와 Pod CIDR 범위 간의 트래픽을 허용하는지 확인해야 합니다. kubenet을 사용하는 경우 NSG의 보안 규칙이 노드와 Pod CIDR 간의 트래픽을 허용하는지 확인해야 합니다. 자세한 내용은 네트워크 보안 그룹을 참조하세요.
AKS에서 시간 동기화는 어떻게 작동하나요?
AKS 노드는 localhost에서 시간을 가져오는 "chrony" 서비스를 실행합니다. Pod에서 실행되는 컨테이너는 AKS 노드에서 시간을 얻습니다. 컨테이너 내에서 시작된 애플리케이션은 Pod의 컨테이너에서 시간을 사용합니다.
AKS 추가 기능은 어떻게 업데이트되나요?
보안 패치를 포함한 모든 패치는 AKS 클러스터에 자동으로 적용됩니다. 새 릴리스를 사용할 수 있는 경우 클러스터를 업데이트할 때 주요 또는 부 버전 변경(배포된 개체에 호환성이 손상될 수 있음)처럼 패치보다 큰 항목이 업데이트됩니다. AKS 릴리스 정보를 방문하여 새 릴리스를 사용할 수 있는 시기를 확인할 수 있습니다.
내 Linux VMSS 인스턴스에 설치된 AKS Linux 확장의 목적은 무엇인가요?
AKS Linux 확장은 Kubernetes 작업자 노드에 모니터링 도구를 설치하고 구성하는 Azure VM 확장입니다. 확장은 모든 신규 및 기존 Linux 노드에 설치됩니다. 다음 모니터링 도구를 구성합니다.
- 노드 내보내기: 가상 머신에서 하드웨어 원격 분석을 수집하고 메트릭 엔드포인트를 사용하여 사용할 수 있게 합니다. 그런 다음 Prometheus와 같은 모니터링 도구에서 이러한 메트릭을 스크래핑할 수 있습니다.
- Node-problem-detector: 클러스터 관리 스택의 업스트림 계층에 다양한 노드 문제를 표시하는 것을 목표로 합니다. 각 노드에서 실행되고, 노드 문제를 검색하고, 이벤트 및 NodeConditions를 사용하여 클러스터의 API 서버에 보고하는 시스템 단위입니다.
- 로컬 가젯: 커널 내 eBPF 도우미 프로그램을 사용하여 주로 Pod의 사용자 영역 프로그램의 syscall과 관련된 이벤트를 모니터링합니다.
이러한 도구는 다음과 같은 많은 노드 상태 관련 문제에 대한 가시성을 제공하는 데 도움이 됩니다.
- 인프라 디먼 문제: NTP 서비스 다운
- 하드웨어 문제: CPU, 메모리 또는 디스크가 잘못되었습니다.
- 커널 문제: 커널 교착 상태, 손상된 파일 시스템
- 컨테이너 런타임 문제: 응답하지 않는 런타임 디먼
확장은 문서화된 AKS 송신 요구 사항을 초과하는 URL, IP 주소 또는 포트에 대한 추가 아웃바운드 액세스가 필요하지 않습니다. Azure에서 부여된 특별한 권한이 필요하지 않습니다. kubeconfig를 사용하여 API 서버에 연결하여 수집된 모니터링 데이터를 보냅니다.