Solución de problemas de extensión para clústeres de Kubernetes habilitados para Azure Arc
En este documento se proporcionan sugerencias para solucionar problemas comunes relacionados con las extensiones de clúster, como GitOps (Flux v2) y Open Service Mesh.
Para obtener ayuda para solucionar problemas generales con Kubernetes habilitado para Azure Arc, consulte Solución de problemas de Kubernetes habilitados para Azure Arc.
GitOps (Flux v2)
Nota:
La extensión Flux v2 se puede usar en clústeres de Kubernetes habilitados para Azure Arc o en clústeres de Azure Kubernetes Service (AKS). Estas sugerencias de solución de problemas se aplican generalmente independientemente del tipo de clúster.
Para solucionar problemas relacionados con el recurso fluxConfigurations
(Flux v2), ejecute estos comandos de la CLI de Azure con el parámetro --debug
especificado:
az provider show -n Microsoft.KubernetesConfiguration --debug
az k8s-configuration flux create <parameters> --debug
Webhook y errores de simulacro
Si observa que Flux no se concilia y muestra un error como dry-run failed, error: admission webhook "<webhook>" does not support dry run
, puede resolver el problema buscando los elementos ValidatingWebhookConfiguration
o MutatingWebhookConfiguration
y estableciendo sideEffects
en None
o NoneOnDryRun
:
Para más información, consulte ¿Cómo se resuelven los errores webhook does not support dry run
?
Errores al instalar la microsoft.flux
extensión
La extensión microsoft.flux
instala los controladores de Flux y los agentes de Azure GitOps en los clústeres de Kubernetes habilitado para Azure Arc o Azure Kubernetes Service (AKS). Si la extensión aún no está instalada en un clúster y se crea un recurso de configuración de GitOps para ese clúster, la extensión se instala automáticamente.
Si experimenta un error durante la instalación, o si la extensión está en estado de error, asegúrese de que el clúster no tiene ninguna directiva que restrinja la creación del flux-system
espacio de nombres o los recursos en ese espacio de nombres.
En cuanto a los clústeres de AKS, asegúrese de que la suscripción tenga habilitada la marca de Microsoft.ContainerService/AKS-ExtensionManager
característica.
az feature register --namespace Microsoft.ContainerService --name AKS-ExtensionManager
Después, ejecute este comando para determinar si hay otros problemas. Establezca el parámetro de tipo de clúster (-t
) en connectedClusters
para un clúster habilitado para Arc o managedClusters
para un clúster de AKS. El nombre de la microsoft.flux
extensión es "flux" si la extensión se instaló automáticamente durante la creación de la configuración de una instancia de GitOps. Busque información en el objeto statuses
.
az k8s-extension show -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux -t <connectedClusters or managedClusters>
Los resultados mostrados pueden ayudarle a determinar qué salió mal y cómo corregirlo. Entre las posibles acciones de corrección se incluyen las siguientes:
- Forzar la eliminación de la extensión mediante la ejecución de
az k8s-extension delete --force -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux -t <managedClusters OR connectedClusters>
- Desinstalación de la versión de Helm mediante la ejecución
helm uninstall flux -n flux-system
- Elimine el
flux-system
espacio de nombres del clúster mediante la ejecución dekubectl delete namespaces flux-system
Después de eso, puede volver a crear una configuraciónde flujo, que instala la microsoft.flux
extensión automáticamente o puede volver a instalar la extensión de flujo manualmente.
Errores al instalar la microsoft.flux
en un clúster con la identidad de Pod de Microsoft Entra habilitada
Si intenta instalar la extensión de Flux en un clúster que tenga habilitada la identidad de pod de Microsoft Entra, puede producirse un error en el pod del agente de extensión:
{"Message":"2021/12/02 10:24:56 Error: in getting auth header : error {adal: Refresh request failed. Status Code = '404'. Response body: no azure identity found for request clientID <REDACTED>\n}","LogType":"ConfigAgentTrace","LogLevel":"Information","Environment":"prod","Role":"ClusterConfigAgent","Location":"westeurope","ArmId":"/subscriptions/<REDACTED>/resourceGroups/<REDACTED>/providers/Microsoft.Kubernetes/managedclusters/<REDACTED>","CorrelationId":"","AgentName":"FluxConfigAgent","AgentVersion":"0.4.2","AgentTimestamp":"2021/12/02 10:24:56"}
El estado de la extensión también se devuelve como Failed
.
"{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"ExtensionCreationFailed\",\"message\":\" error: Unable to get the status from the local CRD with the error : {Error : Retry for given duration didn't get any results with err {status not populated}}\"}]}}",
En este caso, el pod extension-agent intenta obtener su token de IMDS en el clúster. pero la identidad del pod intercepta la solicitud de token. Para corregir este problema, actualice a la versión más reciente de la microsoft.flux
extensión.
Problemas con la identidad de kubelet al instalar la microsoft.flux
extensión en un clúster de AKS
Con los clústeres de AKs, una de las opciones de autenticación es la identidad de kubelet mediante una identidad administrada asignada por el usuario. El uso de la identidad kubelet puede reducir la sobrecarga operativa y aumenta la seguridad al conectarse a recursos de Azure como Azure Container Registry.
Para permitir que Flux use la identidad de kubelet, agregue el parámetro --config useKubeletIdentity=true
al instalar la extensión Flux.
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true
Asegurarse de que se cumplen los requisitos de memoria y del CPU para la microsoft.flux
instalación de extensiones
Los controladores que se instalen en el clúster de Kubernetes mediante microsoft.flux
la extensión requieren recursos de CPU y memoria para programar correctamente en los nodos del clúster de Kubernetes. Asegúrese de que el clúster puede satisfacer los recursos mínimos de memoria y del CPU que se pueden solicitar. Tenga en cuenta también los límites máximos para los posibles requisitos de recursos de CPU y memoria que se muestran aquí.
Nombre del contenedor | CPU mínima | Memoria mínima | CPU máxima | Memoria máxima |
---|---|---|---|---|
fluxconfig-agent | 5 m | 30 Mi | 50 m | 150 Mi |
fluxconfig-controller | 5 m | 30 Mi | 100 m | 150 Mi |
fluent-bit | 5 m | 30 Mi | 20 m | 150 Mi |
helm-controller | 100 m | 64 Mi | 1000 m | 1 Gi |
source-controller | 50 m | 64 Mi | 1000 m | 1 Gi |
kustomize-controller | 100 m | 64 Mi | 1000 m | 1 Gi |
notification-controller | 100 m | 64 Mi | 1000 m | 1 Gi |
image-automation-controller | 100 m | 64 Mi | 1000 m | 1 Gi |
image-reflector-controller | 100 m | 64 Mi | 1000 m | 1 Gi |
Si ha habilitado una directiva de Azure Gatekeeper Policy personalizada o integrada que limita los recursos de los contenedores en clústeres de Kubernetes, como Kubernetes cluster containers CPU and memory resource limits should not exceed the specified limits
, asegúrese de que los límites de recursos de la directiva sean mayores que los límites mostrados anteriormente o que el flux-system
espacio de nombres forma parte del excludedNamespaces
parámetro en la asignación de directivas.
Flux v1
Nota:
Se recomienda migrar a Flux v2 lo antes posible. La compatibilidad con los recursos de configuración de clúster basados en Flux v1 creados antes del 1 de enero de 2024 finalizará el 24 de mayo de 2025. A partir del 1 de enero de 2024, no podrá crear nuevos recursos de configuración de clúster basados en Flux v1.
Para solucionar problemas relacionadossourceControlConfigurations
con el recurso (Flux v1), ejecute estos comandos de la CLI de Azure con el parámetro --debug
especificado:
az provider show -n Microsoft.KubernetesConfiguration --debug
az k8s-configuration flux create <parameters> --debug
Container Insights de Azure Monitor
En esta sección se proporciona ayuda para solucionar problemas con Container Insights de Azure Monitor para clústeres de Kubernetes habilitados para Azure Arc.
Activación del modo privilegiado para el clúster Canonical Charmed Kubernetes
Azure Monitor Container Insights requiere que su DaemonSet se ejecute en modo privilegiado. Para configurar correctamente un clúster de Canonical Charmed Kubernetes para la supervisión, ejecute el siguiente comando:
juju config kubernetes-worker allow-privileged=true
No se puede instalar el agente de Azure Monitor (AMA) en Oracle Linux 9.x
Al intentar instalar el agente de Azure Monitor (AMA) en un clúster de Kubernetes de Oracle Linux (RHEL) 9.x, es posible que los pods AMA y el pod AMA-RS no funcionen correctamente debido al addon-token-adapter
contenedor del pod. Con este error, al comprobar los registros del ama-logs-rs
pod, addon-token-adapter container
, verá una salida similar a la siguiente:
Command: kubectl -n kube-system logs ama-logs-rs-xxxxxxxxxx-xxxxx -c addon-token-adapter
Error displayed: error modifying iptable rules: error adding rules to custom chain: running [/sbin/iptables -t nat -N aad-metadata --wait]: exit status 3: modprobe: can't change directory to '/lib/modules': No such file or directory
iptables v1.8.9 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
Este error se produce porque la instalación de la extensión requiere el iptable_nat
módulo, pero este módulo no se carga automáticamente en distribuciones de Oracle Linux (RHEL) 9.x.
Para corregir este problema, debe cargar explícitamente el iptables_nat
módulo en cada nodo del clúster, mediante el modprobe
comando sudo modprobe iptables_nat
. Una vez que haya iniciado sesión en cada nodo y agregado eliptable_nat
módulo manualmente, vuelva a intentar la instalación de AMA.
Nota:
La realización de este paso no hace que el iptables_nat
módulo sea persistente.
Open Service Mesh habilitado para Azure Arc
En esta sección se proporcionan comandos que puede usar para validar y solucionar problemas de la implementación de los componentes de extensión Open Service Mesh (OSM) en el clúster.
Comprobación de la implementación del controlador de OSM
kubectl get deployment -n arc-osm-system --selector app=osm-controller
Si el controlador de OSM es correcto, verá una salida similar a la siguiente:
NAME READY UP-TO-DATE AVAILABLE AGE
osm-controller 1/1 1 1 59m
Comprobación de pods del controlador de OSM
kubectl get pods -n arc-osm-system --selector app=osm-controller
Si el controlador de OSM es correcto, verá una salida similar a la siguiente:
NAME READY STATUS RESTARTS AGE
osm-controller-b5bd66db-wglzl 0/1 Evicted 0 61m
osm-controller-b5bd66db-wvl9w 1/1 Running 0 31m
Aunque un controlador haya sido desalojado en algún momento, hay otro que lo está READY 1/1
y Running
con 0
reinicios. Si el valor de la columna READY
es distinto de 1/1
, la malla del servicio está en un estado interrumpido. Una columna READY
que tiene el valor 0/1
indica que el contenedor del plano de control se está bloqueado.
Use el siguiente comando para inspeccionar los registros del controlador:
kubectl logs -n arc-osm-system -l app=osm-controller
La columna READY
con un número mayor que 1
después de la /
indica que hay sidecars instalados. Por lo general, el controlador OSM no funcionará correctamente con sidecars conectados.
Comprobación del servicio de controlador de OSM
kubectl get service -n arc-osm-system osm-controller
Si el estado del controlador de OSM es correcto, se mostrará la siguiente salida:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
osm-controller ClusterIP 10.0.31.254 <none> 15128/TCP,9092/TCP 67m
Nota:
El CLUSTER-IP
será diferente. El servicio NAME
y PORT(S)
debe coincidir con lo que se muestra aquí.
Comprobación de los puntos de conexión del controlador de OSM
kubectl get endpoints -n arc-osm-system osm-controller
Si el controlador de OSM es correcto, verá una salida similar a la siguiente:
NAME ENDPOINTS AGE
osm-controller 10.240.1.115:9092,10.240.1.115:15128 69m
Si el clúster no tiene ENDPOINTS
para osm-controller
, el plano de control es incorrecto. Este estado incorrecto significa que el pod del controlador se bloqueó o que nunca se implementó correctamente.
Comprobación de la implementación del inyector de OSM
kubectl get deployments -n arc-osm-system osm-injector
Si el inyector de OSM es correcto, verá una salida similar a la siguiente:
NAME READY UP-TO-DATE AVAILABLE AGE
osm-injector 1/1 1 1 73m
Comprobación del pod del inyector de OSM
kubectl get pod -n arc-osm-system --selector app=osm-injector
Si el inyector de OSM es correcto, verá una salida similar a la siguiente:
NAME READY STATUS RESTARTS AGE
osm-injector-5986c57765-vlsdk 1/1 Running 0 73m
La columna READY
debe ser 1/1
. Cualquier otro valor indica un pod de inyector de OSM incorrecto.
Comprobación del servicio del inyector de OSM
kubectl get service -n arc-osm-system osm-injector
Si el inyector de OSM es correcto, verá una salida similar a la siguiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
osm-injector ClusterIP 10.0.39.54 <none> 9090/TCP 75m
Asegúrese de que la dirección IP que aparece para el servicio osm-injector
es 9090
. No debería ser una EXTERNAL-IP
.
Comprobación de los puntos de conexión del inyector de OSM
kubectl get endpoints -n arc-osm-system osm-injector
Si el inyector de OSM es correcto, verá una salida similar a la siguiente:
NAME ENDPOINTS AGE
osm-injector 10.240.1.172:9090 75m
Para que OSM funcione, debe haber al menos un punto de conexión para osm-injector
. La dirección IP de los puntos de conexión del inyector de OSM variará, pero el puerto 9090
debe ser el mismo.
Comprobación de los webhooks de validación y mutación
kubectl get ValidatingWebhookConfiguration --selector app=osm-controller
Si el webhook de Validación es correcto, verá una salida similar a la siguiente:
NAME WEBHOOKS AGE
osm-validator-mesh-osm 1 81m
kubectl get MutatingWebhookConfiguration --selector app=osm-injector
Si el mutar webhook es correcto, verá un resultado similar al siguiente:
NAME WEBHOOKS AGE
arc-osm-webhook-osm 1 102m
Compruebe el servicio y el paquete de CA del webhook de Validación mediante este comando:
kubectl get ValidatingWebhookConfiguration osm-validator-mesh-osm -o json | jq '.webhooks[0].clientConfig.service'
La configuración correcta de un webhook de Validación tendrá una salida similar a:
{
"name": "osm-config-validator",
"namespace": "arc-osm-system",
"path": "/validate",
"port": 9093
}
Compruebe el servicio y el paquete de CA del webhook de mutación mediante la ejecución del siguiente comando:
kubectl get MutatingWebhookConfiguration arc-osm-webhook-osm -o json | jq '.webhooks[0].clientConfig.service'
La configuración correcta de un webhook de mutación tendrá una salida similar al:
{
"name": "osm-injector",
"namespace": "arc-osm-system",
"path": "/mutate-pod-creation",
"port": 9090
}
Compruebe si el controlador de OSM ha otorgado un paquete de CA al webhook de validación (o de mutación) mediante el comando siguiente:
kubectl get ValidatingWebhookConfiguration osm-validator-mesh-osm -o json | jq -r '.webhooks[0].clientConfig.caBundle' | wc -c
kubectl get MutatingWebhookConfiguration arc-osm-webhook-osm -o json | jq -r '.webhooks[0].clientConfig.caBundle' | wc -c
Ejemplo:
1845
El número de la salida indica el número de bytes o el tamaño del paquete de CA. Si la salida está vacía, 0 o un número inferior a 1000, la agrupación de CA no se aprovisiona correctamente. Sin una agrupación de CA correcta, el ValidatingWebhook
produce un error.
Comprobación del recurso osm-mesh-config
Compruebe que el recurso exista:
kubectl get meshconfig osm-mesh-config -n arc-osm-system
Compruebe el contenido del recurso MeshConfig de OSM:
kubectl get meshconfig osm-mesh-config -n arc-osm-system -o yaml
Debería mostrarse una salida similar a esta:
apiVersion: config.openservicemesh.io/v1alpha1
kind: MeshConfig
metadata:
creationTimestamp: "0000-00-00A00:00:00A"
generation: 1
name: osm-mesh-config
namespace: arc-osm-system
resourceVersion: "2494"
uid: 6c4d67f3-c241-4aeb-bf4f-b029b08faa31
spec:
certificate:
certKeyBitSize: 2048
serviceCertValidityDuration: 24h
featureFlags:
enableAsyncProxyServiceMapping: false
enableEgressPolicy: true
enableEnvoyActiveHealthChecks: false
enableIngressBackendPolicy: true
enableMulticlusterMode: false
enableRetryPolicy: false
enableSnapshotCacheMode: false
enableWASMStats: true
observability:
enableDebugServer: false
osmLogLevel: info
tracing:
enable: false
sidecar:
configResyncInterval: 0s
enablePrivilegedInitContainer: false
logLevel: error
resources: {}
traffic:
enableEgress: false
enablePermissiveTrafficPolicyMode: true
inboundExternalAuthorization:
enable: false
failureModeAllow: false
statPrefix: inboundExtAuthz
timeout: 1s
inboundPortExclusionList: []
outboundIPRangeExclusionList: []
outboundPortExclusionList: []
kind: List
metadata:
resourceVersion: ""
selfLink: ""
Valores del recurso osm-mesh-config
:
Clave | Tipo | Valor predeterminado | Ejemplos de comandos de revisión de Kubectl |
---|---|---|---|
spec.traffic.enableEgress | bool | false |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enableEgress":false}}}' --type=merge |
spec.traffic.enablePermissiveTrafficPolicyMode | bool | true |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":true}}}' --type=merge |
spec.traffic.outboundPortExclusionList | array | [] |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"outboundPortExclusionList":[6379,8080]}}}' --type=merge |
spec.traffic.outboundIPRangeExclusionList | array | [] |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"outboundIPRangeExclusionList":["10.0.0.0/32","1.1.1.1/24"]}}}' --type=merge |
spec.traffic.inboundPortExclusionList | array | [] |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"inboundPortExclusionList":[6379,8080]}}}' --type=merge |
spec.certificate.serviceCertValidityDuration | string | "24h" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"certificate":{"serviceCertValidityDuration":"24h"}}}' --type=merge |
spec.observability.enableDebugServer | bool | false |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"enableDebugServer":false}}}' --type=merge |
spec.observability.osmLogLevel | string | "info" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"tracing":{"osmLogLevel": "info"}}}}' --type=merge |
spec.observability.tracing.enable | bool | false |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"tracing":{"enable":true}}}}' --type=merge |
spec.sidecar.enablePrivilegedInitContainer | bool | false |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"sidecar":{"enablePrivilegedInitContainer":true}}}' --type=merge |
spec.sidecar.logLevel | string | "error" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"sidecar":{"logLevel":"error"}}}' --type=merge |
spec.featureFlags.enableWASMStats | bool | "true" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableWASMStats":"true"}}}' --type=merge |
spec.featureFlags.enableEgressPolicy | bool | "true" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableEgressPolicy":"true"}}}' --type=merge |
spec.featureFlags.enableMulticlusterMode | bool | "false" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableMulticlusterMode":"false"}}}' --type=merge |
spec.featureFlags.enableSnapshotCacheMode | bool | "false" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableSnapshotCacheMode":"false"}}}' --type=merge |
spec.featureFlags.enableAsyncProxyServiceMapping | bool | "false" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableAsyncProxyServiceMapping":"false"}}}' --type=merge |
spec.featureFlags.enableIngressBackendPolicy | bool | "true" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableIngressBackendPolicy":"true"}}}' --type=merge |
spec.featureFlags.enableEnvoyActiveHealthChecks | bool | "false" |
kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableEnvoyActiveHealthChecks":"false"}}}' --type=merge |
Comprobación de espacios de nombres
Nota:
El espacio de nombres arc-osm-system nunca participará en una malla de servicio ni se etiquetará o anotará con la clave o los valores que se muestran aquí.
Usamos el comando osm namespace add
para unir espacios de nombres a una malla de servicio determinada. Cuando un espacio de nombres de Kubernetes forma parte de la malla, siga estos pasos para confirmar que se cumplen los requisitos.
Vea las anotaciones del espacio de nombres bookbuyer
:
kubectl get namespace bookbuyer -o json | jq '.metadata.annotations'
Las siguientes anotaciones deben estar presentes:
{
"openservicemesh.io/sidecar-injection": "enabled"
}
Vea las etiquetas del espacio de nombres bookbuyer
:
kubectl get namespace bookbuyer -o json | jq '.metadata.labels'
La siguiente etiqueta debe estar presente:
{
"openservicemesh.io/monitored-by": "osm"
}
Si no usa osm
CLI, también puede agregar manualmente estas anotaciones a los espacios de nombres. Si un espacio de nombres no está anotado con "openservicemesh.io/sidecar-injection": "enabled"
, o no está etiquetado con "openservicemesh.io/monitored-by": "osm"
, el inyector de OSM no agregará sidecars de Envoy.
Nota:
Después de que se llame a osm namespace add
, solo se insertarán los pods con un sidecar de Envoy. Los pods existentes deben reiniciarse con el kubectl rollout restart deployment
comando.
Comprobación de las CRD de SMI
Compruebe si el clúster tiene las definiciones de recursos personalizadas (CRD) necesarias mediante el siguiente comando:
kubectl get crds
Asegúrese de que las CRD corresponden a las versiones disponibles en la rama de versión. Para confirmar qué versiones CRD están en uso, visite la página versiones compatibles con SMI y seleccione la versión en la lista desplegable Versiones.
Obtenga las versiones de los CRD instalados con el siguiente comando:
for x in $(kubectl get crds --no-headers | awk '{print $1}' | grep 'smi-spec.io'); do
kubectl get crd $x -o json | jq -r '(.metadata.name, "----" , .spec.versions[].name, "\n")'
done
Si faltan las CRD, use los siguientes comandos para instalarlas en el clúster. Reemplace la versión de estos comandos según sea necesario (por ejemplo, v1.1.0 sería la versión-v1.1).
kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_http_route_group.yaml
kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_tcp_route.yaml
kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_traffic_access.yaml
kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_traffic_split.yaml
Consulte las notas de la versión de OSM para ver los cambios que se producen entre las distintas versiones de CRD.
Solución de problemas de administración de certificados
Para obtener más información sobre cómo OSM emite y administra certificados en servidores proxy de Envoy que se ejecutan en pods de aplicación, consulte el sitio de documentación de OSM.
Actualización de Envoy
Cuando se crea un nuevo pod en un espacio de nombres supervisado por el complemento, OSM se inserta un sidecar de proxy de Envoy en ese pod. Si es necesario actualizar la versión de Envoy, siga los pasos que se detallan en la Guía de actualización del sitio de documentación de OSM.
Pasos siguientes
- Obtenga más información sobre las extensiones de clúster.
- Vea sugerencias generalesde solución de problemas para clústeres de Kubernetes habilitados para Arc.