Vytvoření kontejnerů Windows Serveru
Platí pro: Azure Stack HCI verze 23H2
Tento článek popisuje, jak pomocí Azure CLI nasadit fond uzlů do existujícího clusteru AKS, na kterém běží kontejnery Windows Serveru. Popisuje také, jak do clusteru nasadit ukázkovou aplikaci ASP.NET v kontejneru Windows Serveru.
Požadavky
Vytvořte cluster AKS podle pokynů v tématu Vytvoření clusterů AKS.
Přidání fondu uzlů
Ve výchozím nastavení se cluster Kubernetes vytvoří s fondem uzlů, který může spouštět kontejnery Linuxu. Musíte přidat další fond uzlů, který může spouštět kontejnery Windows Serveru společně s fondem uzlů Linuxu.
Přidejte fond uzlů s hostiteli kontejnerů Windows pomocí az aksarc nodepool add
příkazu s parametrem --os-type Windows
. Pokud není zadaná skladová položka operačního systému, fond uzlů je nastavený na výchozí operační systém na základě verze Kubernetes clusteru. Windows Server 2022 je výchozí operační systém pro Kubernetes verze 1.25.0 a vyšší. Windows Server 2019 je výchozím operačním systémem pro starší verze.
- Pokud chcete použít Windows Server 2019, zadejte následující parametry:
os-type
nastaveno naWindows
hodnotu .os-sku
nastaveno naWindows2019
hodnotu .
- Chcete-li použít Systém Windows Server 2022, zadejte následující parametry:
os-type
nastaveno naWindows
hodnotu .os-sku
nastaveno naWindows2022
(volitelné).
Následující příkaz vytvoří nový fond uzlů s názvem $mynodepool
a přidá ho do $myAKSCluster
jednoho uzlu Windows Serveru 2022:
az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2022
Připojení ke clusteru AKS
Teď se můžete připojit ke svému clusteru Kubernetes spuštěním az connectedk8s proxy
příkazu z místního počítače. Před spuštěním tohoto příkazu se ujistěte, že se k Azure přihlašujete. Pokud máte více předplatných Azure, pomocí příkazu az account set vyberte příslušné ID předplatného.
Tento příkaz stáhne kubeconfig clusteru Kubernetes do místního počítače a otevře kanál připojení proxy serveru k místnímu clusteru Kubernetes. Kanál je otevřen tak dlouho, dokud se tento příkaz spustí. Nechte tento příkaz běžet tak dlouho, dokud chcete získat přístup ke clusteru. Pokud vyprší časový limit příkazu, zavřete okno rozhraní příkazového řádku, otevřete nový a spusťte příkaz znovu.
Abyste mohli úspěšně spustit následující příkaz, musíte mít oprávnění Přispěvatel ve skupině prostředků, která je hostitelem clusteru AKS:
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Očekávaný výstup:
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.
Nechte tuto relaci spuštěnou a připojte se ke clusteru Kubernetes z jiného terminálu nebo příkazového řádku. Spuštěním příkazu kubectl get ověřte, že se můžete připojit ke clusteru Kubernetes. Tento příkaz vrátí seznam uzlů clusteru:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
Následující příklad výstupu ukazuje uzel vytvořený v předchozích krocích. Ujistěte se, že je stav uzlu připravený:
NAME STATUS ROLES AGE VERSION
moc-lesdc78871d Ready control-plane 6d8h v1.26.3
moc-lupeeyd0f8c Ready <none> 6d8h v1.26.3
moc-ww2c8d5ranw Ready <none> 7m18s v1.26.3
Nasazení aplikace
Soubor manifestu Kubernetes definuje požadovaný stav clusteru, například které image kontejneru se mají spustit.
Manifest YAML můžete použít k vytvoření všech objektů potřebných ke spuštění ukázkové aplikace ASP.NET v kontejneru Windows Serveru. Tento manifest zahrnuje nasazení Kubernetes pro ukázkovou aplikaci ASP.NET a službu Kubernetes pro přístup k aplikaci z internetu.
Ukázková aplikace ASP.NET se poskytuje jako součást ukázek rozhraní .NET Framework a běží v kontejneru Windows Serveru. AKS vyžaduje, aby kontejnery Windows Serveru byly založené na imagích Windows Serveru 2019 nebo novějších. Soubor manifestu Kubernetes musí také definovat selektor uzlů, aby se zajistilo, že pody ukázkové aplikace ASP.NET jsou naplánované na uzlu, který může spouštět kontejnery Windows Serveru.
Vytvořte soubor s názvem sample.yaml a zkopírujte ho v následující definici YAML:
apiVersion: apps/v1 kind: Deployment metadata: name: sample labels: app: sample spec: replicas: 1 template: metadata: name: sample labels: app: sample spec: nodeSelector: "kubernetes.io/os": windows containers: - name: sample image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp resources: limits: cpu: 1 memory: 800M ports: - containerPort: 80 selector: matchLabels: app: sample --- apiVersion: v1 kind: Service metadata: name: sample spec: type: LoadBalancer ports: - protocol: TCP port: 80 selector: app: sample
Rozpis souborů manifestu YAML najdete v tématu Nasazení a manifesty YAML.
Nasaďte aplikaci pomocí příkazu kubectl apply a zadejte název manifestu YAML:
kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
Následující příklad výstupu ukazuje, že nasazení a služba byly úspěšně vytvořeny:
deployment.apps/sample created
service/sample created
Testování aplikace
Když se aplikace spustí, služba Kubernetes zveřejní front-end aplikace na internetu. Dokončení tohoto procesu může trvat několik minut. Občas může zřízení služby trvat déle než několik minut. Povolte zřizování až 10 minut.
Sledujte průběh pomocí příkazu kubectl get service s argumentem
--watch
.kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
Na začátku výstup zobrazí externí IP adresu ukázkové služby jako čekající:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Když se externí IP adresa změní z čekající na IP adresu, pomocí kombinace kláves CTRL-C zastavte proces sledování kubectl. Následující příklad výstupu ukazuje platnou veřejnou IP adresu přiřazenou službě:
sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Prohlédněte si ukázkovou aplikaci v akci otevřením webového prohlížeče na externí IP adresu a port ukázkové služby.
Pokud při pokusu o načtení stránky dojde k vypršení časového limitu připojení, měli byste pomocí příkazu ověřit, že je ukázková aplikace připravená
kubectl get pods --watch
. Někdy se kontejner Windows nespusťe v době, kdy je vaše externí IP adresa dostupná.
Odstranění fondu uzlů
Pomocí příkazu odstraňte fond az akshybrid nodepool delete
uzlů:
az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait