Wdrażanie klastra Kubernetes za pomocą aparatu AKS w usłudze Azure Stack Hub
Klaster Kubernetes można wdrożyć w usłudze Azure Stack Hub z poziomu maszyny wirtualnej klienckiej z uruchomionym aparatem usługi AKS. W tym artykule przyjrzymy się pisaniu specyfikacji klastra, wdrażaniu klastra przy użyciu pliku apimodel.json i sprawdzaniu klastra przez wdrożenie programu MySQL za pomocą programu Helm.
Definiowanie specyfikacji klastra
Specyfikację klastra można określić w pliku dokumentu przy użyciu formatu JSON nazywanego modelem interfejsu API. Aparat usługi AKS używa specyfikacji klastra w modelu interfejsu API do utworzenia klastra.
Przykłady modelu interfejsu API dla systemu operacyjnego i numeru wersji aparatu AKS można znaleźć w artykule Aparat usługi AKS i odpowiednie mapowanie obrazów.
- Znajdź numer wersji aparatu usługi AKS, na przykład ,
v.0.63.0
w tabeli. - W tabeli przykładów dla modelu interfejsu API wybierz i otwórz link dla systemu operacyjnego.
- Wybierz pozycję Nieprzetworzone. Adres URL można użyć w poniższych instrukcjach.
Adres URL modelu interfejsu API może wyglądać następująco:
https://raw.githubusercontent.com/Azure/aks-engine-azurestack/master/examples/azure-stack/kubernetes-azurestack.json
Dla każdego z poniższych przykładów zastąp <URL for the API Model>
ciąg adresem URL.
Aktualizowanie modelu interfejsu API
W tej sekcji omówiono tworzenie modelu interfejsu API dla klastra.
Zacznij od użycia pliku modelu interfejsu API usługi Azure Stack Hub dla systemu Linux lub Windows. Na maszynie zainstalowano aparat usługi AKS, uruchom polecenie:
curl -o kubernetes-azurestack.json <URL for the API Model>
Uwaga
Jeśli plik zostanie odłączony, możesz pobrać go i ręcznie skopiować go na odłączony komputer, na którym planujesz go edytować. Plik można skopiować na maszynę z systemem Linux przy użyciu narzędzi, takich jak PuTTY lub WinSCP.
Aby otworzyć model interfejsu API w edytorze, możesz użyć systemu nano:
nano ./kubernetes-azurestack.json
Uwaga
Jeśli nie masz zainstalowanego systemu Nano, możesz zainstalować system Nano w systemie Ubuntu:
sudo apt-get install nano
.W pliku kubernetes-azurestack.json znajdź element orchestratorRelease i orchestratorVersion. Wybierz jedną z obsługiwanych wersji platformy Kubernetes; Tabelę wersji można znaleźć w informacjach o wersji.
orchestratorRelease
Określ wartość x.xx i orchestratorVersion jako x.xx.x. Aby uzyskać listę bieżących wersji, zobacz Obsługiwane wersje aparatu usługi AKSZnajdź
customCloudProfile
i podaj adres URL portalu dzierżawy. Na przykładhttps://portal.local.azurestack.external
.Dodaj
"identitySystem":"adfs"
, jeśli używasz usług AD FS. Przykład:"customCloudProfile": { "portalURL": "https://portal.local.azurestack.external", "identitySystem": "adfs" },
Uwaga
Jeśli używasz identyfikatora Entra firmy Microsoft dla systemu tożsamości, nie musisz dodawać pola identitySystem .
W
masterProfile
pliku ustaw następujące pola:Pole opis dnsPrefix Wprowadź unikatowy ciąg służący do identyfikowania nazwy hosta maszyn wirtualnych. Na przykład nazwa oparta na nazwie grupy zasobów. count Wprowadź liczbę wzorców, które mają być używane do wdrożenia. Minimalna wartość wdrożenia wysokiej dostępności to 3, ale 1 jest dozwolone w przypadku wdrożeń innych niż wysoka dostępność. vmSize Wprowadź rozmiar obsługiwany przez usługę Azure Stack Hub, na przykład Standard_D2_v2
.dystrybucja Wprowadź aks-ubuntu-18.04
lubaks-ubuntu-20.04
.W
agentPoolProfiles
aktualizacji:Pole opis count Wprowadź liczbę agentów, których chcesz użyć do wdrożenia. Maksymalna liczba węzłów do użycia w ramach subskrypcji wynosi 50. Jeśli wdrażasz więcej niż jeden klaster na subskrypcję, upewnij się, że łączna liczba agentów nie przekracza 50. Upewnij się, że używasz elementów konfiguracji określonych w przykładowym pliku JSON modelu interfejsu API. vmSize Wprowadź rozmiar obsługiwany przez usługę Azure Stack Hub, na przykład Standard_D2_v2
.dystrybucja Wprowadź wartość aks-ubuntu-18.04
,aks-ubuntu-20.04
lubWindows
.
SłużyWindows
do agentów, którzy będą uruchamiani w systemie Windows. Zobacz na przykład kubernetes-windows.jsonW
linuxProfile
aktualizacji:Pole opis adminUsername Wprowadź nazwę użytkownika administratora maszyny wirtualnej. SSH Wprowadź klucz publiczny, który będzie używany do uwierzytelniania SSH z maszynami wirtualnymi. Użyj ssh-rsa
, a następnie . Aby uzyskać instrukcje dotyczące tworzenia klucza publicznego, zobacz Tworzenie klucza SSH dla systemu Linux.Jeśli wdrażasz w niestandardowej sieci wirtualnej, możesz znaleźć instrukcje dotyczące znajdowania i dodawania wymaganych kluczy i wartości do odpowiednich tablic w modelu interfejsu API w temacie Wdrażanie klastra Kubernetes w niestandardowej sieci wirtualnej.
Uwaga
Aparat usługi AKS dla usługi Azure Stack Hub nie umożliwia udostępniania własnych certyfikatów na potrzeby tworzenia klastra.
Jeśli używasz systemu Windows, zaktualizuj
windowsProfile
wartościadminUsername:
iadminPassword
:"windowsProfile": { "adminUsername": "azureuser", "adminPassword": "", "sshEnabled": true }
Więcej informacji o modelu interfejsu API
- Aby uzyskać pełną dokumentację wszystkich dostępnych opcji w modelu interfejsu API, zapoznaj się z definicjami klastra.
- Aby uzyskać najważniejsze informacje na temat konkretnych opcji usługi Azure Stack Hub, zapoznaj się z specyfiką definicji klastra usługi Azure Stack Hub.
Dodawanie certyfikatu podczas korzystania z zestawu ASDK
Jeśli wdrażasz klaster w zestawie Azure Stack Development Kit (ASDK) i korzystasz z systemu Linux, musisz dodać certyfikat główny do zaufanego magazynu certyfikatów maszyny wirtualnej klienckiej z uruchomionym aparatem usługi AKS.
- Znajdź certyfikat główny na maszynie wirtualnej w tym katalogu:
/var/lib/waagent/Certificates.pem.
- Skopiuj plik certyfikatu:
sudo cp /var/lib/waagent/Certificates.pem /usr/local/share/ca-certificates/azurestacka.crt sudo update-ca-certificates
Wdrażanie klastra Kubernetes
Po zebraniu wszystkich wymaganych wartości w modelu interfejsu API możesz utworzyć klaster. W tym momencie należy:
Poproś operatora usługi Azure Stack Hub o:
- Sprawdź kondycję systemu, zasugeruj uruchomienie
Test-AzureStack
i narzędzie do monitorowania sprzętu dostawcy OEM. - Sprawdź pojemność systemu, w tym zasoby, takie jak pamięć, magazyn i publiczne adresy IP.
- Podaj szczegóły limitu przydziału skojarzonego z subskrypcją, aby sprawdzić, czy liczba maszyn wirtualnych, z których planujesz korzystać, jest wystarczająca ilość miejsca.
Przejdź do wdrożenia klastra:
Przejrzyj dostępne parametry dla aparatu usługi AKS w flagach interfejsu wiersza polecenia usługi Azure Stack Hub.
Parametr Przykład opis azure-env AzureStackCloud Aby wskazać aparat usługi AKS, że platforma docelowa to Azure Stack Hub, użyj polecenia AzureStackCloud
.identity-system adfs Opcjonalny. Określ rozwiązanie do zarządzania tożsamościami, jeśli używasz usług Federacyjnych Active Directory (AD FS). lokalizacja local Nazwa regionu usługi Azure Stack Hub. W przypadku zestawu ASDK region jest ustawiony na local
wartość .resource-group kube-rg Wprowadź nazwę nowej grupy zasobów lub wybierz istniejącą grupę zasobów. Nazwa zasobu musi być alfanumeryczna i mała. api-model ./kubernetes-azurestack.json Ścieżka do pliku konfiguracji klastra lub modelu interfejsu API. output-directory kube-rg Wprowadź nazwę katalogu, który będzie zawierać plik wyjściowy apimodel.json i inne wygenerowane pliki. client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Wprowadź identyfikator GUID jednostki usługi. Identyfikator klienta zidentyfikowany jako identyfikator aplikacji, gdy administrator usługi Azure Stack Hub utworzył jednostkę usługi. client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Wprowadź wpis tajny jednostki usługi. Klucz tajny klienta należy skonfigurować podczas tworzenia usługi. subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Wprowadź identyfikator subskrypcji. Musisz podać subskrypcję dla dzierżawy. Wdrażanie w subskrypcji administracyjnej nie jest obsługiwane. Aby uzyskać więcej informacji, zobacz Subskrybowanie oferty Oto przykład:
Uwaga
W przypadku usługi AKSe w wersji 0.75.3 lub nowszej polecenie wdrożenia klastra aparatu usługi AKS to
aks-engine-azurestack deploy
.aks-engine deploy \ --azure-env AzureStackCloud \ --location <for asdk is local> \ --resource-group kube-rg \ --api-model ./kubernetes-azurestack.json \ --output-directory kube-rg \ --client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --identity-system adfs # required if using AD FS
Jeśli z jakiegoś powodu wykonanie zakończy się niepowodzeniem po utworzeniu katalogu wyjściowego, możesz rozwiązać ten problem i ponownie uruchomić polecenie. Jeśli ponownie uruchamiasz wdrożenie i wcześniej używasz tego samego katalogu wyjściowego, aparat usługi AKS zwróci błąd informujący, że katalog już istnieje. Istniejący katalog można zastąpić za pomocą flagi :
--force-overwrite
.Zapisz konfigurację klastra aparatu AKS w bezpiecznej, zaszyfrowanej lokalizacji.
Znajdź apimodel.json pliku. Zapisz go w bezpiecznej lokalizacji. Ten plik będzie używany jako dane wejściowe we wszystkich innych operacjach aparatu AKS.
Wygenerowany plik apimodel.json zawiera jednostkę usługi, klucz tajny i klucz publiczny SSH używany w modelu wejściowego interfejsu API. Plik zawiera również wszystkie inne metadane wymagane przez aparat usługi AKS do wykonywania wszystkich innych operacji. Jeśli utracisz plik, aparat usługi AKS nie będzie mógł skonfigurować klastra.
Wpisy tajne są niezaszyfrowane. Zachowaj plik w zaszyfrowanym, bezpiecznym miejscu.
Weryfikowanie klastra
Sprawdź klaster, łącząc kubectl
się z usługą , uzyskując informacje, a następnie uzyskując stany węzłów.
Pobierz plik,
kubeconfig
aby nawiązać połączenie z płaszczyzną sterowania.- Jeśli został
kubectl
już zainstalowany, sprawdźkubeconfig
plik dla nowo utworzonego klastra w tej ścieżce/kubeconfig/kubeconfig.json
katalogu . Możesz dodać element/kubeconfig.json
do.kube
katalogu i zmienić jego nazwę na "config", aby uzyskać dostęp do nowego klastra.
Jeśli nie zainstalowanokubectl
programu , odwiedź stronę Instalowanie narzędzi , aby zainstalować narzędzie wiersza polecenia Kubernetes. W przeciwnym razie postępuj zgodnie z poniższymi instrukcjami, aby uzyskać dostęp do klastra z jednego z węzłów płaszczyzny sterowania.
- Jeśli został
Uzyskaj publiczny adres IP jednego z węzłów płaszczyzny sterowania przy użyciu portalu usługi Azure Stack Hub.
Z komputera z dostępem do wystąpienia usługi Azure Stack Hub połącz się za pośrednictwem protokołu SSH z nowym węzłem płaszczyzny sterowania przy użyciu klienta, takiego jak PuTTY lub MobaXterm.
W przypadku nazwy użytkownika SSH użyj wartości "azureuser" i pliku klucza prywatnego pary kluczy podanej na potrzeby wdrożenia klastra.
Sprawdź, czy punkty końcowe klastra są uruchomione:
kubectl cluster-info
Dane wyjściowe powinny wyglądać mniej więcej tak:
Kubernetes master is running at https://democluster01.location.domain.com CoreDNS is running at https://democluster01.location.domain.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy Metrics-server is running at https://democluster01.location.domain.com/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
Następnie przejrzyj stany węzłów:
kubectl get nodes
Dane wyjściowe będą podobne do następujących:
k8s-linuxpool-29969128-0 Ready agent 9d v1.15.5 k8s-linuxpool-29969128-1 Ready agent 9d v1.15.5 k8s-linuxpool-29969128-2 Ready agent 9d v1.15.5 k8s-master-29969128-0 Ready master 9d v1.15.5 k8s-master-29969128-1 Ready master 9d v1.15.5 k8s-master-29969128-2 Ready master 9d v1.15.5
Rozwiązywanie problemów z wdrażaniem klastra
Podczas napotkania błędów podczas wdrażania klastra Kubernetes przy użyciu aparatu AKS można sprawdzić:
- Czy używasz poprawnych poświadczeń jednostki usługi (SPN)?
- Czy nazwa SPN ma rolę "Współautorzy" w subskrypcji usługi Azure Stack Hub?
- Czy masz wystarczająco duży limit przydziału w planie usługi Azure Stack Hub?
- Czy wystąpienie usługi Azure Stack Hub ma zastosowaną poprawkę lub uaktualnienie?
Aby uzyskać więcej informacji, zobacz artykuł Dotyczący rozwiązywania problemów w repozytorium GitHub Azure/aks-engine-azurestack .
Obracanie wpisu tajnego jednostki usługi
Po wdrożeniu klastra Kubernetes za pomocą aparatu AKS jednostka usługi (SPN) jest używana do zarządzania interakcjami z usługą Azure Resource Manager w wystąpieniu usługi Azure Stack Hub. W pewnym momencie wpis tajny dla tej jednostki usługi może wygasnąć. Jeśli wpis tajny wygaśnie, możesz odświeżyć poświadczenia, wykonując następujące czynności:
- Aktualizowanie każdego węzła przy użyciu nowego wpisu tajnego jednostki usługi.
- Możesz też zaktualizować poświadczenia modelu interfejsu API i uruchomić uaktualnienie.
Ręczne aktualizowanie każdego węzła
- Uzyskaj nowy wpis tajny dla jednostki usługi od operatora chmury. Aby uzyskać instrukcje dotyczące usługi Azure Stack Hub, zobacz Używanie tożsamości aplikacji do uzyskiwania dostępu do zasobów usługi Azure Stack Hub.
- Użyj nowych poświadczeń dostarczonych przez operatora chmury, aby zaktualizować /etc/kubernetes/azure.json w każdym węźle. Po wprowadzeniu aktualizacji uruchom ponownie elementy i
kubele
kube-controller-manager
.
Aktualizowanie klastra za pomocą aktualizacji aparatu aks-engine
Alternatywnie możesz zastąpić poświadczenia w apimodel.json i uruchomić uaktualnienie przy użyciu zaktualizowanego pliku .json do tej samej lub nowszej wersji platformy Kubernetes. Aby uzyskać instrukcje dotyczące uaktualniania modelu, zobacz Uaktualnianie klastra Kubernetes w usłudze Azure Stack Hub