Jak używać łą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ć utworzonych zasobów kubernetes Service Connector.
- 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.
Jakie operacje łącznik usługi tworzy w klastrze
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 ułatwia tworzenie zasobów kubernetes w klastrze użytkownika za każdym razem, 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 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 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 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 można znaleźć dla każdego połączenia z usługą 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 dodatku azureKeyvaultSecretsProvider
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.
Jak używać utworzonych zasobów kubernetes łącznika usługi
Różne zasoby kubernetes są tworzone, gdy typ usługi docelowej i typ uwierzytelniania są różne. W poniższych sekcjach pokazano, jak używać łącznika usługi utworzonego zasoby kubernetes w definicji obciążeń klastra i kodach aplikacji.
Wpis tajny platformy Kubernetes
Wpis tajny kubernetes jest tworzony, gdy typ uwierzytelniania to Connection String
lub Service Principal
. Definicja obciążenia klastra może odwoływać się bezpośrednio do wpisu tajnego. Poniższy fragment kodu jest przykładem.
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
Następnie kody aplikacji mogą używać parametry połączenia w wpisie tajnym ze zmiennej środowiskowej. Możesz sprawdzić przykładowy kod , aby dowiedzieć się więcej o nazwach zmiennych środowiskowych i sposobie ich używania w kodach aplikacji do uwierzytelniania w różnych usługach docelowych.
Konto usługi Kubernetes
Zarówno konto usługi kubernetes, jak i wpis tajny są tworzone, gdy typ uwierzytelniania to 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 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
Możesz sprawdzić samouczek, aby dowiedzieć się , jak nawiązać połączenie z usługą Azure Storage przy użyciu tożsamości obciążenia.
Jak rozwiązywać problemy i wyświetlać dzienniki
Jeśli wystąpi błąd i nie można go wyeliminować, spróbuj ponownie podczas tworzenia połączenia z usługą, poniższe metody mogą pomóc 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 poniższych poleceń, aby zbadać, czy podczas instalacji lub aktualizowania rozszerzenia występują jakiekolwiek błędy.
- 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 sprawdzić, czy występują jakieś 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ącej ilości informacji o tym, co się stało, możesz dokładniej sprawdzić dzienniki kubernetes, wykonując następujące 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 przestrzeni nazw
sc-system
za pomocą wykresu helm, sprawdź przestrzeń nazw i wydanie programu Helm, wykonując następujące polecenia.- Sprawdź, czy przestrzeń nazw istnieje.
kubectl get ns
- Sprawdź stan wydania narzędzia Helm.
helm list -n sc-system
Podczas instalacji lub aktualizowania rozszerzenia zadanie kubernetes o nazwie
sc-job
tworzy zasoby kubernetes dla połączenia z usługą. Niepowodzenie wykonywania zadania zwykle powoduje błąd 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
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 AKS (Azure Kubernetes Service) jest w stanie aktualizacji. Aktualizacja połączenia z usługą powoduje konflikt z bieżącą aktualizacją. Może się to zdarzyć również wtedy, gdy subskrypcja nie jest ponownie skonfigurowana dla dostawcy Microsoft.KubernetesConfiguration
zasobów.
Środki zaradcze:
Uruchom następujące polecenie, aby upewnić się, że subskrypcja jest zarejestrowana dla
Microsoft.KubernetesConfiguration
dostawcy zasobów.az provider register -n Microsoft.KubernetesConfiguration
Upewnij się, że klaster jest w stanie "Powodzenie" i ponów próbę utworzenia.
Timeout
Komunikat o błędzie:
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
Przyczyna: Ten błąd często występuje, gdy zadanie kubernetes użyte do utworzenia lub zaktualizowania rozszerzenia klastra łącznika usługi nie może zostać zaplanowane z powodu ograniczeń zasobów lub innych problemów.
Środki zaradcze: zapoznaj się z artykułem Sprawdzanie dzienników klastra Kubernetes, aby zidentyfikować i rozwiązać szczegółowe przyczyny. Typowym problemem jest to, że żadne węzły nie są dostępne z powodu wywłaszczania. W takim przypadku rozważ dodanie większej liczby węzłów lub włączenie automatycznego skalowania dla węzłów.
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ług wymaga uprawnień do obsługi zasobów platformy Azure, z którymi chcesz nawiązać połączenie, 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łędzieThe subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration'
:
Przyczyna: Łącznik usługi wymaga zarejestrowania subskrypcji dla Microsoft.KubernetesConfiguration
usługi , 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, zapoznaj się z tym samouczkiem.
az provider register -n Microsoft.KubernetesConfiguration
Inne problemy
Jeśli powyższe środki zaradcze nie rozwiążą problemu, spróbuj zresetować rozszerzenie klastra łącznika usługi, usuwając je, a następnie ponów próbę utworzenia. Ta metoda ma rozwiązać większość problemów związanych z rozszerzeniem klastra łącznika usługi.
Użyj następujących poleceń interfejsu wiersza polecenia, aby zresetować rozszerzenie:
az extension add --name k8s-extension
az k8s-extension delete \
--resource-group <MyClusterResourceGroup> \
--cluster-name <MyCluster> \
--cluster-type managedClusters \
--name sc-extension
Następne kroki
Dowiedz się, jak zintegrować różne usługi docelowe i zapoznać się z ich ustawieniami konfiguracji i metodami uwierzytelniania.