SlideShare a Scribd company logo
Anusha Ragunathan
Senior Software Engineer, Docker Inc.
Persistent Storage for Windows
workloads in Kubernetes
Deep Debroy
Engineering Manager, Docker Inc.
o Kubernetes and Windows
o Persistent Storage in Kubernetes
o Storage Plugins in Windows
Agenda
Kubernetes &
Windows
Kubernetes and Windows
o Windows support is stable in Kubernetes v1.14
o Worker nodes need to run Windows Server 2019
o Kubernetes master nodes need to be Linux
o Docker engine is the supported container runtime
Kubernetes and Windows
q Active Directory integration through GMSA
o Alpha in v1.14
q Support for ContainerD through CRI
o In design phase
q Support for multiple CNI plugins
o Azure CNI, Docker CNI, Flannel
q Persistent Storage
Kubernetes Architecture
Kubernetes Master
Scheduler
API Server
Controller
Node
Kubelet
Kube-proxy
CNI/CRI/CSI plugins
Cloud Datacenter
Network Fabric
Datacenter
Storage Fabric
Node
Kubelet
Kube-proxy
CNI/CRI/CSI plugins
Node
Kubelet
Kube-proxy
CNI/CRI/CSI plugins
q Cluster-wide controller loops in master nodes
o PV controller
o Attach/Detach controller
o Node controller
q OS-specific logic in worker nodes
o Kubelet
o Container runtimes
o Flexvolume and CSI node plugins
Key components of Kubernetes
Persistent storage in
Kubernetes
Kubernetes Jargon
● A storage claim made by a
user
● Just like how Pods consume
Compute resources, PVC
consume Volume resources.
● Just like how Pods can
request specific levels CPU &
memory, PVCs can request
specific sizes and access
modes.
● Pods reference PVC
Persistent Volume
Claim (PVC)
Persistent Volume (PV)
● Storage resources in a cluster
● Lifecycle independent of a Pod
Pods
● A set of running containers
representing a workload
Lifeof a PV
CreateVolume
AttachVolume (to a Node)
UnMountVolume (from Pod)
MountVolume (to Pod and
format if necessary)
DetachVolume (from Node)
DeleteVolume (after use)
Storage Service
PodPod PodPod
PodPod
● Provisioning is the creation/allocation of Persistent Volumes
● Static and Dynamic Provisioning
○ Static: pre creation of PV
○ Dynamic: automatic creation of PV based on size,
permissions requested.
● Dynamic Provisioning through Storage Classes
○ Provides a way for Admins to describe “classes” of storage
available. Eg, different performance SLAs, value-add features
such as replication, backup, etc
○ Backed by a provisioner
PV Provisioning
Provisioning Workflow (static)
1. Cluster Admin
pre-provisions
volumes and
registers PVs
2. Developer
claims a PV
from the pool
4. Developer
references the
claim in a Pod
3. Controller BINDS
PV to PVC
Pool of Persistent Volumes
NFS PV iSCSI PV EBS PV
Claim
`Claim
ClaimClaim
Pod
Claim
5. Controller inspects
Claim and MOUNTs
the PV into the Pod.
Provisioning Workflow (dynamic)
1. Cluster Admin
registers
Storage Classes
2. Developer defines a
claim by referring a
storage class
5. Developer
references the
claim in a Pod
4. Controller BINDS
PV to PVC
6. Controller
inspects Claim
and MOUNTs the
PV into the Pod.
SSD
Pod
Claim
Claim
Persistent
Volumes
Storage
Classes
Slow
Fast
3. Controller
provisions
volumes
on-demand
• In-tree volume plugins
• Flexvolume plugins
• CSI plugins
• External provisioners
Persistent storage interfaces
Plugin Type Pros Cons Future
InTree
No extra installation
necessary
Release cycles tied to
k8s releases
Superseded by CSI
External
Provisioner
Code maintained
independently
Limited customization for
attach and mount ops
Superseded by CSI
FlexVolume
Customizable code for
attach/mount maintained
independently
Host based exec model
reduces portability.
Plugin lifecycle is non-
native to k8s.
Deprecated for Linux
Will be used for Windows
CSI
Highly customizable code
maintained independently
and based on standard
Requires installation and
configuration
The future of storage
plugins
Persistent Storage Interfaces
Storage Plugins in
Windows
Considerations for Windows
q Disk device and Volume enumeration interfaces
o Object based (rather than file based)
q File System support
o NTFS for block
o SMB for shared
q Powershell cmdlets/scripts for many actions
In-tree storage support for Windows
q Core support in kubelet.exe to:
o Partition disk and format volumes with NTFS
o Link volumes to container's file system
o Link SMB shares to container's file system
In-tree plugins for Windows
q File based cloud volumes:
o Azure File through SMB
q Block based cloud volumes with attach support:
o Azure Disk
o GCE PD
o EBS [WIP]
In tree Plugin Architecture
Worker Worker
Master
Storage Service
Kubelet Kubelet
AttachVolum
e
DetachVolu
me
CreateVolum
e
DeleteVolum
e
Kube Core Components
MountVolume
UnmountVolume
AttachVolume
DetachVolume
CreateVolume
Delete Volume
In-tree
Plugins
PV Claim
API Server
Demo 1: In-tree storage with Azure File
Worker Worker
Master
Azure File Storage
Flexvolume plugins for Windows
q Attach/mount pre-provisioned volumes over:
o SMB (shared file system)
o iSCSI (dedicated block)
q Dynamic provisioning with external provisioners:
o Set PV source to supported Flexvolume plugins
ExternalProvisionerArchitecture
Worker Worker
Master
Storage Service
Kubelet Kubelet
External Provisioner
(StatefulSet/Deployment Pod)
Kube Core Components
External components
API Server
MountVolume
UnmountVolume
AttachVolume
DetachVolume
CreateVolume
Delete Volume
In-tree Plugins
PV Claim
PV
FlexVolume Plugin
Demo 2: External Provisioning + iSCSI
Worker Worker
Master
ISCSI Target Server
iSCSI LUN
CSI plugins for Windows
q CSI support for Windows is a Work in Progress.
q No privileged support for containers in Windows yet
q Options for deploying plugin
o Host process
o Container with privileged host-based proxy
Summary
q In-tree and Flexvolume plugins ready to be used.
q External provisioners coming soon.
q CSI plugins for Windows node plugins in future.
What's next
Support for Windows workloads in Kubernetes clusters
coming in Docker Enterprise Tech Preview!!
Thank You
Q&A
Backup slides
CSI node plugins as host process
q Plugin process runs directly on host
q Handles plugin registration with kubelet
o Cannot use node driver registrar sidecar
o Other side cars can be scheduled on Linux
masters.
q Independent life-cycle and log management
CSI node plugins as container
q Plugin process packaged and deployed as containers
q Use node driver registrar for plugin registration
q Life-cycle and log management through Kubernetes
q Requires a privileged proxy in host for operations
CSIPlugins
Worker Worker
Storage Service
Kubelet Kubelet
External
Provisioner
(Deployment/
StatefulSet)
CreateVolume
DeleteVolume
External
Attacher
(Deployment/
StatefulSet)
CSI Controller
(Deployment/
StatefulSet)
CSI Node
(DaemonSet)
Kube Core Components Kube Sidecar containers CSI plugin components
ControllerPublish
ControllerUnPublish
Master
API Server
NodeStage/NodeUnstage
NodePublish/NodeUnpublish
PV
PV Claim
volume
attachment
CSI
InTree

More Related Content

PDF
Persistent Storage in Docker Platform
PDF
Container Landscape in 2019
PDF
Kubernetes Meetup - Seattle 2017-06-01
PPTX
Storage in kubernetes
PDF
FOSDEM 2019: A containerd Project Update
PPTX
Kubernetes Stateful Workloads on Legacy Storage
PPTX
Containers without docker
PDF
Kubernetes dealing with storage and persistence
Persistent Storage in Docker Platform
Container Landscape in 2019
Kubernetes Meetup - Seattle 2017-06-01
Storage in kubernetes
FOSDEM 2019: A containerd Project Update
Kubernetes Stateful Workloads on Legacy Storage
Containers without docker
Kubernetes dealing with storage and persistence

What's hot (20)

PDF
Kubernetes in Docker
PDF
DCEU 18: Docker for Windows Containers and Kubernetes
PDF
Docker London Meetup: Docker Engine Evolution
PPTX
The state of containerd
PDF
Enabling Security via Container Runtimes
PDF
Kubernetes and Hybrid Deployments
PPTX
Using Docker EE to Scale Operational Intelligence at Splunk
PDF
Integration kubernetes with docker private registry
PPTX
Containers in production with docker, coreos, kubernetes and apache stratos
PDF
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
PDF
Kubernetes persistence 101
PDF
Apache Stratos 4.1.0 Architecture
PDF
Let's Try Every CRI Runtime Available for Kubernetes
PDF
Securing Containerized Applications: A Primer
PDF
Cloud Native TLV Meetup: Securing Containerized Applications Primer
PDF
DCEU 18: Provisioning and Managing Storage for Docker Containers
PDF
Embedding Containerd For Fun and Profit
PDF
Bucketbench: Benchmarking Container Runtime Performance
PDF
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
PDF
Introduction to OCI Image Technologies Serving Container
Kubernetes in Docker
DCEU 18: Docker for Windows Containers and Kubernetes
Docker London Meetup: Docker Engine Evolution
The state of containerd
Enabling Security via Container Runtimes
Kubernetes and Hybrid Deployments
Using Docker EE to Scale Operational Intelligence at Splunk
Integration kubernetes with docker private registry
Containers in production with docker, coreos, kubernetes and apache stratos
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
Kubernetes persistence 101
Apache Stratos 4.1.0 Architecture
Let's Try Every CRI Runtime Available for Kubernetes
Securing Containerized Applications: A Primer
Cloud Native TLV Meetup: Securing Containerized Applications Primer
DCEU 18: Provisioning and Managing Storage for Docker Containers
Embedding Containerd For Fun and Profit
Bucketbench: Benchmarking Container Runtime Performance
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Introduction to OCI Image Technologies Serving Container
Ad

Similar to Storage for Windows workloads in Kubernetes (20)

PPTX
Introduction to Container Storage Interface (CSI)
PDF
Discoblocks.pptx.pdf
PPTX
DTW18 - code08 - Everything You Need To Know About Storage with Kubernetes
PDF
Think like a storage architect, in four questions
PPTX
Hack Shack workshop: Persist, optimize and accelerate using persistent storag...
PDF
How to manage stateful applications in Kubernetes
PDF
What's New in Kubernetes Storage
PDF
Solving k8s persistent workloads using k8s DevOps style
PPTX
Challenges of Kubernetes On-premise Deployment
PDF
Persistent Storage with Kubernetes in Production
PDF
Persistent Storage with Kubernetes in Production
PDF
Persistent Storage with Kubernetes in Production
PDF
Persistent Storage with Kubernetes in Production
PDF
Latest (storage IO) patterns for cloud-native applications
PPTX
Everything You Need To Know About Persistent Storage in Kubernetes
PDF
Container Attached Storage with OpenEBS - CNCF Paris Meetup
PDF
KubeCon Europe 2019 - VMware SIG - Intro to the CSI driver
PDF
DCSF 19 Kubernetes and Container Storage Interface Update
PDF
Persistent Storage with Containers with Kubernetes & OpenShift
PDF
OpenEBS; asymmetrical block layer in user-space breaking the million IOPS bar...
Introduction to Container Storage Interface (CSI)
Discoblocks.pptx.pdf
DTW18 - code08 - Everything You Need To Know About Storage with Kubernetes
Think like a storage architect, in four questions
Hack Shack workshop: Persist, optimize and accelerate using persistent storag...
How to manage stateful applications in Kubernetes
What's New in Kubernetes Storage
Solving k8s persistent workloads using k8s DevOps style
Challenges of Kubernetes On-premise Deployment
Persistent Storage with Kubernetes in Production
Persistent Storage with Kubernetes in Production
Persistent Storage with Kubernetes in Production
Persistent Storage with Kubernetes in Production
Latest (storage IO) patterns for cloud-native applications
Everything You Need To Know About Persistent Storage in Kubernetes
Container Attached Storage with OpenEBS - CNCF Paris Meetup
KubeCon Europe 2019 - VMware SIG - Intro to the CSI driver
DCSF 19 Kubernetes and Container Storage Interface Update
Persistent Storage with Containers with Kubernetes & OpenShift
OpenEBS; asymmetrical block layer in user-space breaking the million IOPS bar...
Ad

Recently uploaded (20)

PDF
Arduino robotics embedded978-1-4302-3184-4.pdf
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PPTX
Welding lecture in detail for understanding
PPTX
additive manufacturing of ss316l using mig welding
PPT
Mechanical Engineering MATERIALS Selection
PPTX
UNIT 4 Total Quality Management .pptx
PPTX
Lecture Notes Electrical Wiring System Components
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PDF
Well-logging-methods_new................
DOCX
573137875-Attendance-Management-System-original
PPTX
CYBER-CRIMES AND SECURITY A guide to understanding
DOCX
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PPTX
Strings in CPP - Strings in C++ are sequences of characters used to store and...
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PPTX
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
PPTX
Lesson 3_Tessellation.pptx finite Mathematics
Arduino robotics embedded978-1-4302-3184-4.pdf
UNIT-1 - COAL BASED THERMAL POWER PLANTS
Welding lecture in detail for understanding
additive manufacturing of ss316l using mig welding
Mechanical Engineering MATERIALS Selection
UNIT 4 Total Quality Management .pptx
Lecture Notes Electrical Wiring System Components
Model Code of Practice - Construction Work - 21102022 .pdf
Embodied AI: Ushering in the Next Era of Intelligent Systems
Well-logging-methods_new................
573137875-Attendance-Management-System-original
CYBER-CRIMES AND SECURITY A guide to understanding
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
Strings in CPP - Strings in C++ are sequences of characters used to store and...
Operating System & Kernel Study Guide-1 - converted.pdf
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
Lesson 3_Tessellation.pptx finite Mathematics

Storage for Windows workloads in Kubernetes

  • 1. Anusha Ragunathan Senior Software Engineer, Docker Inc. Persistent Storage for Windows workloads in Kubernetes Deep Debroy Engineering Manager, Docker Inc.
  • 2. o Kubernetes and Windows o Persistent Storage in Kubernetes o Storage Plugins in Windows Agenda
  • 4. Kubernetes and Windows o Windows support is stable in Kubernetes v1.14 o Worker nodes need to run Windows Server 2019 o Kubernetes master nodes need to be Linux o Docker engine is the supported container runtime
  • 5. Kubernetes and Windows q Active Directory integration through GMSA o Alpha in v1.14 q Support for ContainerD through CRI o In design phase q Support for multiple CNI plugins o Azure CNI, Docker CNI, Flannel q Persistent Storage
  • 6. Kubernetes Architecture Kubernetes Master Scheduler API Server Controller Node Kubelet Kube-proxy CNI/CRI/CSI plugins Cloud Datacenter Network Fabric Datacenter Storage Fabric Node Kubelet Kube-proxy CNI/CRI/CSI plugins Node Kubelet Kube-proxy CNI/CRI/CSI plugins
  • 7. q Cluster-wide controller loops in master nodes o PV controller o Attach/Detach controller o Node controller q OS-specific logic in worker nodes o Kubelet o Container runtimes o Flexvolume and CSI node plugins Key components of Kubernetes
  • 9. Kubernetes Jargon ● A storage claim made by a user ● Just like how Pods consume Compute resources, PVC consume Volume resources. ● Just like how Pods can request specific levels CPU & memory, PVCs can request specific sizes and access modes. ● Pods reference PVC Persistent Volume Claim (PVC) Persistent Volume (PV) ● Storage resources in a cluster ● Lifecycle independent of a Pod Pods ● A set of running containers representing a workload
  • 10. Lifeof a PV CreateVolume AttachVolume (to a Node) UnMountVolume (from Pod) MountVolume (to Pod and format if necessary) DetachVolume (from Node) DeleteVolume (after use) Storage Service PodPod PodPod PodPod
  • 11. ● Provisioning is the creation/allocation of Persistent Volumes ● Static and Dynamic Provisioning ○ Static: pre creation of PV ○ Dynamic: automatic creation of PV based on size, permissions requested. ● Dynamic Provisioning through Storage Classes ○ Provides a way for Admins to describe “classes” of storage available. Eg, different performance SLAs, value-add features such as replication, backup, etc ○ Backed by a provisioner PV Provisioning
  • 12. Provisioning Workflow (static) 1. Cluster Admin pre-provisions volumes and registers PVs 2. Developer claims a PV from the pool 4. Developer references the claim in a Pod 3. Controller BINDS PV to PVC Pool of Persistent Volumes NFS PV iSCSI PV EBS PV Claim `Claim ClaimClaim Pod Claim 5. Controller inspects Claim and MOUNTs the PV into the Pod.
  • 13. Provisioning Workflow (dynamic) 1. Cluster Admin registers Storage Classes 2. Developer defines a claim by referring a storage class 5. Developer references the claim in a Pod 4. Controller BINDS PV to PVC 6. Controller inspects Claim and MOUNTs the PV into the Pod. SSD Pod Claim Claim Persistent Volumes Storage Classes Slow Fast 3. Controller provisions volumes on-demand
  • 14. • In-tree volume plugins • Flexvolume plugins • CSI plugins • External provisioners Persistent storage interfaces
  • 15. Plugin Type Pros Cons Future InTree No extra installation necessary Release cycles tied to k8s releases Superseded by CSI External Provisioner Code maintained independently Limited customization for attach and mount ops Superseded by CSI FlexVolume Customizable code for attach/mount maintained independently Host based exec model reduces portability. Plugin lifecycle is non- native to k8s. Deprecated for Linux Will be used for Windows CSI Highly customizable code maintained independently and based on standard Requires installation and configuration The future of storage plugins Persistent Storage Interfaces
  • 17. Considerations for Windows q Disk device and Volume enumeration interfaces o Object based (rather than file based) q File System support o NTFS for block o SMB for shared q Powershell cmdlets/scripts for many actions
  • 18. In-tree storage support for Windows q Core support in kubelet.exe to: o Partition disk and format volumes with NTFS o Link volumes to container's file system o Link SMB shares to container's file system
  • 19. In-tree plugins for Windows q File based cloud volumes: o Azure File through SMB q Block based cloud volumes with attach support: o Azure Disk o GCE PD o EBS [WIP]
  • 20. In tree Plugin Architecture Worker Worker Master Storage Service Kubelet Kubelet AttachVolum e DetachVolu me CreateVolum e DeleteVolum e Kube Core Components MountVolume UnmountVolume AttachVolume DetachVolume CreateVolume Delete Volume In-tree Plugins PV Claim API Server
  • 21. Demo 1: In-tree storage with Azure File Worker Worker Master Azure File Storage
  • 22. Flexvolume plugins for Windows q Attach/mount pre-provisioned volumes over: o SMB (shared file system) o iSCSI (dedicated block) q Dynamic provisioning with external provisioners: o Set PV source to supported Flexvolume plugins
  • 23. ExternalProvisionerArchitecture Worker Worker Master Storage Service Kubelet Kubelet External Provisioner (StatefulSet/Deployment Pod) Kube Core Components External components API Server MountVolume UnmountVolume AttachVolume DetachVolume CreateVolume Delete Volume In-tree Plugins PV Claim PV FlexVolume Plugin
  • 24. Demo 2: External Provisioning + iSCSI Worker Worker Master ISCSI Target Server iSCSI LUN
  • 25. CSI plugins for Windows q CSI support for Windows is a Work in Progress. q No privileged support for containers in Windows yet q Options for deploying plugin o Host process o Container with privileged host-based proxy
  • 26. Summary q In-tree and Flexvolume plugins ready to be used. q External provisioners coming soon. q CSI plugins for Windows node plugins in future.
  • 27. What's next Support for Windows workloads in Kubernetes clusters coming in Docker Enterprise Tech Preview!!
  • 30. CSI node plugins as host process q Plugin process runs directly on host q Handles plugin registration with kubelet o Cannot use node driver registrar sidecar o Other side cars can be scheduled on Linux masters. q Independent life-cycle and log management
  • 31. CSI node plugins as container q Plugin process packaged and deployed as containers q Use node driver registrar for plugin registration q Life-cycle and log management through Kubernetes q Requires a privileged proxy in host for operations
  • 32. CSIPlugins Worker Worker Storage Service Kubelet Kubelet External Provisioner (Deployment/ StatefulSet) CreateVolume DeleteVolume External Attacher (Deployment/ StatefulSet) CSI Controller (Deployment/ StatefulSet) CSI Node (DaemonSet) Kube Core Components Kube Sidecar containers CSI plugin components ControllerPublish ControllerUnPublish Master API Server NodeStage/NodeUnstage NodePublish/NodeUnpublish PV PV Claim volume attachment CSI InTree