Używanie łącznika usługi w usłudze Azure Kubernetes Service (AKS)
Usługa Azure Kubernetes Service (AKS) to jedna z usług obliczeniowych obsługiwanych przez łącznik usługi. Ten artykuł ma na celu ułatwienie zrozumienia:
- Jakie operacje są wykonywane w klastrze podczas tworzenia połączenia z usługą.
- Jak używać zasobów platformy Kubernetes utworzonych przez łącznik usługi.
- Jak rozwiązywać problemy i wyświetlać dzienniki łącznika usługi w klastrze usługi AKS.
Wymagania wstępne
- W tym przewodniku założono, że znasz już podstawowe pojęcia łącznika usług.
Operacje wykonywane przez łącznik usługi w klastrze usługi AKS
W zależności od różnych usług docelowych i typów uwierzytelniania wybranych podczas tworzenia połączenia z usługą łącznik usługi wykonuje różne operacje w klastrze usługi AKS. Poniżej wymieniono możliwe operacje wykonane przez łącznik usługi.
Dodawanie rozszerzenia Kubernetes łącznika usługi
Rozszerzenie Kubernetes o nazwie sc-extension
jest dodawane do klastra przy pierwszym utworzeniu połączenia z usługą. Później rozszerzenie pomaga tworzyć zasoby Kubernetes w klastrze użytkownika, gdy żądanie połączenia z usługą przychodzi do łącznika usługi. Rozszerzenie można znaleźć w klastrze usługi AKS w witrynie Azure Portal w menu Rozszerzenia i aplikacje .
Rozszerzenie to również miejsce przechowywania metadanych połączeń klastra. Odinstalowanie rozszerzenia sprawia, że wszystkie połączenia w klastrze są niedostępne. Operator rozszerzenia jest hostowany w przestrzeni nazw sc-system
klastra .
Tworzenie zasobów platformy Kubernetes
Łącznik usługi tworzy niektóre zasoby Kubernetes w przestrzeni nazw określonej przez użytkownika podczas tworzenia połączenia z usługą. Zasoby platformy Kubernetes przechowują informacje o połączeniu, które są wymagane przez definicje obciążenia użytkownika lub kod aplikacji, aby komunikować się z usługami docelowymi. W zależności od różnych typów uwierzytelniania tworzone są różne zasoby platformy Kubernetes.
Connection String
W przypadku typów i Service Principal
uwierzytelniania tworzony jest wpis tajny kubernetes.
Workload Identity
Dla typu uwierzytelniania oprócz wpisu tajnego kubernetes jest również tworzone konto usługi Kubernetes.
Zasoby kubernetes utworzone przez łącznik usługi dla każdego połączenia z usługą można znaleźć w witrynie Azure Portal w zasobie Kubernetes w menu Łącznik usługi.
Usunięcie połączenia z usługą nie powoduje usunięcia skojarzonego zasobu Kubernetes. W razie potrzeby usuń zasób ręcznie, używając na przykład polecenia kubectl delete.
Włączanie azureKeyvaultSecretsProvider
dodatku
Jeśli usługa docelowa to Azure Key Vault, a sterownik CSI magazynu wpisów tajnych jest włączony podczas tworzenia połączenia z usługą, łącznik usługi włącza azureKeyvaultSecretsProvider
dodatek dla klastra.
Postępuj zgodnie z samouczkiemNawiązywanie połączenia z usługą Azure Key Vault przy użyciu sterownika CSI, aby skonfigurować połączenie z usługą Azure Key Vault przy użyciu sterownika CSI magazynu wpisów tajnych.
Włączanie tożsamości obciążenia i wystawcy openID Connect (OIDC)
Jeśli typ uwierzytelniania występuje Workload Identity
podczas tworzenia połączenia z usługą, łącznik usługi włącza tożsamość obciążenia i wystawcę OIDC dla klastra.
Gdy typ uwierzytelniania to Workload Identity
, tożsamość zarządzana przypisana przez użytkownika jest wymagana do utworzenia poświadczeń tożsamości federacyjnej. Dowiedz się więcej na temat tożsamości obciążeń lub postępuj zgodnie z samouczkiem, aby skonfigurować połączenie z usługą Azure Storage przy użyciu tożsamości obciążenia.
Korzystanie z zasobów platformy Kubernetes utworzonych przez łącznik usługi
Różne zasoby kubernetes są tworzone przez łącznik usługi w zależności od typu usługi docelowej i typu uwierzytelniania. W poniższych sekcjach pokazano, jak używać zasobów Kubernetes utworzonych przez łącznik usługi w definicji obciążeń klastra i kodzie aplikacji.
Wpis tajny platformy Kubernetes
Wpis tajny kubernetes jest tworzony, gdy typ uwierzytelniania jest ustawiony na Connection String
wartość lub Service Principal
. Definicja obciążenia klastra może odwoływać się bezpośrednio do wpisu tajnego. Poniższy fragment kodu zawiera przykład.
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
Kod aplikacji może używać parametry połączenia w wpisie tajnym ze zmiennej środowiskowej. Zapoznaj się z poniższym przykładowym kodem , aby dowiedzieć się więcej o nazwach zmiennych środowiskowych i sposobie ich używania w kodzie aplikacji do uwierzytelniania w różnych usługach docelowych.
Konto usługi Kubernetes
Konto usługi Kubernetes i wpis tajny są tworzone, gdy typ uwierzytelniania ma wartość Workload Identity
. Definicja obciążenia klastra może odwoływać się do konta usługi i wpisu tajnego w celu uwierzytelniania za pośrednictwem tożsamości obciążenia. Poniższy fragment kodu zawiera przykład.
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
Zapoznaj się z poniższym samouczkiem, aby dowiedzieć się , jak nawiązać połączenie z usługą Azure Storage przy użyciu tożsamości obciążenia.
Rozwiązywanie problemów i wyświetlanie dzienników
Jeśli wystąpi błąd i nie można go rozwiązać, spróbuj ponownie podczas tworzenia połączenia z usługą, poniższe metody pomogą zebrać więcej informacji na temat rozwiązywania problemów.
Sprawdzanie rozszerzenia Kubernetes łącznika usługi
Rozszerzenie Kubernetes łącznika usługi jest oparte na rozszerzeniach klastra Kubernetes z obsługą usługi Azure Arc. Użyj następujących poleceń, aby sprawdzić błędy, które wystąpiły podczas procesu instalacji lub aktualizacji rozszerzenia.
Zainstaluj rozszerzenie interfejsu wiersza polecenia platformy
k8s-extension
Azure.az extension add --name k8s-extension
Pobierz stan rozszerzenia łącznika usługi.
statuses
Sprawdź właściwość w danych wyjściowych polecenia, aby zidentyfikować błędy.az k8s-extension show \ --resource-group MyClusterResourceGroup \ --cluster-name MyCluster \ --cluster-type managedClusters \ --name sc-extension
Sprawdzanie dzienników klastra Kubernetes
Jeśli podczas instalacji rozszerzenia wystąpi błąd, a komunikat o błędzie we statuses
właściwości nie dostarcza wystarczających informacji, możesz dokładniej zbadać, sprawdzając dzienniki platformy Kubernetes, wykonując poniższe kroki.
Połącz się z klastrem usługi AKS.
az aks get-credentials \ --resource-group MyClusterResourceGroup \ --name MyCluster
Rozszerzenie łącznika usługi jest instalowane w
sc-system
przestrzeni nazw przy użyciu pakietu Helm. Sprawdź przestrzeń nazw i wydanie programu Helm przy użyciu następujących poleceń.Sprawdź, czy przestrzeń nazw istnieje.
kubectl get ns
Sprawdź stan wydania narzędzia Helm.
helm list -n sc-system
Podczas instalacji lub aktualizacji rozszerzenia zadanie kubernetes o nazwie
sc-job
tworzy zasoby Kubernetes dla połączenia z usługą. Niepowodzenie wykonywania zadania zwykle powoduje niepowodzenie rozszerzenia. Sprawdź stan zadania, uruchamiając następujące polecenia. Jeślisc-job
nie istnieje wsc-system
przestrzeni nazw, powinno zostać wykonane pomyślnie. To zadanie zostało zaprojektowane tak, aby zostało automatycznie usunięte po pomyślnym wykonaniu.Sprawdź, czy zadanie istnieje.
kubectl get job -n sc-system
Pobierz stan zadania.
kubectl describe job/sc-job -n sc-system
Wyświetl dzienniki zadań.
kubectl logs job/sc-job -n sc-system
Typowe błędy i środki zaradcze
Błąd tworzenia rozszerzenia
Komunikat o błędzie:
Unable to get a response from the agent in time
.
Środki zaradcze:
Zapoznaj się z błędami tworzenia rozszerzeń
Błędy programu Helm
Komunikaty o błędach:
Timed out waiting for resource readiness
Unable to download the Helm chart from the repo URL
Helm chart rendering failed with given values
Resource already exists in your cluster
Operation is already in progress for Helm
Środki zaradcze:
Zapoznaj się z tematem Błędy programu Helm
Konflikt
Komunikat o błędzie:
Operation returned an invalid status code: Conflict
.
Przyczyna:
Ten błąd występuje zwykle podczas próby utworzenia połączenia z usługą, gdy klaster usługi Azure Kubernetes Service (AKS) jest w stanie aktualizacji. Aktualizacja połączenia z usługą powoduje konflikt z bieżącą aktualizacją. Ten błąd występuje również wtedy, gdy subskrypcja nie jest zarejestrowana u dostawcy Microsoft.KubernetesConfiguration
zasobów.
Środki zaradcze:
Upewnij się, że klaster jest w stanie "Powodzenie" i ponów próbę utworzenia.
Uruchom następujące polecenie, aby upewnić się, że subskrypcja jest zarejestrowana u dostawcy
Microsoft.KubernetesConfiguration
zasobów.az provider register -n Microsoft.KubernetesConfiguration
Nieautoryzowany dostęp do zasobów
Komunikat o błędzie:
You do not have permission to perform ... If access was recently granted, please refresh your credentials
.
Przyczyna:
Łącznik usługi wymaga uprawnień do obsługi zasobów platformy Azure, z którymi chcesz się połączyć, w celu wykonywania operacji połączenia w Twoim imieniu. Ten błąd wskazuje brak niezbędnych uprawnień w niektórych zasobach platformy Azure.
Środki zaradcze:
Sprawdź uprawnienia do zasobów platformy Azure określonych w komunikacie o błędzie. Uzyskaj wymagane uprawnienia i ponów próbę utworzenia.
Brak rejestracji subskrypcji
Komunikat o błędzie:
The subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration'
Przyczyna:
Łącznik usługi wymaga zarejestrowania subskrypcji w Microsoft.KubernetesConfiguration
usłudze , która jest dostawcą zasobów dla rozszerzeń klastra Kubernetes z obsługą usługi Azure Arc.
Środki zaradcze:
Zarejestruj dostawcę Microsoft.KubernetesConfiguration
zasobów, uruchamiając następujące polecenie. Aby uzyskać więcej informacji na temat błędów rejestracji dostawcy zasobów, zobacz Rozwiązywanie błędów dotyczących rejestracji dostawcy zasobów.
az provider register -n Microsoft.KubernetesConfiguration
Następny krok
Dowiedz się, jak zintegrować różne usługi docelowe i zapoznać się z ich ustawieniami konfiguracji i metodami uwierzytelniania.