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
- In deze handleiding wordt ervan uitgegaan dat u de basisconcepten van Service Connector al kent.
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 .
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.
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.
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.
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.
- Installeer de
k8s-extension
Azure CLI-extensie.
az extension add --name k8s-extension
- 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.
Maak verbinding met uw AKS-cluster.
az aks get-credentials \ --resource-group MyClusterResourceGroup \ --name MyCluster
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
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. Alssc-job
deze niet bestaat insc-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.