Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: AKS w usłudze Azure Local
W tym artykule opisano sposób tworzenia klastrów Kubernetes w środowisku lokalnym platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure. Przepływ pracy wygląda następująco:
- Utwórz klaster Kubernetes na platformie Azure Lokalnie przy użyciu interfejsu wiersza polecenia platformy Azure. Klaster jest domyślnie połączony z usługą Azure Arc.
- Podczas tworzenia klastra należy podać grupę Entra firmy Microsoft zawierającą listę użytkowników usługi Microsoft Entra z dostępem administratora klastra Kubernetes.
- Uzyskaj dostęp do klastra przy użyciu narzędzia kubectl i identyfikatora Entra firmy Microsoft.
- Uruchom przykładową wielokontenerową aplikację z interfejsem webowym i instancją Redis w klastrze.
Zanim rozpoczniesz
- Przed rozpoczęciem upewnij się, że masz następujące szczegóły od administratora infrastruktury lokalnej:
- Identyfikator subskrypcji platformy Azure — identyfikator subskrypcji platformy Azure, w którym platforma Azure Local jest używana do wdrażania i rejestracji.
-
Identyfikator lokalizacji niestandardowej — identyfikator w usłudze Azure Resource Manager dla lokalizacji niestandardowej. Lokalizacja niestandardowa jest konfigurowana podczas wdrażania klastra lokalnego platformy Azure. Administrator infrastruktury powinien podać identyfikator Resource Manager dla lokalizacji niestandardowej. Ten parametr jest wymagany w celu utworzenia klastrów Kubernetes. Identyfikator usługi Resource Manager można również uzyskać przy użyciu polecenia
az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv, jeśli administrator infrastruktury udostępnia niestandardową nazwę lokalizacji i nazwę grupy zasobów. -
Identyfikator sieci — identyfikator usługi Azure Resource Manager lokalnej sieci logicznej platformy Azure utworzonej zgodnie z tymi krokami. Administrator powinien podać identyfikator sieci logicznej. Ten parametr jest wymagany w celu utworzenia klastrów Kubernetes. Identyfikator usługi Azure Resource Manager można również uzyskać przy użyciu polecenia
az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv, jeśli znasz grupę zasobów, w której została utworzona sieć logiczna.
- Kroki opisane w tym artykule można uruchomić na lokalnym komputerze deweloperskim, aby utworzyć klaster Kubernetes w zdalnym wdrożeniu lokalnym platformy Azure. Upewnij się, że na swoim komputerze do programowania masz najnowszą wersję Az CLI. Możesz również zaktualizować wersję Az CLI przy użyciu polecenia
az upgrade. - Aby nawiązać połączenie z klastrem Kubernetes z dowolnego miejsca, utwórz grupę Microsoft Entra i dodaj do niej członków. Wszyscy członkowie grupy Microsoft Entra mają dostęp administratora klastra do klastra. Pamiętaj, aby dodać siebie jako członka do grupy Microsoft Entra. Jeśli nie dodasz się samodzielnie, nie możesz uzyskać dostępu do klastra Kubernetes przy użyciu narzędzia kubectl. Aby uzyskać więcej informacji na temat tworzenia grup Entra firmy Microsoft i dodawania użytkowników, zobacz Zarządzanie grupami i członkostwem w grupach firmy Microsoft.
- Pobierz i zainstaluj narzędzie kubectl na maszynie deweloperów. Narzędzie wiersza polecenia kubectl umożliwia uruchamianie poleceń w klastrach Kubernetes. Za pomocą narzędzia kubectl można wdrażać aplikacje, sprawdzać zasoby klastra i zarządzać nimi oraz wyświetlać dzienniki.
Instalowanie rozszerzenia interfejsu wiersza polecenia platformy Azure
Uruchom następujące polecenia, aby zainstalować niezbędne rozszerzenia interfejsu wiersza polecenia platformy Azure.
Ostrzeżenie
Nie instaluj następujących rozszerzeń bezpośrednio w węźle lokalnym platformy Azure. Zaleca się zainstalowanie ich na komputerze klienckim, którego używasz do łączenia się z lokalną instancją Azure.
az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade
Tworzenie klastra Kubernetes
Użyj polecenia az aksarc create , aby utworzyć klaster Kubernetes w usłudze AKS Arc. Przed uruchomieniem tego polecenia upewnij się, że logujesz się na platformie Azure. Jeśli masz wiele subskrypcji platformy Azure, wybierz odpowiedni identyfikator subskrypcji przy użyciu polecenia az account set . Polecenie az aksarc create pozwala na użycie flagi --validate, która weryfikuje parametry wejściowe, których zamierzasz używać. Po zweryfikowaniu parametrów wejściowych można uruchomić az aksarc create polecenie bez --validate flagi , aby utworzyć klaster Kubernetes.
az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys
Po kilku minutach polecenie zostanie wykonane i zwróci informacje o klastrze w formacie JSON.
Kwestie wymagające rozważenia
Podczas tworzenia klastra należy pamiętać o następujących kwestiach:
- Klucze SSH są niezbędne do rozwiązywania problemów i zbierania dzienników. Pamiętaj, aby zapisać plik klucza prywatnego do użycia w przyszłości. Aby uzyskać dostęp do węzłów, zobacz Connect to Windows or Linux worker nodes with SSH (Nawiązywanie połączenia z węzłami roboczymi systemu Windows lub Linux przy użyciu protokołu SSH).
- Podczas tworzenia klastra można użyć istniejącego klucza SSH lub skonfigurować klucze SSH dla klastra usługi AKS . Jeśli na komputerze lokalnym nie ma wstępnie istniejącego klucza SSH,
--generate-ssh-keysparametr jest wymagany. Dostęp za pomocą protokołu SSH można również ograniczyć, postępując zgodnie z dokumentacją. Aby uzyskać szczegółowe instrukcje, zobacz Tworzenie i przechowywanie kluczy SSH za pomocą interfejsu wiersza polecenia platformy Azure lub w witrynie Azure Portal. - Jeśli podczas tworzenia klastra nie uwzględnisz
--generate-ssh-keysi nie istnieje klucz SSH, wyświetli się komunikat o błędzie. Jeśli masz już klucz SSH na komputerze lokalnym, klaster usługi AKS ponownie go używa. W takim przypadku nie ma znaczenia, czy określono--generate-ssh-keys, czy nie. - Domyślnie klucz SSH jest przechowywany w lokalizacji ~/.ssh/id_rsa.pub. Podczas tworzenia klastra można określić alternatywną lokalizację przy użyciu parametru
--ssh-key-value.
Ważne
Aby użyć Azure RBAC lub tożsamości roboczej dla klastra AKS, należy przekazać wymagane parametry podczas tworzenia klastra przy użyciu Azure CLI. Obecnie aktualizowanie istniejącego klastra usługi AKS w celu włączenia tożsamości dla obciążenia i/lub kontroli dostępu opartej na rolach (RBAC) na platformie Azure nie jest obsługiwane. Aby uzyskać więcej informacji, zobacz Używanie usługi Azure RBAC w celu autoryzacji Kubernetes lub Wdrażanie i konfigurowanie tożsamości obciążenia dla klastra.
Nawiązywanie połączenia z klastrem Kubernetes
Teraz możesz nawiązać połączenie z klastrem Kubernetes, uruchamiając az connectedk8s proxy polecenie na komputerze deweloperskim. Przed uruchomieniem tego polecenia upewnij się, że logujesz się na platformie Azure. Jeśli masz wiele subskrypcji platformy Azure, wybierz odpowiedni identyfikator subskrypcji przy użyciu polecenia az account set .
To polecenie pobiera plik kubeconfig klastra Kubernetes na maszynę dewelopera i otwiera kanał połączenia serwera proxy z lokalnym klastrem Kubernetes. Kanał jest otwarty dopóki polecenie działa. Pozwól, aby to polecenie było uruchamiane tak długo, jak chcesz uzyskać dostęp do klastra. Jeśli upłynął limit czasu, zamknij okno interfejsu wiersza polecenia, otwórz nowe okno, a następnie ponownie wpisz polecenie.
Aby pomyślnie uruchomić następujące polecenie, musisz mieć uprawnienia Współautor w grupie zasobów, która hostuje klaster Kubernetes:
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Oczekiwane dane wyjściowe:
Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.
Utrzymuj uruchomioną tę sesję i połącz się z klastrem Kubernetes z innego terminala lub wiersza poleceń. Sprawdź, czy możesz nawiązać połączenie z klastrem Kubernetes, uruchamiając polecenie kubectl get. To polecenie zwraca listę węzłów klastra:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
Poniższy przykład danych wyjściowych przedstawia węzeł utworzony w poprzednich krokach. Upewnij się, że stan węzła to Gotowe:
NAME STATUS ROLES AGE VERSION
moc-l0ttdmaioew Ready control-plane,master 34m v1.24.11
moc-ls38tngowsl Ready <none> 32m v1.24.11
Wdrażanie aplikacji i modułu równoważenia obciążenia
Plik manifestu Kubernetes definiuje żądany stan klastra, na przykład obrazy kontenerów do uruchomienia.
Możesz użyć manifestu, aby utworzyć wszystkie obiekty potrzebne do uruchomienia aplikacji Azure Vote. Ten manifest obejmuje dwa wdrożenia platformy Kubernetes:
- Przykładowe aplikacje Azure Vote Python.
- Instancja Redis
Tworzone są również dwie usługi Kubernetes:
- Wewnętrzna usługa dla instancji Redis.
- Usługa zewnętrzna w celu uzyskania dostępu do aplikacji Azure Vote z Internetu.
Utwórz plik o nazwie azure-vote.yaml i skopiuj go w następującym manifeście:
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-back
template:
metadata:
labels:
app: azure-vote-back
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: <path to image>/oss/bitnami/redis:6.0.8
env:
- name: ALLOW_EMPTY_PASSWORD
value: "yes"
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-front
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-front
template:
metadata:
labels:
app: azure-vote-front
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: azure-vote-front
image: <path to image>/azure-vote-front:v1
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 80
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-front
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: azure-vote-front
Wdróż aplikację przy użyciu polecenia kubectl apply i określ nazwę pliku YAML:
kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config
W poniższych przykładowych danych wyjściowych przedstawiono pomyślnie utworzone wdrożenia i usługi:
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
Wdróż równoważnik obciążenia MetalLB, aby mógł przypisać zewnętrzny adres IP dla frontend aplikacji. Możesz wykonać te instrukcje , aby wdrożyć rozszerzenie MetalLB w witrynie Azure Portal lub przy użyciu interfejsu wiersza polecenia.
Testowanie aplikacji
Po uruchomieniu aplikacji usługa Kubernetes uwidacznia fronton aplikacji w Internecie. Ten proces może potrwać kilka minut.
Monitoruj postęp przy użyciu polecenia kubectl get service za pomocą argumentu --watch .
kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config
Dane wyjściowe EXTERNAL-IP dla usługi azure-vote-front początkowo są wyświetlane jako oczekujące.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Gdy adres EXTERNAL-IP zmieni się z oczekujące na rzeczywisty publiczny adres IP, użyj CTRL-C, aby zatrzymać proces monitorowania kubectl. Następujące przykładowe dane wyjściowe przedstawiają prawidłowy publiczny adres IP przypisany do usługi:
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Aby wyświetlić działającą aplikację Azure Vote, otwórz zewnętrzny adres IP usługi w przeglądarce internetowej.
Usuwanie klastra
Uruchom polecenie , az aksarc delete aby wyczyścić utworzony klaster:
az aksarc delete --name $aksclustername --resource-group $resource_group