Delen via


Serviceconnector gebruiken in Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) is een van de rekenservices die worden ondersteund door Service Connector. Dit artikel is bedoeld om u te helpen het volgende te begrijpen:

  • Welke bewerkingen worden uitgevoerd op het cluster bij het maken van een serviceverbinding.
  • De Kubernetes-resourcesserviceconnector gebruiken.
  • Problemen oplossen en logboeken van serviceconnector weergeven in een AKS-cluster.

Vereisten

Welke bewerkingen Service Connector maakt op het cluster

Afhankelijk van de verschillende doelservices en verificatietypen die zijn geselecteerd bij het maken van een serviceverbinding, maakt Service Connector verschillende bewerkingen op het AKS-cluster. Hieronder ziet u de mogelijke bewerkingen die door serviceconnector worden uitgevoerd.

De Kubernetes-extensie serviceconnector toevoegen

Een kubernetes-extensie met de naam sc-extension wordt toegevoegd aan het cluster wanneer er voor het eerst een serviceverbinding wordt gemaakt. Later helpt de extensie bij het maken van kubernetes-resources in het cluster van de gebruiker, wanneer een serviceverbindingsaanvraag bij Service Connector wordt geleverd. U vindt de extensie in uw AKS-cluster in Azure Portal, in het menu Extensies en toepassingen .

Schermopname van De Azure-portal, bekijk de AKS-extensie.

De extensie is ook waar de metagegevens van de clusterverbindingen worden opgeslagen. Als u de extensie verwijdert, zijn alle verbindingen in het cluster niet beschikbaar. De extensieoperator wordt gehost in de clusternaamruimte sc-system.

Kubernetes-resources maken

ServiceConnector maakt enkele kubernetes-resources voor de naamruimte die de gebruiker heeft opgegeven bij het maken van een serviceverbinding. De kubernetes-resources slaan de verbindingsgegevens op die nodig zijn voor de workloaddefinities of toepassingscode van de gebruiker om te communiceren met doelservices. Afhankelijk van verschillende verificatietypen worden verschillende kubernetes-resources gemaakt. Voor de Connection String typen en Service Principal verificatie wordt een kubernetes-geheim gemaakt. Voor het Workload Identity verificatietype wordt naast een kubernetes-geheim ook een kubernetes-serviceaccount gemaakt.

U vindt de kubernetes-resources die door Service Connector zijn gemaakt voor elke serviceverbinding in Azure Portal in uw kubernetes-resource in het menu Serviceconnector.

Schermopname van Azure Portal, serviceconnector weergeven die kubernetes-resources hebben gemaakt.

Als u een serviceverbinding verwijdert, wordt de bijbehorende Kubernetes-resource niet verwijderd. Verwijder indien nodig de resource handmatig met behulp van bijvoorbeeld de opdracht kubectl delete.

azureKeyvaultSecretsProvider De invoegtoepassing inschakelen

Als de doelservice Azure Key Vault is en het CSI-stuurprogramma secret store is ingeschakeld bij het maken van een serviceverbinding, schakelt serviceconnector de azureKeyvaultSecretsProvider invoegtoepassing voor het cluster in.

Schermopname van Azure Portal, waarbij het CSI-stuurprogramma voor keyvault wordt ingeschakeld bij het maken van een verbinding.

Volg de zelfstudieverbinding maken met Azure Key Vault met behulp van CSI-stuurprogramma om een verbinding met Azure Key Vault in te stellen met behulp van het CSI-stuurprogramma secret store.

OIDC-verlener (WorkloadIdentiteit en OpenID Connect) inschakelen

Als het verificatietype zich voor Workload Identity het maken van een serviceverbinding bevindt, schakelt Service Connector workloadidentiteit en OIDC-verlener in voor het cluster.

Schermopname van Azure Portal met behulp van workloadidentiteit om een verbinding te maken.

Wanneer het verificatietype is Workload Identity, is een door de gebruiker toegewezen beheerde identiteit nodig om de federatieve identiteitsreferentie te maken. Lees meer over wat workloadidentiteiten zijn of volg de zelfstudieom een verbinding met Azure Storage in te stellen met behulp van workloadidentiteit.

De serviceconnector gebruiken die kubernetes-resources heeft gemaakt

Er worden verschillende kubernetes-resources gemaakt wanneer het doelservicetype en het verificatietype verschillend zijn. In de volgende secties ziet u hoe u de serviceconnector gebruikt die kubernetes-resources heeft gemaakt in de definitie van uw clusterworkloads en toepassingscodes.

Kubernetes-geheim

Er wordt een kubernetes-geheim gemaakt wanneer het verificatietype is Connection String of Service Principal. De definitie van uw clusterworkload kan rechtstreeks naar het geheim verwijzen. Het volgende snnipet is een voorbeeld.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
spec:
  template:
    spec:
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

Vervolgens kunnen uw toepassingscodes de verbindingsreeks in het geheim van de omgevingsvariabele gebruiken. U kunt de voorbeeldcode controleren voor meer informatie over de namen van omgevingsvariabelen en hoe u deze kunt gebruiken in uw toepassingscodes om te verifiëren bij verschillende doelservices.

Kubernetes-serviceaccount

Zowel een kubernetes-serviceaccount als een geheim worden gemaakt wanneer het verificatietype is Workload Identity. De definitie van uw clusterworkload kan verwijzen naar het serviceaccount en geheim om te verifiëren via de workloadidentiteit. De volgende codefragment bevat een voorbeeld.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
  labels:
    azure.workload.identity/use: "true"
spec:
  template:
    spec:
      serviceAccountName: <ServiceAccountCreatedByServiceConnector>
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

U kunt de zelfstudie bekijken voor meer informatie over het maken van verbinding met Azure Storage met behulp van workloadidentiteit.

Problemen met logboeken oplossen en weergeven

Als er een fout optreedt en niet kan worden verzacht door opnieuw te proberen bij het maken van een serviceverbinding, kunnen de volgende methoden helpen meer informatie te verzamelen voor het oplossen van problemen.

Kubernetes-extensie voor serviceconnector controleren

Kubernetes-extensie voor serviceconnector is gebouwd op basis van Kubernetes-clusterextensies met Azure Arc. Gebruik de volgende opdrachten om te onderzoeken of er fouten optreden tijdens de installatie of het bijwerken van de extensie.

  1. Installeer de k8s-extension Azure CLI-extensie.
az extension add --name k8s-extension
  1. Haal de status van de serviceconnector-extensie op. Controleer de statuses eigenschap in de opdrachtuitvoer om te zien of er fouten zijn.
az k8s-extension show \
    --resource-group MyClusterResourceGroup \
    --cluster-name MyCluster \
    --cluster-type managedClusters \
    --name sc-extension

Kubernetes-clusterlogboeken controleren

Als er een fout optreedt tijdens de installatie van de extensie en het foutbericht in de statuses eigenschap onvoldoende informatie bevat over wat er is gebeurd, kunt u de kubernetes-logboeken verder controleren met de volgende stappen.

  1. Maak verbinding met uw AKS-cluster.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. Service Connector-extensie wordt geïnstalleerd in de naamruimte sc-system via helm-grafiek, controleer de naamruimte en de Helm-release door de volgende opdrachten te volgen.

    • Controleer of de naamruimte bestaat.
    kubectl get ns
    
    • Controleer de helm-releasestatus.
    helm list -n sc-system
    
  3. Tijdens de installatie of het bijwerken van de extensie maakt een kubernetes-taak met de naam sc-job kubernetes-resources voor de serviceverbinding. De mislukte taakuitvoering veroorzaakt meestal de extensiefout. Controleer de taakstatus door de volgende opdrachten uit te voeren. Als sc-job deze niet bestaat in sc-system de naamruimte, moet deze zijn uitgevoerd. Deze taak is ontworpen om automatisch te worden verwijderd na een geslaagde uitvoering.

    • Controleer of de taak bestaat.
    kubectl get job -n sc-system
    
    • Haal de taakstatus op.
    kubectl describe job/sc-job -n sc-system
    
    • Bekijk de taaklogboeken.
    kubectl logs job/sc-job -n sc-system
    

Veelvoorkomende fouten en oplossingen

Conflict

Foutbericht:Operation returned an invalid status code: Conflict.

Reden: deze fout treedt meestal op wanneer u probeert een serviceverbinding te maken terwijl het AKS-cluster (Azure Kubernetes Service) een updatestatus heeft. De update van de serviceverbinding conflicteert met de doorlopende update. Dit kan ook gebeuren wanneer uw abonnement niet is geregistreerd voor de Microsoft.KubernetesConfiguration resourceprovider.

Oplossing:

  • Voer de volgende opdracht uit om ervoor te zorgen dat uw abonnement is geregistreerd voor Microsoft.KubernetesConfiguration de resourceprovider.

    az provider register -n Microsoft.KubernetesConfiguration
    
  • Zorg ervoor dat uw cluster de status Geslaagd heeft en probeer het opnieuw te maken.

Timeout

Foutbericht:

  • Long running operation failed with status 'Failed'. Unable to get a response from the Agent in time.
  • Timed out waiting for the resource to come to a ready/completed state

Reden: deze fout treedt vaak op wanneer de Kubernetes-taak die wordt gebruikt voor het maken of bijwerken van de serviceconnectorclusterextensie niet kan worden gepland vanwege resourcebeperkingen of andere problemen.

Risicobeperking: Raadpleeg Kubernetes-clusterlogboeken controleren om de gedetailleerde redenen te identificeren en op te lossen. Een veelvoorkomend probleem is dat er geen knooppunten beschikbaar zijn vanwege voorrang. In dit geval kunt u meer knooppunten toevoegen of automatisch schalen voor uw knooppunten inschakelen.

Onbevoegde toegang tot resources

Foutbericht:You do not have permission to perform ... If access was recently granted, please refresh your credentials.

Reden: Voor de serviceconnector zijn machtigingen vereist om de Azure-resources te laten werken waarmee u verbinding wilt maken, om namens u verbindingsbewerkingen uit te voeren. Deze fout geeft aan dat er onvoldoende machtigingen zijn voor sommige Azure-resources.

Risicobeperking: Controleer de machtigingen voor de Azure-resources die zijn opgegeven in het foutbericht. Haal de vereiste machtigingen op en probeer het opnieuw te maken.

Ontbrekende abonnementsregistratie

FoutberichtThe subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration':

Reden: Voor serviceconnector moet het abonnement zijn geregistreerd Microsoft.KubernetesConfiguration. Dit is de resourceprovider voor Kubernetes-clusterextensies met Azure Arc.

Risicobeperking: registreer de Microsoft.KubernetesConfiguration resourceprovider door de volgende opdracht uit te voeren. Raadpleeg deze zelfstudie voor meer informatie over registratiefouten van de resourceprovider.

az provider register -n Microsoft.KubernetesConfiguration

Overige problemen

Als de bovenstaande oplossingen uw probleem niet oplossen, probeert u de clusterextensie van de serviceconnector opnieuw in te stellen door deze te verwijderen en het maken opnieuw uit te voeren. Deze methode wordt verwacht om de meeste problemen met betrekking tot de clusterextensie serviceconnector op te lossen.

Gebruik de volgende CLI-opdrachten om de extensie opnieuw in te stellen:

az extension add --name k8s-extension

az k8s-extension delete \
    --resource-group <MyClusterResourceGroup> \
    --cluster-name <MyCluster> \
    --cluster-type managedClusters \
    --name sc-extension

Volgende stappen

Meer informatie over het integreren van verschillende doelservices en het lezen van hun configuratie-instellingen en verificatiemethoden.