Jak používat konektor služby ve službě Azure Kubernetes Service (AKS)
Azure Kubernetes Service (AKS) je jednou z výpočetních služeb podporovaných konektorem služeb. Cílem tohoto článku je pomoct pochopit:
- Jaké operace se provádí v clusteru při vytváření připojení služby.
- Jak používat konektor služby Kubernetes resources Service Connector.
- Řešení potíží a zobrazení protokolů konektoru služby v clusteru AKS
Požadavky
- Tato příručka předpokládá, že už znáte základní koncepty konektoru služby.
Co dělá konektor služby Operations Service Connector v clusteru
V závislosti na různých cílových službách a typech ověřování vybraných při vytváření připojení ke službě provádí Konektor služby různé operace v clusteru AKS. Následující seznam uvádí možné operace provedené konektorem Service Connector.
Přidání rozšíření Kubernetes konektoru služby
Do clusteru se při prvním vytvoření připojení služby přidá rozšíření Kubernetes s názvem sc-extension
. Později rozšíření pomáhá vytvářet prostředky Kubernetes v clusteru uživatele, kdykoli přijde požadavek na připojení služby do konektoru Service Connector. Rozšíření najdete v clusteru AKS na webu Azure Portal v nabídce Rozšíření a aplikace .
Rozšíření je také místo, kde jsou uložena metadata připojení clusteru. Odinstalace rozšíření znepřístupňuje všechna připojení v clusteru. Operátor rozšíření je hostovaný v oboru názvů sc-system
clusteru .
Vytváření prostředků Kubernetes
Service Connector vytvoří některé prostředky Kubernetes pro obor názvů, který uživatel zadal při vytváření připojení služby. Prostředky Kubernetes ukládají informace o připojení, které vyžadují definice úloh uživatele nebo kód aplikace pro komunikaci s cílovými službami. V závislosti na různých typech ověřování se vytvoří různé prostředky Kubernetes. Connection String
Pro typy ověřování a Service Principal
typy ověřování se vytvoří tajný klíč Kubernetes. Workload Identity
Pro typ ověřování se kromě tajného kódu Kubernetes vytvoří také účet služby Kubernetes.
Prostředky Kubernetes vytvořené konektorem služby pro každé připojení služby najdete na webu Azure Portal v prostředku Kubernetes v nabídce Konektor služby.
Odstranění připojení služby neodstraní přidružený prostředek Kubernetes. V případě potřeby odeberte prostředek ručně, například příkaz kubectl delete.
Povolení doplňku azureKeyvaultSecretsProvider
Pokud je cílová služba Azure Key Vault a ovladač CSI úložiště tajných kódů je povolený při vytváření připojení služby, konektor služby povolí azureKeyvaultSecretsProvider
doplněk pro cluster.
Postupujte podle kurzuPřipojení ke službě Azure Key Vault pomocí ovladače CSI a nastavte připojení ke službě Azure Key Vault pomocí ovladače CSI služby Secret Store.
Povolení vystavitele identity úloh a OpenID Connect (OIDC)
Pokud je Workload Identity
typ ověřování při vytváření připojení služby, konektor Service Connector povolí identitu úloh a vystavitele OIDC pro cluster.
Pokud je Workload Identity
typ ověřování , je potřeba spravovaná identita přiřazená uživatelem k vytvoření přihlašovacích údajů federované identity. Přečtěte si další informace o identitách úloh nebo si podle kurzunastavte připojení ke službě Azure Storage pomocí identity úloh.
Použití prostředků Kubernetes vytvořených konektorem služby
Různé prostředky Kubernetes se vytvoří, když se liší typ cílové služby a typ ověřování. Následující části ukazují, jak pomocí konektoru služby vytvořené prostředky Kubernetes v definici úloh clusteru a kódech aplikací.
Tajný kód Kubernetes
Tajný klíč Kubernetes se vytvoří, když je Connection String
typ ověřování nebo Service Principal
. Definice úlohy clusteru může odkazovat přímo na tajný klíč. Následující fragment kódu je příkladem.
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
Kódy aplikací pak můžou využívat připojovací řetězec v tajném kódu z proměnné prostředí. V ukázkovém kódu se dozvíte více o názvech proměnných prostředí a o tom, jak je použít v kódech aplikace k ověření v různých cílových službách.
Účet služby Kubernetes
Účet služby Kubernetes i tajný klíč se vytvoří, když je Workload Identity
typ ověřování . Definice úlohy clusteru může odkazovat na účet služby a tajný klíč k ověření prostřednictvím identity úlohy. Následující fragment kódu poskytuje příklad.
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
V tomto kurzu se dozvíte, jak se připojit ke službě Azure Storage pomocí identity úloh.
Řešení potíží a zobrazení protokolů
Pokud dojde k chybě a nejde ji zmírnit opakovaným pokusem při vytváření připojení služby, můžou vám shromáždět další informace o řešení potíží následující metody.
Kontrola rozšíření Kubernetes konektoru služby
Rozšíření Kubernetes konektoru služby je postavené na rozšířeních clusteru Kubernetes s podporou Azure Arc. Pomocí následujících příkazů můžete zjistit, jestli během instalace nebo aktualizace rozšíření nedošlo k nějakým chybám.
k8s-extension
Nainstalujte rozšíření Azure CLI.
az extension add --name k8s-extension
- Získejte stav rozšíření service connectoru.
statuses
Zkontrolujte vlastnost ve výstupu příkazu a zjistěte, jestli nedošlo k nějakým chybám.
az k8s-extension show \
--resource-group MyClusterResourceGroup \
--cluster-name MyCluster \
--cluster-type managedClusters \
--name sc-extension
Kontrola protokolů clusteru Kubernetes
Pokud během instalace rozšíření dojde k chybě a chybová zpráva ve statuses
vlastnosti neposkytuje dostatek informací o tom, co se stalo, můžete protokoly Kubernetes dále zkontrolovat pomocí následujících kroků.
Připojte se ke clusteru AKS.
az aks get-credentials \ --resource-group MyClusterResourceGroup \ --name MyCluster
Rozšíření service Connectoru je nainstalované v oboru názvů
sc-system
prostřednictvím chartu Helm, zkontrolujte obor názvů a verzi helmu pomocí následujících příkazů.- Zkontrolujte, jestli obor názvů existuje.
kubectl get ns
- Zkontrolujte stav verze Helmu.
helm list -n sc-system
Během instalace nebo aktualizace rozšíření vytvoří úloha Kubernetes prostředky
sc-job
kubernetes pro připojení služby. Selhání spuštění úlohy obvykle způsobuje selhání rozšíření. Spuštěním následujících příkazů zkontrolujte stav úlohy. Pokudsc-job
vsc-system
oboru názvů neexistuje, měl by být úspěšně proveden. Tato úloha je navržená tak, aby se po úspěšném spuštění automaticky odstranila.- Zkontrolujte, jestli úloha existuje.
kubectl get job -n sc-system
- Získejte stav úlohy.
kubectl describe job/sc-job -n sc-system
- Prohlédněte si protokoly úloh.
kubectl logs job/sc-job -n sc-system
Běžné chyby a zmírnění rizik
Konflikt
Chybová zpráva:Operation returned an invalid status code: Conflict
.
Důvod: K této chybě obvykle dochází při pokusu o vytvoření připojení služby v době, kdy je cluster AKS (Azure Kubernetes Service) ve stavu aktualizace. Aktualizace připojení služby je v konfliktu s probíhající aktualizací. K tomu může dojít také v případě, že vaše předplatné není zaregistrované Microsoft.KubernetesConfiguration
pro poskytovatele prostředků.
Snížení rizika:
Spuštěním následujícího příkazu se ujistěte, že je vaše předplatné zaregistrované pro
Microsoft.KubernetesConfiguration
poskytovatele prostředků.az provider register -n Microsoft.KubernetesConfiguration
Ujistěte se, že je váš cluster ve stavu Úspěch, a zkuste vytvoření zopakovat.
Timeout
Chybová zpráva:
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
Důvod: K této chybě často dochází, když se kvůli omezením prostředků nebo jiným problémům nepodaří naplánovat úlohu Kubernetes použitou k vytvoření nebo aktualizaci rozšíření clusteru Konektoru služby.
Zmírnění: Podrobné důvody najdete v protokolech clusteru Kubernetes a zjistěte je a vyřešte. Běžným problémem je, že kvůli preempci nejsou k dispozici žádné uzly. V takovém případě zvažte přidání dalších uzlů nebo povolení automatického škálování pro uzly.
Neoprávněný přístup k prostředkům
Chybová zpráva:You do not have permission to perform ... If access was recently granted, please refresh your credentials
.
Důvod: Service Connector vyžaduje oprávnění k provozování prostředků Azure, ke kterému se chcete připojit, aby bylo možné provádět operace připojení vaším jménem. Tato chyba značí nedostatek potřebných oprávnění k některým prostředkům Azure.
Zmírnění: Zkontrolujte oprávnění k prostředkům Azure zadaným v chybové zprávě. Získejte požadovaná oprávnění a zkuste vytvoření zopakovat.
Chybějící registrace předplatného
Chybová zprávaThe subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration'
:
Důvod: Konektor služby vyžaduje registraci Microsoft.KubernetesConfiguration
předplatného , což je poskytovatel prostředků pro rozšíření clusteru Kubernetes s podporou Azure Arc.
Zmírnění rizik: Spuštěním následujícího příkazu zaregistrujte Microsoft.KubernetesConfiguration
poskytovatele prostředků. Další informace o chybách registrace poskytovatele prostředků najdete v tomto kurzu.
az provider register -n Microsoft.KubernetesConfiguration
Další problémy
Pokud výše uvedená omezení rizik váš problém nevyřeší, zkuste rozšíření clusteru konektoru služby resetovat tak, že ho odeberete a zkusíte vytvoření zopakovat. Očekává se, že tato metoda vyřeší většinu problémů souvisejících s rozšířením clusteru Service Connector.
K resetování rozšíření použijte následující příkazy rozhraní příkazového řádku:
az extension add --name k8s-extension
az k8s-extension delete \
--resource-group <MyClusterResourceGroup> \
--cluster-name <MyCluster> \
--cluster-type managedClusters \
--name sc-extension
Další kroky
Zjistěte, jak integrovat různé cílové služby a přečíst si o jejich nastavení konfigurace a metodách ověřování.