Merge pull request #21652 from marosset/1.19-windows-contanerd
v1.19 Windows OS version support + containerd doc updatespull/21115/head
commit
9a23188e30
|
@ -399,6 +399,32 @@ containerd config default > /etc/containerd/config.toml
|
||||||
systemctl restart containerd
|
systemctl restart containerd
|
||||||
```
|
```
|
||||||
{{% /tab %}}
|
{{% /tab %}}
|
||||||
|
{{% tab name="Windows (PowerShell)" %}}
|
||||||
|
```powershell
|
||||||
|
# (Install containerd)
|
||||||
|
# download containerd
|
||||||
|
cmd /c curl -OL https://github.com/containerd/containerd/releases/download/v1.4.0-beta.2/containerd-1.4.0-beta.2-windows-amd64.tar.gz
|
||||||
|
cmd /c tar xvf .\containerd-1.4.0-beta.2-windows-amd64.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# extract and configure
|
||||||
|
Copy-Item -Path ".\bin\" -Destination "$Env:ProgramFiles\containerd" -Recurse -Force
|
||||||
|
cd $Env:ProgramFiles\containerd\
|
||||||
|
.\containerd.exe config default | Out-File config.toml -Encoding ascii
|
||||||
|
|
||||||
|
# review the configuration. depending on setup you may want to adjust:
|
||||||
|
# - the sandbox_image (kubernetes pause image)
|
||||||
|
# - cni bin_dir and conf_dir locations
|
||||||
|
Get-Content config.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# start containerd
|
||||||
|
.\containerd.exe --register-service
|
||||||
|
Start-Service containerd
|
||||||
|
```
|
||||||
|
{{% /tab %}}
|
||||||
{{< /tabs >}}
|
{{< /tabs >}}
|
||||||
|
|
||||||
### systemd
|
### systemd
|
||||||
|
|
|
@ -33,17 +33,22 @@ In this document, when we talk about Windows containers we mean Windows containe
|
||||||
|
|
||||||
### Supported Functionality
|
### Supported Functionality
|
||||||
|
|
||||||
#### Compute
|
#### Windows OS Version Support
|
||||||
|
|
||||||
From an API and kubectl perspective, Windows containers behave in much the same way as Linux-based containers. However, there are some notable differences in key functionality which are outlined in the limitation section.
|
Refer to the following table for Windows operating system support in Kubernetes. A single heterogeneous Kubernetes cluster can have both Windows and Linux worker nodes. Windows containers have to be scheduled on Windows nodes and Linux containers on Linux nodes.
|
||||||
|
|
||||||
Let's start with the operating system version. Refer to the following table for Windows operating system support in Kubernetes. A single heterogeneous Kubernetes cluster can have both Windows and Linux worker nodes. Windows containers have to be scheduled on Windows nodes and Linux containers on Linux nodes.
|
| Kubernetes version | Windows Server LTSC releases | Windows Server SAC releases |
|
||||||
|
|
||||||
| Kubernetes version | Host OS version (Kubernetes Node) | | |
|
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| | *Windows Server 1709* | *Windows Server 1803* | *Windows Server 1809/Windows Server 2019* |
|
| *Kubernetes v1.14* | Windows Server 2019 | Windows Server ver 1809 |
|
||||||
| *Kubernetes v1.14* | Not Supported | Not Supported| Supported for Windows Server containers Builds 17763.* with Docker EE-basic 18.09 |
|
| *Kubernetes v1.15* | Windows Server 2019 | Windows Server ver 1809 |
|
||||||
|
| *Kubernetes v1.16* | Windows Server 2019 | Windows Server ver 1809 |
|
||||||
|
| *Kubernetes v1.17* | Windows Server 2019 | Windows Server ver 1809 |
|
||||||
|
| *Kubernetes v1.18* | Windows Server 2019 | Windows Server ver 1809, Windows Server ver 1903, Windows Server ver 1909 |
|
||||||
|
| *Kubernetes v1.19* | Windows Server 2019 | Windows Server ver 1909, Windows Server ver 2004 |
|
||||||
|
|
||||||
|
{{< note >}}
|
||||||
|
Information on the different Windows Server servicing channels including their support models can be found at [Windows Server servicing channels](https://docs.microsoft.com/en-us/windows-server/get-started-19/servicing-channels-19).
|
||||||
|
{{< /note >}}
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
We don't expect all Windows customers to update the operating system for their apps frequently. Upgrading your applications is what dictates and necessitates upgrading or introducing new nodes to the cluster. For the customers that chose to upgrade their operating system for containers running on Kubernetes, we will offer guidance and step-by-step instructions when we add support for a new operating system version. This guidance will include recommended upgrade procedures for upgrading user applications together with cluster nodes. Windows nodes adhere to Kubernetes [version-skew policy](/docs/setup/release/version-skew-policy/) (node to control plane versioning) the same way as Linux nodes do today.
|
We don't expect all Windows customers to update the operating system for their apps frequently. Upgrading your applications is what dictates and necessitates upgrading or introducing new nodes to the cluster. For the customers that chose to upgrade their operating system for containers running on Kubernetes, we will offer guidance and step-by-step instructions when we add support for a new operating system version. This guidance will include recommended upgrade procedures for upgrading user applications together with cluster nodes. Windows nodes adhere to Kubernetes [version-skew policy](/docs/setup/release/version-skew-policy/) (node to control plane versioning) the same way as Linux nodes do today.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
@ -54,6 +59,10 @@ The Windows Server Host Operating System is subject to the [Windows Server ](htt
|
||||||
Windows containers with process isolation have strict compatibility rules, [where the host OS version must match the container base image OS version](https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility). Once we support Windows containers with Hyper-V isolation in Kubernetes, the limitation and compatibility rules will change.
|
Windows containers with process isolation have strict compatibility rules, [where the host OS version must match the container base image OS version](https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility). Once we support Windows containers with Hyper-V isolation in Kubernetes, the limitation and compatibility rules will change.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
|
#### Compute
|
||||||
|
|
||||||
|
From an API and kubectl perspective, Windows containers behave in much the same way as Linux-based containers. However, there are some notable differences in key functionality which are outlined in the [limitation section](#limitations).
|
||||||
|
|
||||||
Key Kubernetes elements work the same way in Windows as they do in Linux. In this section, we talk about some of the key workload enablers and how they map to Windows.
|
Key Kubernetes elements work the same way in Windows as they do in Linux. In this section, we talk about some of the key workload enablers and how they map to Windows.
|
||||||
|
|
||||||
* [Pods](/docs/concepts/workloads/pods/pod-overview/)
|
* [Pods](/docs/concepts/workloads/pods/pod-overview/)
|
||||||
|
@ -104,23 +113,22 @@ Pods, Controllers and Services are critical elements to managing Windows workloa
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.14" state="stable" >}}
|
{{< feature-state for_k8s_version="v1.14" state="stable" >}}
|
||||||
|
|
||||||
Docker EE-basic 18.09+ is the recommended container runtime for Windows Server 2019 / 1809 nodes running Kubernetes. This works with the dockershim code included in the kubelet.
|
Docker EE-basic 19.03+ is the recommended container runtime for all Windows Server versions. This works with the dockershim code included in the kubelet.
|
||||||
|
|
||||||
##### CRI-ContainerD
|
##### CRI-ContainerD
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.18" state="alpha" >}}
|
{{< feature-state for_k8s_version="v1.19" state="beta" >}}
|
||||||
|
|
||||||
ContainerD is an OCI-compliant runtime that works with Kubernetes on Linux. Kubernetes v1.18 adds support for {{< glossary_tooltip term_id="containerd" text="ContainerD" >}} on Windows. Progress for ContainerD on Windows can be tracked at [enhancements#1001](https://github.com/kubernetes/enhancements/issues/1001).
|
|
||||||
|
|
||||||
{{< caution >}}
|
{{< caution >}}
|
||||||
|
There is a [known limitation](/docs/tasks/configure-pod-container/configure-gmsa/#gmsa-limitations) when using GMSA with ContainerD to access Windows network shares which requires a kernel patch. Check for updates on the [Microsoft Windows Containers issue tracker](https://github.com/microsoft/Windows-Containers/issues/44).
|
||||||
ContainerD on Windows in Kubernetes v1.18 has the following known shortcomings:
|
|
||||||
|
|
||||||
* ContainerD does not have an official release with support for Windows; all development in Kubernetes has been performed against active ContainerD development branches. Production deployments should always use official releases that have been fully tested and are supported with security fixes.
|
|
||||||
* Group-Managed Service Accounts are not implemented when using ContainerD - see [containerd/cri#1276](https://github.com/containerd/cri/issues/1276).
|
|
||||||
|
|
||||||
{{< /caution >}}
|
{{< /caution >}}
|
||||||
|
|
||||||
|
{{< glossary_tooltip term_id="containerd" text="ContainerD" >}} 1.4.0-beta.2+ can also be used as the container runtime for Windows Kubernetes nodes.
|
||||||
|
|
||||||
|
Initial support for ContainerD on Windows was added in Kubernetes v1.18. Progress for ContainerD on Windows can be tracked at [enhancements#1001](https://github.com/kubernetes/enhancements/issues/1001).
|
||||||
|
|
||||||
|
Learn how to [install ContainerD on a Windows](/docs/setup/production-environment/container-runtimes/#install-containerd).
|
||||||
|
|
||||||
#### Persistent Storage
|
#### Persistent Storage
|
||||||
|
|
||||||
Kubernetes [volumes](/docs/concepts/storage/volumes/) enable complex applications, with data persistence and Pod volume sharing requirements, to be deployed on Kubernetes. Management of persistent volumes associated with a specific storage back-end or protocol includes actions such as: provisioning/de-provisioning/resizing of volumes, attaching/detaching a volume to/from a Kubernetes node and mounting/dismounting a volume to/from individual containers in a pod that needs to persist data. The code implementing these volume management actions for a specific storage back-end or protocol is shipped in the form of a Kubernetes volume [plugin](/docs/concepts/storage/volumes/#types-of-volumes). The following broad classes of Kubernetes volume plugins are supported on Windows:
|
Kubernetes [volumes](/docs/concepts/storage/volumes/) enable complex applications, with data persistence and Pod volume sharing requirements, to be deployed on Kubernetes. Management of persistent volumes associated with a specific storage back-end or protocol includes actions such as: provisioning/de-provisioning/resizing of volumes, attaching/detaching a volume to/from a Kubernetes node and mounting/dismounting a volume to/from individual containers in a pod that needs to persist data. The code implementing these volume management actions for a specific storage back-end or protocol is shipped in the form of a Kubernetes volume [plugin](/docs/concepts/storage/volumes/#types-of-volumes). The following broad classes of Kubernetes volume plugins are supported on Windows:
|
||||||
|
|
|
@ -253,4 +253,5 @@ If the above command corrects the error, you can automate the step by adding the
|
||||||
|
|
||||||
If you add the `lifecycle` section show above to your Pod spec, the Pod will execute the commands listed to restart the `netlogon` service until the `nltest.exe /query` command exits without error.
|
If you add the `lifecycle` section show above to your Pod spec, the Pod will execute the commands listed to restart the `netlogon` service until the `nltest.exe /query` command exits without error.
|
||||||
|
|
||||||
|
## GMSA limitations
|
||||||
|
When using the [ContainerD runtime for Windows](/docs/setup/production-environment/windows/intro-windows-in-kubernetes/#cri-containerd) accessing restricted network shares via the GMSA domain identity fails. The container will recieve the identity of and calls from `nltest.exe /query` will work. It is recommended to use the [Docker EE runtime](/docs/setup/production-environment/windows/intro-windows-in-kubernetes/#docker-ee) if access to network shares is required. The Windows Server team is working on resolving the issue in the Windows Kernel and will release a patch to resolve this issue in the future. Look for updates on the [Microsoft Windows Containers issue tracker](https://github.com/microsoft/Windows-Containers/issues/44).
|
||||||
|
|
Loading…
Reference in New Issue