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 na Windowshodnotu .
    • os-sku nastaveno na Windows2019hodnotu .
  • Chcete-li použít Systém Windows Server 2022, zadejte následující parametry:
    • os-type nastaveno na Windowshodnotu .
    • os-sku nastaveno na Windows2022 (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.

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

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

  1. 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
    
  2. 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.

    Snímek obrazovky znázorňující ukázkovou aplikaci ASP.NET

    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

Další kroky

Přehled AKS s podporou služby Arc