Udostępnij za pośrednictwem


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

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 .

Zrzut ekranu witryny Azure Portal przedstawiający rozszerzenie usługi AKS.

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-systemklastra .

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.

Zrzut ekranu witryny Azure Portal przedstawiający widok łącznika usługi utworzonego przez platformę Kubernetes.

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.

Zrzut ekranu witryny Azure Portal z włączaniem sterownika CSI dla magazynu kluczy podczas tworzenia połączenia.

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.

Zrzut ekranu przedstawiający witrynę Azure Portal przy użyciu tożsamości obciążenia w celu utworzenia połączenia.

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.

  1. Zainstaluj rozszerzenie interfejsu wiersza polecenia platformy k8s-extension Azure.

    az extension add --name k8s-extension
    
  2. 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.

  1. Połącz się z klastrem usługi AKS.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. 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
      
  3. 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śli sc-job nie istnieje w sc-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:

  1. Upewnij się, że klaster jest w stanie "Powodzenie" i ponów próbę utworzenia.

  2. 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.KubernetesConfigurationusł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.