High availability for SQL Server containers

Applies to: SQL Server - Linux

Create and manage your SQL Server instances natively in Kubernetes.

Deploy SQL Server to docker containers managed by Kubernetes. In Kubernetes, a container with a SQL Server instance can automatically recover in case a cluster node fails.

SQL Server 2017 introduces a Docker image that can deploy on Kubernetes. You can configure the image with a Kubernetes persistent volume claim (PVC). Kubernetes monitors the SQL Server process in the container. If the process, pod, container, or node fail, Kubernetes automatically bootstraps another instance and reconnects to the storage.

Container with SQL Server instance on Kubernetes

Kubernetes 1.6 and later has support for storage classes, persistent volume claims, and the Azure disk volume type.

In this configuration, Kubernetes plays the role of the container orchestrator.

Diagram showing a Kubernetes SQL Server cluster.

In the preceding diagram, mssql-server is a SQL Server instance (container) in a pod. A replica set ensures that the pod is automatically recovered after a node failure. Applications connect to the service. In this case, the service represents a load balancer that hosts an IP address that stays the same after failure of the mssql-server.

Kubernetes orchestrates the resources in the cluster. When a node hosting a SQL Server instance container fails, it bootstraps a new container with a SQL Server instance and attaches it to the same persistent storage.

SQL Server on Linux supports containers on Kubernetes, OpenShift, and D2Hi.