Настройка надстройки сетки службы на основе Istio для Служба Azure Kubernetes
Istio с открытым исходным кодом использует MeshConfig для определения параметров на уровне сетки для сетки службы Istio. Надстройка сетки службы на основе Istio для AKS строится на основе MeshConfig и классифицирует различные свойства как поддерживаемые, разрешенные и заблокированные.
В этой статье описывается настройка надстройки сетки сетки на основе Istio для Служба Azure Kubernetes и политики поддержки, применимой для такой конфигурации.
Необходимые компоненты
В этом руководстве предполагается, что вы выполнили документацию , чтобы включить надстройку Istio в кластере AKS.
Настройка конфигурации в кластере
Узнайте, какая редакция Istio развернута в кластере:
az aks show --name $CLUSTER --resource-group $RESOURCE_GROUP --query 'serviceMeshProfile'
Выходные данные:
{ "istio": { "certificateAuthority": null, "components": { "egressGateways": null, "ingressGateways": null }, "revisions": [ "asm-1-18" ] }, "mode": "Istio" }
Создайте ConfigMap с именем
istio-shared-configmap-<asm-revision>
вaks-istio-system
пространстве имен. Например, если в кластере выполняется редакция сетки asm-1-18, необходимо назвать ConfigMap какistio-shared-configmap-asm-1-18
. Конфигурация сетки должна быть предоставлена в разделе данных в сетке.Пример:
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 по умолчанию (например, istio-asm-1-18
для редакции asm-1-18) создается в пространстве имен в aks-istio-system
кластере при включении надстройки Istio. Однако этот ConfigMap по умолчанию примирится с помощью управляемой надстройки Istio, поэтому пользователи не должны напрямую изменять этот ConfigMap. Вместо этого пользователи должны создать определенную редакцию Istio shared ConfigMap (например istio-shared-configmap-asm-1-18
, для редакции asm-1-18) в пространстве имен aks-istio-system, а затем плоскость управления Istio будет объединяться с ConfigMap по умолчанию с параметрами по умолчанию, принимающие приоритет.
Конфигурация сетки и обновления
При выполнении канарского обновления для Istio необходимо создать отдельную конфигурацию для новой редакции в aks-istio-system
пространстве имен, прежде чем инициировать обновление канарной версии. Таким образом, конфигурация доступна при развертывании уровня управления новой редакции в кластере. Например, если вы обновляете сетку с asm-1-18 до asm-1-19, необходимо скопировать изменения из istio-shared-configmap-asm-1-18
этого, чтобы создать новое ConfigMap, вызываемое istio-shared-configmap-asm-1-19
aks-istio-system
в пространстве имен.
После завершения обновления или отката можно удалить ConfigMap редакции, которая была удалена из кластера.
Допустимые, поддерживаемые и заблокированные значения MeshConfig
Поля в MeshConfig
них классифицируются как allowed
, supported
или blocked
. Дополнительные сведения об этих категориях см. в политике поддержки функций и параметров конфигурации надстройки Istio.
Конфигурация сетки и список разрешенных или поддерживаемых полей относятся к редакции, относясь к учетной записи для добавления и удаления полей в разных редакциях. Полный список разрешенных полей и поддерживаемых или неподдерживаемых полей в списке разрешенных указан в таблице ниже. Когда новая редакция сетки доступна, все изменения разрешенной и поддерживаемой классификации полей отмечаются в этой таблице.
MeshConfig
Поля, представленные в справочной документации по MeshConfig открытый код, которые не рассматриваются в следующей таблице, блокируются. Например, configSources
блокируется.
Поле | Поддерживается или разрешено | Примечания |
---|---|---|
proxyListenPort | Допустимо | - |
proxyInboundListenPort | Допустимо | - |
proxyHttpPort | Допустимо | - |
connectTimeout | Допустимо | Настройка в DestinationRule |
tcpKeepAlive | Допустимо | Настройка в DestinationRule |
defaultConfig | Поддерживается | Используется для настройки ProxyConfig |
outboundTrafficPolicy | Поддерживается | Также можно настроить в Sidecar CR |
extensionProviders | Допустимо | - |
defaultProviders | Допустимо | - |
accessLogFile | Поддерживается | Это поле предназначено для создания журналов доступа. Сведения об управляемом интерфейсе сбора и запросах журналов см . в Azure Monitor Container Insights в AKS. Рекомендуется настроить ведение журнала доступа через API телеметрии. |
accessLogFormat | Поддерживается | Это поле предназначено для создания журналов доступа. Сведения об управляемом интерфейсе сбора и запросах журналов см. в статье Azure Monitor Container Insights в AKS. |
accessLogEncoding | Поддерживается | Это поле предназначено для создания журналов доступа. Сведения об управляемом интерфейсе сбора и запросах журналов см. в статье Azure Monitor Container Insights в AKS. |
enableTracing | Допустимо | Рекомендуется настроить трассировку с помощью API телеметрии. |
enableEnvoyAccessLogService | Поддерживается | Это поле предназначено для создания журналов доступа. Сведения об управляемом интерфейсе сбора и запросах журналов см. в статье Azure Monitor Container Insights в AKS. |
disableEnvoyListenerLog | Поддерживается | Это поле предназначено для создания журналов доступа. Сведения об управляемом интерфейсе сбора и запросах журналов см. в статье Azure Monitor Container Insights в AKS. |
trustDomain | Допустимо | - |
trustDomainAliases | Допустимо | - |
caCertificates | Допустимо | Настройка в DestinationRule |
defaultServiceExportTo | Допустимо | Настройка в ServiceEntry |
defaultVirtualServiceExportTo | Допустимо | Настройка в VirtualService |
defaultDestinationRuleExportTo | Допустимо | Настройка в DestinationRule |
localityLbSetting | Допустимо | Настройка в DestinationRule |
dnsRefreshRate | Допустимо | - |
h2UpgradePolicy | Допустимо | Настройка в DestinationRule |
enablePrometheusMerge | Допустимо | - |
discoverySelectors | Поддерживается | - |
pathNormalization | Допустимо | - |
defaultHttpRetryPolicy | Допустимо | Настройка в VirtualService |
serviceSettings | Допустимо | - |
meshMTLS | Допустимо | - |
tlsDefaults | Допустимо | - |
ingressService | Допустимо | Имя службы Kubernetes, используемой для контроллера входящего трафика istio. |
ingressSelector | Допустимо | Определяет, какое развертывание шлюза следует использовать в качестве контроллера входящего трафика. Это поле соответствует полю Gateway.selector и будет присвоено значение istio: INGRESS_SELECTOR. |
ProxyConfig (meshConfig.defaultConfig)
Поля, представленные в справочной документации по MeshConfig открытый код, которые не рассматриваются в следующей таблице, блокируются.
Поле | Поддерживается или разрешено | Примечания |
---|---|---|
tracingServiceName | Допустимо | Рекомендуется настроить трассировку с помощью API телеметрии. |
drainDuration | Поддерживается | - |
statsUdpAddress | Допустимо | - |
proxyAdminPort | Допустимо | - |
tracing. | Допустимо | Рекомендуется настроить трассировку с помощью API телеметрии. |
параллелизм | Поддерживается | - |
envoyAccessLogService | Допустимо | Рекомендуется настроить трассировку с помощью API телеметрии. |
EnvoyMetricsService | Допустимо | Рекомендуется настроить коллекцию метрик с помощью API телеметрии. |
proxyMetadata | Допустимо | - |
statusPort | Допустимо | - |
extraStatTags | Допустимо | - |
proxyStatsMatcher | Допустимо | - |
terminationDrainDuration | Поддерживается | - |
meshId | Допустимо | - |
holdApplicationUntilProxyStarts | Поддерживается | - |
caCertificatesPem | Допустимо | - |
privateKeyProvider | Допустимо | - |
Внимание
Область поддержки конфигураций: конфигурация сетки позволяет поставщикам расширений, таким как автономные экземпляры Zipkin или Apache Skywalking, настраиваться с помощью надстройки Istio. Однако эти поставщики расширений находятся вне области поддержки надстройки Istio. Все проблемы, связанные с средствами расширения, находятся вне границы поддержки надстройки Istio.
Распространенные ошибки и советы по устранению неполадок
- Убедитесь, что MeshConfig отступил пробелами вместо вкладок.
- Убедитесь, что вы редактируете только общую конфигурацию редакции (например
istio-shared-configmap-asm-1-18
) и не пытаетесь изменить конфигурацию по умолчанию (напримерistio-asm-1-18
). - ConfigMap должен следовать имени
istio-shared-configmap-<asm-revision>
и находиться вaks-istio-system
пространстве имен. - Убедитесь, что все поля MeshConfig правильно написаны. Если они не распознаются или не являются частью разрешенного списка, контроль допуска запрещает такие конфигурации.
- При выполнении обновления канарной версии проверьте определенные конфигурации ConfigMap, чтобы убедиться, что конфигурации существуют для версий, развернутых в кластере.
- Некоторые
MeshConfig
варианты, такие как accessLogging, могут увеличить потребление ресурсов Envoy, а некоторые из этих параметров могут снизить использование ресурсов плоскости данных Istio. Также рекомендуется использоватьdiscoverySelectors
поле в MeshConfig, чтобы облегчить потребление памяти для Istiod и Envoy. concurrency
Если поле в СеткеConfig неправильно настроено и установлено равным нулю, это приводит к тому, что Envoy будет использовать все ядра ЦП. Вместо этого, если это поле не задано, количество рабочих потоков для выполнения автоматически определяется на основе запросов и ограничений ЦП.- Условия гонки pod и бокового автомобиля, в которых приложение начинается до устранения
holdApplicationUntilProxyStarts
проблем с помощью поля в MeshConfig.
Azure Kubernetes Service