Skip to content

Commit cc00192

Browse files
authored
Merge pull request #231038 from allyford/retirements-updates
WS2019 and docker retirement, other fixes
2 parents 6a0f16f + a291ad9 commit cc00192

6 files changed

+37
-27
lines changed

articles/aks/cluster-configuration.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ As part of creating an AKS cluster, you may need to customize your cluster confi
1212

1313
## OS configuration
1414

15-
AKS supports Ubuntu 18.04 as the default node operating system (OS) in general availability (GA) for clusters.
15+
AKS supports Ubuntu 22.04 as the only node operating system (OS) for clusters with Kubernetes 1.25 and higher. Ubuntu 18.04 can also be specified at nodepool creation for Kubernetes versions 1.24 and below.
16+
17+
AKS supports Windows Server 2022 as the default operating system (OS) for Windows node pools in clusters with Kubernetes 1.25 and higher. Windows Server 2019 can also be specified at nodepool creation for Kubernetes versions 1.32 and below. Windows Server 2019 is being retired after Kubernetes version 1.32 reaches end of life (EOL) and won't be supported in future releases. For more information about this retirement, see the [AKS release notes][aks-release-notes].
1618

1719
## Container runtime configuration
1820

19-
A container runtime is software that executes containers and manages container images on a node. The runtime helps abstract away sys-calls or operating system (OS) specific functionality to run containers on Linux or Windows. Linux node pools use `containerd` for node pools using Kubernetes version 1.19 and greater. On Windows Server 2019 node pools, `containerd` is generally available and the only container runtime option on Kubernetes 1.21 and greater. Docker is no longer supported as of September 2022. For more information about this deprecation, see the [AKS release notes][aks-release-notes].
21+
A container runtime is software that executes containers and manages container images on a node. The runtime helps abstract away sys-calls or operating system (OS) specific functionality to run containers on Linux or Windows. For Linux node pools, `containerd` is used on Kubernetes version 1.19 and higher. For Windows Server 2019 and 2022 node pools, `containerd` is generally available and is the only runtime option on Kubernetes version 1.23 and higher. Docker is being retired and won't be supported as of May 2023. For more information about this retirement, see the [AKS release notes][aks-release-notes].
2022

2123
[`Containerd`](https://containerd.io/) is an [OCI](https://opencontainers.org/) (Open Container Initiative) compliant core container runtime that provides the minimum set of required functionality to execute containers and manage images on a node. `Containerd` was [donated](https://www.cncf.io/announcement/2017/03/29/containerd-joins-cloud-native-computing-foundation/) to the Cloud Native Compute Foundation (CNCF) in March of 2017. The current Moby (upstream Docker) version that AKS uses is built on top of `containerd`.
2224

@@ -31,7 +33,7 @@ By using `containerd` for AKS nodes, pod startup latency improves and node resou
3133
> [!IMPORTANT]
3234
> Clusters with Linux node pools created on Kubernetes v1.19 or greater default to `containerd` for its container runtime. Clusters with node pools on a earlier supported Kubernetes versions receive Docker for their container runtime. Linux node pools will be updated to `containerd` once the node pool Kubernetes version is updated to a version that supports `containerd`.
3335
>
34-
> `containerd` with Windows Server 2019 node pools is generally available, and is the only container runtime option in Kubernetes 1.21 and higher. You can continue using Docker node pools and clusters on versions earlier than 1.23, but Docker is no longer supported as of September 2022. For more information, see [Add a Windows Server node pool with `containerd`][aks-add-np-containerd].
36+
> `containerd` with Windows Server 2019 and 2022 node pools is generally available, and is the only container runtime option in Kubernetes 1.23 and higher. You can continue using Docker node pools and clusters on versions earlier than 1.23, but Docker is no longer supported as of May 2023. For more information, see [Add a Windows Server node pool with `containerd`][aks-add-np-containerd].
3537
>
3638
> It is highly recommended you test your workloads on AKS node pools with `containerd` before using clusters with a Kubernetes version that supports `containerd` for your node pools.
3739
@@ -57,7 +59,7 @@ Azure supports [Generation 2 (Gen2) virtual machines (VMs)](../virtual-machines/
5759
Generation 2 VMs use the new UEFI-based boot architecture rather than the BIOS-based architecture used by generation 1 VMs.
5860
Only specific SKUs and sizes support Gen2 VMs. Check the [list of supported sizes](../virtual-machines/generation-2.md#generation-2-vm-sizes), to see if your SKU supports or requires Gen2.
5961

60-
Additionally not all VM images support Gen2, on AKS Gen2 VMs use the new [AKS Ubuntu 18.04 image](#os-configuration). This image supports all Gen2 SKUs and sizes.
62+
Additionally, not all VM images support Gen2 VMs. On AKS, Gen2 VMs use [AKS Ubuntu 22.04 or 18.04 image](#os-configuration) or [AKS Windows Server 2022 image](#os-configuration). These images support all Gen2 SKUs and sizes.
6163

6264
## Default OS disk sizing
6365

articles/aks/learn/quick-windows-container-deploy-cli.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ After a few minutes, the command completes and returns JSON-formatted informatio
128128
## Add a Windows node pool
129129
By default, an AKS cluster is created with a node pool that can run Linux containers. Use the `az aks nodepool add` command to add an additional node pool that can run Windows Server containers alongside the Linux node pool.
130130

131-
AKS supports Windows Server 2019 and Windows Server 2022 node pools. For Kubernetes versions "1.25.0" and higher, Windows Server 2022 is the default operating system. For earlier versions, Windows Server 2019 will be the default operating system.
131+
AKS supports Windows Server 2019 and Windows Server 2022 node pools. For Kubernetes 1.25 and higher, Windows Server 2022 is the default operating system and only option in Kubernetes 1.33 and higher. For earlier versions, Windows Server 2019 will be the default operating system.
132132

133133
Use the `az aks nodepool add` command to add a Windows nodepool:
134134

@@ -146,7 +146,10 @@ The above command creates a new node pool named *npwin* and adds it to the *myAK
146146

147147
## Add a Windows Server 2019 node pool
148148

149-
When creating a Windows node pool, the default operating system will be Windows Server 2019 for Kubernetes versions below "1.25.0". To use Windows Server 2019 nodes when not default, you will need to specify an OS SKU type of `Windows2019`.
149+
> [!NOTE]
150+
> Windows Server 2019 is being retired after Kubernetes version 1.32 reaches end of life (EOL) and won't be supported in future releases. For more information about this retirement, see the [AKS release notes][aks-release-notes].
151+
152+
When creating a Windows node pool, on Kubernetes version 1.24 or earlier, the default operating system will be Windows Server 2019. To use Windows Server 2019 node pools when not the default option, you need to specify an OS SKU type of `Windows2019`.
150153

151154
```azurecli-interactive
152155
az aks nodepool add \
@@ -162,7 +165,7 @@ The above command creates a new Windows Server 2019 node pool named *npwin* and
162165

163166
## Add a Windows Server 2022 node pool
164167

165-
When creating a Windows node pool, the default operating system will be Windows Server 2022 for Kubernetes versions "1.25.0" and higher. To use Windows Server 2022 nodes when not default, you will need to specify an OS SKU type of `Windows2022`.
168+
When creating a Windows node pool, for Kubernetes 1.25 and higher the default operating system will be Windows Server 2022. To use Windows Server 2022 nodes when not default, you need to specify an OS SKU type of `Windows2022`.
166169

167170
> [!NOTE]
168171
> Windows Server 2022 requires Kubernetes version "1.23.0" or higher.
@@ -181,7 +184,7 @@ az aks nodepool add \
181184

182185
## Optional: Using `containerd` with Windows Server node pools
183186

184-
Beginning in Kubernetes version 1.20 and greater, you can specify `containerd` as the container runtime for Windows Server 2019 node pools. From Kubernetes 1.23, containerd will be the default container runtime for Windows.
187+
Beginning in Kubernetes version 1.20 and higher, you can specify `containerd` as the container runtime for Windows Server 2019 node pools. Starting with Kubernetes 1.23, `containerd` is the default and only container runtime for Windows.
185188

186189
> [!IMPORTANT]
187190
> When using `containerd` with Windows Server 2019 node pools:

articles/aks/learn/quick-windows-container-deploy-powershell.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ The following additional limitations apply to Windows Server node pools:
5454
* The AKS cluster can have a maximum of 100 nodes in each node pool.
5555
* The Windows Server node pool name has a limit of 6 characters.
5656

57+
> [!NOTE]
58+
> Windows Server 2019 is being retired after Kubernetes version 1.32 reaches end of life (EOL) and won't be supported in future releases. For more information about this retirement, see the [AKS release notes][aks-release-notes].
59+
5760
## Create a resource group
5861

5962
An [Azure resource group](../../azure-resource-manager/management/overview.md)

articles/aks/upgrade-windows-2019-2022.md

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,14 @@ ms.author: viniap
99

1010
# Upgrade Kubernetes workloads from Windows Server 2019 to 2022
1111

12-
Upgrading the OS version of a running Windows workload on Azure Kubernetes Service (AKS) requires you to deploy a new node pool as Windows versions must match on each node pool. This article describes the steps to upgrade the OS version for Windows workloads as well as other important aspects.
12+
Upgrading the OS version of a running Windows workload on Azure Kubernetes Service (AKS) requires you to deploy a new node pool as Windows versions must match on each node pool. This article describes the steps to upgrade the OS version for Windows workloads and other important aspects.
13+
14+
> [!NOTE]
15+
> Windows Server 2019 is being retired after Kubernetes version 1.32 reaches end of life (EOL) and won't be supported in future releases. For more information about this retirement, see the [AKS release notes][aks-release-notes].
1316
1417
## Limitations
1518

16-
Windows Server 2019 and Windows Server 2022 cannot co-exist on the same node pool on AKS. A new node pool must be created to host the new OS version. It's important that you match the permissions and access of the previous node pool to the new one.
19+
Windows Server 2019 and Windows Server 2022 can't co-exist on the same node pool on AKS. A new node pool must be created to host the new OS version. It's important that you match the permissions and access of the previous node pool to the new one.
1720

1821
## Before you begin
1922

@@ -27,7 +30,7 @@ Windows Server 2019 and Windows Server 2022 cannot co-exist on the same node poo
2730
2831
## Add a Windows Server 2022 node pool to the existing cluster
2932

30-
Windows Server 2019 and 2022 cannot co-exist on the same node pool on AKS. To upgrade your application, you need a separate node pool for Windows Server 2022.
33+
Windows Server 2019 and 2022 can't co-exist on the same node pool on AKS. To upgrade your application, you need a separate node pool for Windows Server 2022.
3134
For more information on how to add a new Windows Server 2022 node pool to an existing AKS cluster, see [Add a Windows Server 2022 node pool](./learn/quick-windows-container-deploy-cli.md).
3235

3336
## Update your YAML file
@@ -39,7 +42,7 @@ Node Selector is the most common and recommended option for placement of Windows
3942
"kubernetes.io/os": windows
4043
```
4144
42-
The above annotation will find *any* Windows node available and place the pod on that node (of course, following all other scheduling rules). When upgrading from Windows Server 2019 to Windows Server 2022, you need to enforce not only the placement on a Windows node, but also on a node that is running the latest OS version. To accomplish this, one option is to use a different annotation:
45+
The above annotation finds *any* Windows node available and places the pod on that node (following all other scheduling rules). When upgrading from Windows Server 2019 to Windows Server 2022, you need to enforce not only the placement on a Windows node, but also on a node that is running the latest OS version. To accomplish this, one option is to use a different annotation:
4346
4447
```yaml
4548
nodeSelector:
@@ -49,16 +52,16 @@ The above annotation will find *any* Windows node available and place the pod on
4952
Once you update the nodeSelector on the YAML file, you should also update the container image to be used. You can get this information from the previous step on which you created a new version of the containerized application by changing the FROM statement on your dockerfile.
5053
5154
> [!NOTE]
52-
> You should leverage the same YAML file you used to deploy the application in the first place - this will ensure no other configuration is changed, only the nodeSelector and the image to be used.
55+
> You should leverage the same YAML file you used to deploy the application in the first place - this ensures no other configuration is changed, only the nodeSelector and the image to be used.
5356
5457
## Apply the new YAML file to the existing workload
5558
56-
If you have an application deployed already, ensure you follow the steps recommended above to deploy a new node pool with Windows Server 2022 nodes. Once deployed, your environment will show Windows Server 2019 and 2022 nodes, with the workloads running on the 2019 nodes:
59+
If you have an application deployed already, follow the recommended steps to deploy a new node pool with Windows Server 2022 nodes. Once deployed, your environment will show Windows Server 2019 and 2022 nodes, with the workloads running on the 2019 nodes:
5760
5861
```console
5962
kubectl get nodes -o wide
6063
```
61-
The command above will show all nodes on your AKS cluster with additional details on the output:
64+
This command shows all nodes on your AKS cluster with extra details on the output:
6265

6366
```output
6467
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
@@ -77,18 +80,18 @@ With the Windows Server 2022 node pool deployed and the YAML file configured, yo
7780
kubectl apply -f <filename>
7881
```
7982

80-
The command above should return a "configured" status for the deployment:
83+
This command should return a "configured" status for the deployment:
8184

8285
```output
8386
deployment.apps/sample configured
8487
service/sample unchanged
8588
```
86-
At this point, AKS will start the process of terminating the existing pods and deploying new pods to the Windows Server 2022 nodes. You can check the status of your deployment by running:
89+
At this point, AKS starts the process of terminating the existing pods and deploying new pods to the Windows Server 2022 nodes. You can check the status of your deployment by running:
8790

8891
```console
8992
kubectl get pods -o wide
9093
```
91-
The command above return the status of the pods on the default namespace. You might need to change the command above to list the pods on specific namespaces.
94+
This command returns the status of the pods on the default namespace. You might need to change the command above to list the pods on specific namespaces.
9295

9396
```output
9497
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
@@ -99,6 +102,6 @@ sample-7794bfcc4c-sh78c 1/1 Running 0 2m49s 10.240.0.228 ak
99102

100103
## Active Directory, gMSA and Managed Identity implications
101104

102-
If you are leveraging Group Managed Service Accounts (gMSA) you will need to update the Managed Identity configuration for the new node pool. gMSA uses a secret (user account and password) so the node on which the Windows pod is running can authenticate the container against Active Directory. To access that secret on Azure Key Vault, the node uses a Managed Identity that allows the node to access the resource. Since Managed Identities are configured per node pool, and the pod now resides on a new node pool, you need to update that configuration. Check out [Enable Group Managed Service Accounts (GMSA) for your Windows Server nodes on your Azure Kubernetes Service (AKS) cluster](./use-group-managed-service-accounts.md) for more information.
105+
If you're using Group Managed Service Accounts (gMSA), update the Managed Identity configuration for the new node pool. gMSA uses a secret (user account and password) so the node on which the Windows pod is running can authenticate the container against Active Directory. To access that secret on Azure Key Vault, the node uses a Managed Identity that allows the node to access the resource. Since Managed Identities are configured per node pool, and the pod now resides on a new node pool, you need to update that configuration. Check out [Enable Group Managed Service Accounts (GMSA) for your Windows Server nodes on your Azure Kubernetes Service (AKS) cluster](./use-group-managed-service-accounts.md) for more information.
103106

104107
The same principle applies to Managed Identities used for any other pod/node pool when accessing other Azure resources. Any access provided via Managed Identity needs to be updated to reflect the new node pool. To view update and sign-in activities, see [How to view Managed Identity activity](../active-directory/managed-identities-azure-resources/how-to-view-managed-identity-activity.md).

articles/aks/use-windows-hpc.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,34 +18,33 @@ A privileged DaemonSet can carry out changes or monitor a Linux host on Kubernet
1818

1919
* HostProcess containers require Kubernetes 1.23 or greater.
2020
* HostProcess containers require `containerd` 1.6 or higher container runtime.
21-
* HostProcess pods can only contain HostProcess containers. This is a current limitation of the Windows operating system. Non-privileged Windows containers can't share a vNIC with the host IP namespace.
21+
* HostProcess pods can only contain HostProcess containers due to a limitation on the Windows operating system. Non-privileged Windows containers can't share a vNIC with the host IP namespace.
2222
* HostProcess containers run as a process on the host. The only isolation those containers have from the host is the resource constraints imposed on the HostProcess user account.
2323
* Filesystem isolation and Hyper-V isolation aren't supported for HostProcess containers.
2424
* Volume mounts are supported and are mounted under the container volume. See Volume Mounts.
2525
* A limited set of host user accounts are available for Host Process containers by default. See Choosing a User Account.
2626
* Resource limits such as disk, memory, and cpu count, work the same way as fashion as processes on the host.
27-
* Named pipe mounts and Unix domain sockets are not directly supported, but can be accessed on their host path, for example `\\.\pipe\*`.
27+
* Named pipe mounts and Unix domain sockets aren't directly supported, but can be accessed on their host path, for example `\\.\pipe\*`.
2828

2929

3030
## Run a HostProcess workload
3131

32-
To use HostProcess features with your deployment, set *privilaged: true*, *hostProcess: true*, and *hostNetwork: true*:
32+
To use HostProcess features with your deployment, set *hostProcess: true* and *hostNetwork: true*:
3333

3434
```yaml
3535
spec:
3636
...
3737
containers:
3838
...
3939
securityContext:
40-
privileged: true
4140
windowsOptions:
4241
hostProcess: true
4342
...
4443
hostNetwork: true
4544
...
4645
```
4746

48-
To run an example workload that uses HostProcess features on an existing AKS cluster with Windows nodes, create `hostprocess.yaml` with the following:
47+
To run an example workload that uses HostProcess features on an existing AKS cluster with Windows nodes, create `hostprocess.yaml` with the following contents:
4948

5049
```yaml
5150
apiVersion: apps/v1
@@ -97,7 +96,7 @@ $ kubectl apply -f hostprocess.yaml
9796
daemonset.apps/privileged-daemonset created
9897
```
9998

100-
You can verify your workload use the features of HostProcess by view the pod's logs.
99+
Verify that your workload uses the features of HostProcess containers by viewing the pod's logs.
101100

102101
Use `kubectl` to find the name of the pod in the `kube-system` namespace.
103102

@@ -119,7 +118,7 @@ Process has admin rights:
119118

120119
## Next steps
121120

122-
For more details on HostProcess containers and Microsoft's contribution to Kubernetes upstream, see the [Alpha in v1.22: Windows HostProcess Containers][blog-post].
121+
For more information on HostProcess containers and Microsoft's contribution to Kubernetes upstream, see the [Alpha in v1.22: Windows HostProcess Containers][blog-post].
123122

124123

125124
<!-- LINKS - External -->

0 commit comments

Comments
 (0)