Udostępnij za pośrednictwem


Plik konfiguracji nie jest dostępny podczas nawiązywania połączenia

W tym artykule opisano sposób rozwiązywania problemów występujących, gdy nie można nawiązać połączenia z klastrem usługi Azure Kubernetes Service (AKS) z powodu brakującego lub nieprawidłowego pliku konfiguracji .

Wymagania wstępne

Symptomy

Podczas próby połączenia klastra zostanie wyświetlony komunikat o błędzie podobny do następującego tekstu:

Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it. 

error: You must be logged in to the server (the server has asked for the client to provide credentials)

Przyczyny

Narzędzie kubectl i inne narzędzia połączenia Kubernetes używają lokalnego pliku konfiguracji o nazwie config. Plik konfiguracji zawiera poświadczenia uwierzytelniania i szczegóły umożliwiające nawiązanie połączenia z klastrem. Domyślnie:

  • Polecenie az aks get-credentials w interfejsie wiersza polecenia platformy Azure, które służy do uzyskiwania poświadczeń dostępu dla zarządzanego klastra Kubernetes, modyfikuje plik ~/.kube/config .

  • Polecenie kubectl używa pliku kubeconfig (konfiguracja kubectl) w katalogu $HOME/.kube .

Tak więc to, co się dzieje podczas próby sesji kubernetes, zależy od użytkownika, który uruchamia polecenie kubectl. Jeśli zalogowano się jako użytkownik A i wykonano oba polecenia, oto co się stanie:

  • Polecenie az aks get-credentials próbuje dodać nowe parametry kubeconfig w pliku C:\Users\A\.kube\config .

  • Polecenie kubectl próbuje przeszukać plik C:\Users\A\.kube\config .

Jednak w przypadku narzędzia kubectl, jeśli wskaźnik do pliku kubeconfig uległ zmianie, plik używany do uzyskiwania dostępu do klastra ma znajdować się w innej lokalizacji.

Uwaga 16.

Plik kubeconfig jest odwołaniem do pliku zawierającego parametry konfiguracji na potrzeby uzyskiwania dostępu do klastrów Kubernetes. Niekoniecznie odwołuje się do pliku o nazwie kubeconfig.

Błąd występuje, jeśli wystąpi jeden z następujących scenariuszy:

Przyczyna 1: Plik konfiguracji nie istnieje

Plik konfiguracji nie istnieje na maszynie.

Rozwiązanie: Zapisywanie poświadczeń

Załaduj plik konfiguracji , uruchamiając az aks get-credentials polecenie w interfejsie wiersza polecenia platformy Azure, co powoduje zapisanie poświadczeń. Jeśli nie chcesz używać lokalizacji domyślnej, określ --file <config-file-location> parametr z lokalizacją konfiguracji (na przykład ~/Dir1/Dir2/config lub C:\Dir1\Dir2\config).

az aks get-credentials --resource-group <cluster-resource-group> \
    --name <cluster-name> \
    [--file <config-file-location>]

Przyczyna 2. Plik konfiguracji znajduje się w niewłaściwym katalogu

Plik konfiguracji znajduje się na maszynie, ale znajduje się w innym katalogu, od którego az aks get-credentials polecenie i/lub narzędzie kubectl oczekuje, że będzie.

Rozwiązanie: Przenieś plik konfiguracji , zapisz poświadczenia ponownie lub zmień zmienną środowiskową KUBECONFIG

Wykonaj co najmniej jedną z następujących akcji:

  • Przenieś plik konfiguracji do katalogu, w którym ma znajdować się.

  • Uruchom polecenie az aks get-credentials. Określ odpowiednią lokalizację, jeśli nie jest to lokalizacja domyślna.

    az aks get-credentials --resource-group <cluster-resource-group> \
        --name <cluster-name> \
        [--file <config-file-location>]
    
  • Użyj jednej z następujących opcji, aby zmienić miejsce, w którym narzędzie kubectl szuka parametrów konfiguracji:

    • Zmodyfikuj zmienną KUBECONFIG środowiskową, aby wskazywała bieżącą lokalizację pliku konfiguracji . Aby uzyskać więcej informacji, zobacz Ustawianie zmiennej środowiskowej KUBECONFIG.

    • Uruchom polecenie kubectl config z parametrem --kubeconfig=<config-file-location> .

Przyczyna 3: Plik konfiguracji wygasł lub jest uszkodzony

Plik konfiguracji znajduje się na maszynie. Znajduje się również w oczekiwanym katalogu dla az aks get-credentials polecenia i narzędzia kubectl. Ale plik wygasł lub uszkodzony.

Rozwiązanie: ponowne opublikowanie poświadczeń

Ponownie opublikuj poświadczenia, ponieważ istniejące poświadczenia mogą być wygasłe lub uszkodzone. W takim przypadku możesz uruchomić az aks get-credentials polecenie za pomocą parametru --overwrite-existing .

az aks get-credentials --resource-group <cluster-resource-group> \
    --name <cluster-name> \
    --overwrite-existing \
    [--file <config-file-location>]

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.