From f1b462b12353df8c4467aec2ace251c7424c9078 Mon Sep 17 00:00:00 2001 From: Renaud Gaubert Date: Thu, 20 Jul 2017 16:25:56 -0700 Subject: [PATCH] Addressed comments, added protocol overview, explained impl differences --- .../device-plugin-overview.png | Bin 0 -> 54109 bytes .../design-proposals/device-plugin.md | 328 +++++++++++++----- .../design-proposals/device-plugin.png | Bin 61264 -> 46612 bytes 3 files changed, 238 insertions(+), 90 deletions(-) create mode 100644 contributors/design-proposals/device-plugin-overview.png diff --git a/contributors/design-proposals/device-plugin-overview.png b/contributors/design-proposals/device-plugin-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..5fa1168676ffa05240f6a04d5100bbec2497a198 GIT binary patch literal 54109 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 Oke5-GE|Yrl^8Ww<_)wAn literal 0 HcmV?d00001 diff --git a/contributors/design-proposals/device-plugin.md b/contributors/design-proposals/device-plugin.md index 2f73c9324..a2c42569a 100644 --- a/contributors/design-proposals/device-plugin.md +++ b/contributors/design-proposals/device-plugin.md @@ -3,30 +3,31 @@ Device Manager Proposal -- [Motivation](#motivation) -- [Use Cases](#use-cases) -- [Objectives](#objectives) -- [Non Objectives](#non-objectives) -- [Proposed Implementation 1](#proposed-implementation-1) - - [Vendor story](#vendor-story) - - [End User story](#end-user-story) - - [Device Plugin](#device-plugin) - - [Introduction](#introduction) - - [Registration](#registration) - - [Unix Socket](#unix-socket) - - [Protocol Overview](#protocol-overview) - - [Protobuf specification](#protobuf-specification) -- [Proposed Implementation 2](#proposed-implementation-2) - - [Device Plugin Lifecycle](#device-plugin-lifecycle) - - [Protobuf API](#protobuf-api) - - [Failure recovery](#failure-recovery) - - [Roadmap](#roadmap) - - [Open Questions](#open-questions-1) -- [Installation](#installation) -- [Versioning](#versioning) - - [References](#references) - - +* [Motivation](#motivation) +* [Use Cases](#use-cases) +* [Objectives](#objectives) +* [Non Objectives](#non-objectives) +* [Proposed Implementation 1](#proposed-implementation-1) + * [Vendor story](#vendor-story) + * [End User story](#end-user-story) + * [Device Plugin](#device-plugin) + * [Introduction](#introduction) + * [Registration](#registration) + * [Unix Socket](#unix-socket) + * [Protocol Overview](#protocol-overview) + * [Protobuf specification](#protobuf-specification) + * [HealthCheck and Failure Recovery](#healthcheck-and-failure-recovery) + * [API Changes](#api-changes) + * [Upgrading your cluster](#upgrading-your-cluster) +* [Proposed Implementation 2](#proposed-implementation-2) + * [Device Plugin Lifecycle](#device-plugin-lifecycle) + * [Protobuf API](#protobuf-api) + * [Failure recovery](#failure-recovery) + * [Roadmap](#roadmap) + * [Open Questions](#open-questions-1) +* [Installation](#installation) +* [Versioning](#versioning) +* [References](#references) _Authors:_ @@ -48,7 +49,7 @@ This document describes a vendor independant solution to: * Discovering and representing external devices * Making these devices available to the containers using these devices and cleaning them up afterwards - * Monitoring these devices + * Health Check of these devices Because devices are vendor dependant and have their own sets of problems and mechanisms, the solution we describe is a plugin mechanism that may run @@ -85,33 +86,43 @@ the following simple steps: 1. Advanced scheduling and resource selection (solved through [#782](https://github.com/Kubernetes/community/pull/782)). - We will only try to give basic selection primitives to the devices -2. Metrics: this should be the job of cadvisor and should probably either be - addressed there (cadvisor) or if people feel there is a case to be made - for it being addressed in the Device Plugin, in a follow up proposal. +2. Collecting metrics is not part of this proposal. We will only solve + Health Check. # Proposed Implementation 1 +## TLDR + +At their core, device plugins are simple gRPC servers that may run in a +container deployed through the pod mechanism. + +These servers implement the gRPC interface defined later in this design +document and once the device plugin makes itself known to kubelet, kubelet +will interact with the device through three simple functions: + 1. A `ListDevices` function for the kubelet to Discover the devices and + their properties. + 2. An `Allocate` function which is called before container creation + 3. A `HealthCheck` function to notify Kubelet whenever a device becomes + unhealthy. + +![Process](device-plugin-overview.png) + ## Vendor story Kubernetes provides to vendors a mechanism called device plugins to: * advertise devices. * monitor devices (currently perform health checks). - * hook into the runtime to instruct Kubelet what are the steps to - take in order to make the device available (or cleanup the device). + * hook into the runtime to execute device specific instructions + (e.g: Clean GPU memory) and instruct Kubelet what are the steps + to take in order to make the device available in the container. -A device plugin at it's core is a simple gRPC server usually running in -a container and deployed across clusters through a daemonSet. - -```gRPC +```go service DevicePlugin { - rpc Discover(Empty) returns (stream Device) {} - rpc Monitor(Empty) returns (stream DeviceHealth) {} + rpc ListDevices(Empty) returns (stream Device) {} + rpc HealthCheck(Empty) returns (stream Device) {} rpc Allocate(AllocateRequest) returns (AllocateResponse) {} - rpc Deallocate(DeallocateRequest) returns (Empty) {} } - ``` The gRPC server that the device plugin must implement is expected to @@ -120,44 +131,44 @@ be advertised on a unix socket in a mounted hostPath (e.g: Finally, to notify Kubelet of the existence of the device plugin, the vendor's device plugin will have to make a request to Kubelet's -onwn gRPC server. +own gRPC server. Only then will kubelet start interacting with the vendor's device plugin through the gRPC apis. ## End User story -When setting up the cluster the admin knows what kind of devices are present -on the different machines and therefore can select what devices they want to +When setting up the cluster the admins knows what kind of devices are present +on the different machines and therefore can select what devices he want to enable. The cluster admins knows his cluster has NVIDIA GPUs therefore he deploys the NVIDIA device plugin through: -`kubectl create -f NVIDIA.io/device-plugin.yml` +`kubectl create -f nvidia.io/device-plugin.yml` The device plugin lands on all the nodes of the cluster and if it detects that there are no GPUs it terminates. However, when there are GPUs it reports them -to Kubelet. -For device plugins reporting non-GPU Devices these are advertised as -OIRs and selected through the same method. +to Kubelet and starts it's gRPC server to monitor devices and hook into the +container creation process. -1. A user submits a pod spec requesting X GPUs (or devices) +Device Plugins reporting non-GPU Devices are advertised as OIRs of the shape +`extensions.kubernetes.io/vendor-device` GPUs are advertised as `nvidia-gpu`. +Devices can be selected using the same process as for OIRs in the pod spec. + +1. A user submits a pod spec requesting X GPUs (or devices) through OIR 2. The scheduler filters the nodes which do not match the resource requests 3. The pod lands on the node and Kubelet decides which device should be assigned to the pod 4. Kubelet calls `Allocate` on the matching Device Plugins 5. The user deletes the pod or the pod terminates -6. Kubelet calls `Deallocate` on the matching Device Plugins When receiving a pod which requests Devices kubelet is in charge of: - * deciding which device to assign to the pod's containers (this will - change in the future) - * advertising the changes to the node's `Available` list - * advertising the changes to the pods's `Allocated` list + * deciding which device to assign to the pod's containers + * Note: This will be decided in the future at the scheduler level as + part of the Resource Class proposal * Calling the `Allocate` function with the list of devices -The scheduler is still be in charge of filtering the nodes which cannot +The scheduler is still in charge of filtering the nodes which cannot satisfy the resource requests. -He might in the future be in charge of selecting the device. ## Device Plugin @@ -165,13 +176,16 @@ He might in the future be in charge of selecting the device. The device plugin is structured in 5 parts: 1. Registration: The device plugin advertises it's presence to Kubelet -2. Discovery: Kubelet calls the device plugin to list it's devices -3. Allocate / Deallocate: When creating/deleting containers requesting the - devices advertised by the device plugin, Kubelet calls the device plugin's - `Allocate` and `Deallocate` functions. -4. Cleanup: Kubelet terminates the communication through a "Stop" -5. Heartbeat: The device plugin polls Kubelet to know if it's still alive - and if it has to re-issue a Register request +2. ListDevices: Kubelet calls the device plugin to list it's devices +3. HealthCheck: The device plugin returns a stream on which it writes when + a device's health changes +4. Allocate: When creating containers, Kubelet calls the device plugin's + `Allocate` function so that it can run device specific instructions (gpu + cleanup, QRNG initialization, ...) and instruct Kubelet how to make the + device available in the container. +5. Heartbeat: The device plugin polls every 5s Kubelet to know if it's still + alive and if it has to re-issue a Register request (e.g: Kubelet crashed + between two heartbeats) ### Registration @@ -183,7 +197,7 @@ sockets and follow this simple pattern: 1. The device plugins starts it's gRPC server 2. The device plugins sends a `RegisterRequest` to Kubelet (through a gRPC request) -4. Kubelet starts it's Discovery phase and calls `Discover` and `Monitor` +4. Kubelet starts it's Discovery phase and calls `ListDevices` and `HealthCheck` 5. Kubelet answers to the `RegisterRequest` with a `RegisterResponse` containing any error Kubelet might have encountered @@ -192,7 +206,7 @@ sockets and follow this simple pattern: Device Plugins are expected to communicate with Kubelet through gRPC on an Unix socket. When starting the gRPC server, they are expected to create a unix socket -at the following host path: `/var/run/Kubernetes`. +at the following host path: `/var/run/kubernetes`. For non bare metal device plugin this means they will have to mount the folder as a volume in their pod spec ([see Installation](##installation)). @@ -217,12 +231,10 @@ not there was an error. The errors may include (but not limited to): * Vendor is not consistent across discovered devices Kubelet will then interact with the plugin through the following functions: - * `Discover`: List Devices - * `Monitor`: Returns a stream that is written to when a - Device becomes unhealty + * `ListDevices`: List Devices + * `HealthCheck`: Returns a stream that is written to when a Device becomes + unhealty * `Allocate`: Called when creating a container with a list of devices - can request changes to the Container config - * `Deallocate`: Called when deleting a container can be used for cleanup The device plugin is also expected to periodically call the `Heartbeat` function exposed by Kubelet and issue a `Registration` request when it either can't reach @@ -240,11 +252,10 @@ service PluginRegistration { } service DevicePlugin { - rpc Discover(Empty) returns (stream Device) {} - rpc Monitor(Empty) returns (stream DeviceHealth) {} + rpc ListDevices(Empty) returns (stream Device) {} + rpc HealthCheck(Empty) returns (stream Device) {} rpc Allocate(AllocateRequest) returns (AllocateResponse) {} - rpc Deallocate(DeallocateRequest) returns (Empty) {} } message RegisterRequest { @@ -262,7 +273,7 @@ message RegisterResponse { string version = 1; // Kubelet fills this field if it encounters any errors // during the registration process or discover process - Error error = 2; + string error = 2; } message HeartbeatRequest { @@ -274,7 +285,7 @@ message HeartbeatResponse { // plugin to either re-register itself or not string response = 1; // Kubelet fills this field if it encountered any errors - Error error = 2; + string error = 2; } message AllocateRequest { @@ -288,26 +299,17 @@ message AllocateResponse { repeated Mount mounts = 2; } -message DeallocateRequest { - repeated Device devices = 1; -} - -message Error { - bool error = 1; - string reason = 2; -} - // E.g: // struct Device { // Kind: "NVIDIA-gpu" -// Name: "GPU-fef8089b-4820-abfc-e83e-94318197576e" +// Name: "GPU-fef8089b-4820-abfc-e83e-94318197576e", +// Health: "Healthy", // Properties: { // "Family": "Pascal", // "Memory": "4G", // "ECC" : "True", // } //} -// message Device { string Kind = 1; string Name = 2; @@ -315,15 +317,161 @@ message Device { string Vendor = 4; map properties = 5; // Could be [1, 1.2, 1G] } +``` -message DeviceHealth { - string Name = 1; - string Kind = 2; - string Vendor = 4; - string Health = 3; +### HealthCheck and Failure Recovery + +We want Kubelet as well as the Device Plugins to recover from failures +that may happen on any side of this protocol. + +At the communication level, gRPC is a very strong piece of software and +is able to ensure that if failure happens it will try it's best to recover +through exponential backoff reconnection. + +The proposed mechanism intends to replace any device specific handling in +Kubelet. Therefore in general, device plugin failure or upgrade means that +Kubelet is not able to accept any pod requesting a Device until the upgrade +or failure finishes. + +If a device fails, the Device Plugin should signal that through the HealthCheck +stream and we expect Kubelet to stop the pod and reschedule it. + +If any Device Plugin fails the behavior we expect depends on the task Kubelet +is performing: +* In general we expect Kubelet to remove any devices that are owned by the failed + device plugin from the resources advertised by the Node status. +* We however do not expect Kubelet to fail or restart any pods or containers + running that are using these devices. +* If Kubelet is in the process of allocating a device, then it should fail + the container process and reschedule the Pod. + +If the Kubelet fails or restarts, we expect the Device Plugins to know about +it through Kubelet's Heartbeat call which every Device Plugin should call +every 5s. + +When Kubelet fails or restarts it should know what are the devices that are +owned by the different containers and be able to rebuild a list of available +devices. +In the current design, instead of checkpointing this data, we propose to save +this in the API server as this gives introspection capabilities to the user +has minimal impact on performances and is a minimal change that can be +reverted if we decide to implement checkpointing or a debug API later. + +If Kubelet failed and recovered between two Heartbeat we are expecting it +to answer with a HeartbeatKo answer. Signaling the device plugins to register +themselves again against the Kubelet (in case of heartbeat failure +or connection error). + +### API Changes + +When discovering the devices, Kubelet will be in charge of advertising those +resources to the API server as part of the kubelet node update current protocol. + +We will advertise each device returned by the Device Plugin in a new structure +called `Device`. +It is defined as follows: + +```golang +// E.g: +// struct Device { +// Kind: "NVIDIA-gpu" +// Name: "GPU-fef8089b-4820-abfc-e83e-94318197576e" +// Health: "Healthy", +// Properties: { +// "Family": "Pascal", +// "Memory": "4G", +// "ECC" : "True", +// } +//} +type Device struct { + Kind string + Vendor string + Name string + Health DeviceHealthStatus + Properties map[string]string } ``` +Because the current API (Capacity) can not be extended to support Device, +we will need to create one new attribute in the NodeStatus structure: + * `DevCapacity`: Describing the device capacity of the node + +```golang +type NodeStatus struct { + DevCapacity []Device +} +``` + +We also introduce the `Devices` field in the Containers status so that user +can know what devices were assigned to the container. + +```golang +type ContainerStatus struct { + Devices []Device +} +``` + +Note that we will be using OIR to schedule and trigger the device plugin +in parallel. +So when a Device plugin registers two `foo-device` the node status will be +updated to advertise 2 `extensions.kubernetes.io/foo-device`. + +If a user wants to trigger the device plugin he only needs to request this +OIR in his Pod Spec. + +## Upgrading your cluster + +TLDR: If you are upgrading either Kubelet or any device plugin the safest way +is to drain the node of all pods and upgrade. +However depending on what you are upgrading and what changes happened then it +is completely possible to only restart just Kubelet or just the device plugin. + +### Upgrading Kubelet + +This assumes that the Device Plugins running on the nodes fully implement the +protocol and are able to recover from a Kubelet crash. + +Then, as long as the Device Plugin API does not change upgrading Kubelet can be done +seamlessly through a Kubelet restart. + +However, as mentioned in the Versioning section, we currently expect the Device +Plugin's API version to match exactly the Kubelet's Device Plugin API version. + +Therefore if the Device Plugin API version change then you will have to change +the Device Plugin too. +Consider draining the node in that case. + +When the Device Plugin API becomes a stable feature, versionning should be +backward compatible and even if Kubelet has a different Device Plugin API, +it should not require a Device Plugin upgrade. + +### Upgrading Device Plugins + +Because we cannot enforce what the different Device Plugins will do, we cannot +say for certain that upgrading a device plugin will not crash any containers +on the node. + +It is therefore up to the Device Plugin vendors to specify if the Device Plugins +can be upgraded without impacting any running containers. + +As mentioned earlier, the safest way is to drain the node before upgrading +the Device Plugins. + +## Difference Between Implementations + +The main difference between implementation 1 and 2 are: +* This implementation allows vendors to run device specific code before + starting the containers requesting these devices. +* This implementation allows users to know what devices were assigned + to a container +* This implementation does not need checkpointing +* This implementation has a clear separation of concerns, every functions + does one thing and only one. Every actor has only one explicit role: + * Kubelet's gRPC is in charge of keeping track of Device Plugins + * The Device Plugin's gRPC is in charge of handling devices + + + # Proposed Implementation 2 The main strategy of this proposed implemenation is that we want to start with @@ -636,7 +784,7 @@ Negotiation would take place in the registration: 4. If the Device Plugin supports the version sent by Kubelet it can and should answer the different calls made by Kubelet -## References +# References * [Enable "kick the tires" support for NVIDIA GPUs in COS](https://github.com/Kubernetes/Kubernetes/pull/45136) * [Extend experimental support to multiple NVIDIA GPUs](https://github.com/Kubernetes/Kubernetes/pull/42116) diff --git a/contributors/design-proposals/device-plugin.png b/contributors/design-proposals/device-plugin.png index 160e1d108d54e57449110414bb227227aa17ff6f..806f89d0b7909e1a350c1b3248a336fe48cd50ad 100644 GIT binary patch literal 46612 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 literal 61264 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ⅇ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 D7mx$N