Istio 서비스 메시 추가 기능 MeshConfig 문제 해결
이 문서에서는 MeshConfig를 사용하여 AKS(Microsoft Azure Kubernetes Service)에 대한 Istio 서비스 메시 추가 기능을 구성할 때 발생하는 문제를 해결하는 방법을 설명합니다.
공유 ConfigMap 구성
Istio 추가 기능 MeshConfig 를 사용하면 특정 메시 전체 설정을 구성할 수 있습니다. 이렇게 하려면 네임스페이스에 로컬 ConfigMap을 aks-istio-system
만듭니다. 그런 다음 Istio 컨트롤 플레인은 이 ConfigMap을 기본 ConfigMap과 병합합니다. (설정 간에 충돌이 있는 경우 기본 설정이 우선합니다.) 이 방법을 공유 ConfigMap 구성이라고 합니다.
네임스페이스에 이름이 지정된 istio-shared-configmap-<asm-revision>
ConfigMap을 aks-istio-system
만듭니다. 예를 들어 수정 버전을 asm-1-18
사용하는 경우 ConfigMap istio-shared-configmap-asm-1-18
의 이름을 지정해야 합니다. 그런 다음 다음 ConfigMap YAML 파일에 표시된 것처럼 섹션 필드 data
내에 mesh
메시 구성을 제공합니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-shared-configmap-asm-1-18
namespace: aks-istio-system
data:
mesh: |-
accessLogFile: /dev/stdout
defaultConfig:
holdApplicationUntilProxyStarts: true
필드 내의 defaultConfig
값은 Envoy 사이드카에 대한 메시 전체 설정입니다.
카나리아 업그레이드
카나리아 업그레이드를 시작하기 전에 메시 구성 및 업그레이드 지침에 따라 네임스페이스의 새 컨트롤 플레인 수정 버전에 대한 두 번째 공유 ConfigMap을 aks-istio-system
만듭니다.
업그레이드를 시작하기 전에 새 ConfigMap을 만들지 않은 경우 공유 ConfigMap에서 구성한 모든 기능에 액세스할 수 없습니다. 이 문제를 해결하려면 해당 수정 버전에 대해 누락된 ConfigMap을 만들고 이전 공유 ConfigMap의 관련 필드를 복사합니다.
자세한 내용은 Azure Kubernetes Service 및 Istio 서비스 메시 추가 기능 부 버전 업그레이드 문제 해결에 대한 Istio 기반 서비스 메시 추가 기능 업그레이드를 참조하세요.
허용, 지원 및 허용되지 않는 값
Istio 추가 기능은 MeshConfig 필드를 허용된 것으로 지정하고 supported
허용하지만 unsupported
, .disallowed
추가 기능에 대해 허용 및 지원되는 MeshConfig 필드에 대해 알아보고 다양한 지원 계층에 대한 개요를 보려면 Azure Kubernetes Service에 대한 Istio 기반 서비스 메시 추가 기능 구성을 참조하세요. 업스트림 Istio 설명서에 언급된 필드가 추가 기능에 대한 허용 목록에 표시되지 않으면 이러한 필드는 허용되지 않습니다.
문제 해결 검사 목록
1단계: 올바른 ConfigMap을 편집하고 있는지 확인합니다.
- 공유 ConfigMap(예
istio-shared-configmap-asm-1-17
: )을 구성하고 기본 ConfigMap(예istio-asm-1-17
: )을 편집하지 않는지 확인합니다. - 공유 ConfigMap이 타이틀의 올바른 수정 버전을 가리키는지 확인합니다.
2단계: 공유 ConfigMap 내의 MeshConfig 정의에서 탭 들여쓰기 제거
공유 ConfigMap(아래)의 MeshConfig 정의에서 data.mesh
탭 대신 공백을 사용해야 합니다. 찾은 탭 문자를 제거합니다.
3단계: MeshConfig 필드가 유효한지 확인
필드를 인식할 수 없거나 MeshConfig 허용 목록에 포함되지 않은 경우 MeshConfig에 대한 업데이트가 거부됩니다. 원하는 MeshConfig 필드가 허용되는지 확인하고 필드의 철자가 올바른지 확인합니다.
4단계: CoreDNS 오버로드 방지
CoreDNS 오버로드와 관련된 문제는 Istio MeshConfig 정의의 dnsRefreshRate
필드와 같은 특정 Istio DNS 설정을 변경해야 할 수 있습니다.
5단계: 메모리 사용 문제 해결
Envoy에서 높은 메모리 사용량이 발생하는 경우 Envoy 설정에서 통계 데이터 수집을 다시 확인합니다. MeshConfig를 통해 Istio 메트릭을 사용자 지정하는 경우 특정 메트릭은 카디널리티가 높을 수 있으므로 메모리 공간이 더 커집니다.
MeshConfig 정의의 discoverySelectors
필드를 사용하여 Istiod 및 Envoy의 메모리 사용량을 줄이는 것이 좋습니다. 자세한 내용은 일반 Istio 서비스 메시 추가 기능 문제 해결을 참조하세요.
6단계: 무료 CPU 코어
모든 CPU 코어를 사용하는 concurrency
경우 MeshConfig 정의의 필드가 잘못 구성되었을 수 있습니다. 이 필드를 0으로 설정하면 Envoy는 모든 CPU 코어를 사용합니다. 이 경우 MeshConfig 정의에서 제거 concurrency
합니다. 필드가 concurrency
구성되지 않은 경우 CPU 요청 및 제한에 따라 대신 사용되는 CPU 코어 수가 결정됩니다.
7단계: 포드 및 사이드카 경주 조건 수정
Envoy 사이드카가 시작되기 전에 애플리케이션 Pod가 시작되면 애플리케이션이 응답하지 않거나 다시 시작될 수 있습니다. 이 문제를 방지하는 방법에 대한 지침은 istio-proxy가 준비되지 않은 경우 Pod 또는 컨테이너가 네트워크 문제로 시작하는 것을 참조하세요. 특히 MeshConfig 필드를 defaultConfig
설정 holdApplicationUntilProxyStarts
하여 이러한 경합 상태를 방지할 true
수 있습니다.
참조
타사 정보 고지 사항
이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 안정성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.
타사 연락처 고지
이 문서에 포함된 타사의 연락처 정보는 이 항목에 대한 추가 정보를 찾는 데 도움을 주기 위한 것입니다. 이 연락처 정보는 공지 없이 변경될 수 있습니다. Microsoft는 타사 연락처 정보의 정확성을 보증하지 않습니다.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.