Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

To send a patch node request conveniently, start a proxy, so that you can easily send requests to the Kubernetes API server, we first execute kube proxy command to command to start it temporarily, then add six intel.com/devices resource to a node (~1 in the commands will automatically transform into /):

...

In this way, when creating a pod, fields such as intel.com/qat can be added to spec.containers.resource.limits/requests: "1" to inform Kubernetes to schedule the pod to nodes with more than one intel.com/qat resource allowance. When the pod is to run, Kubelet will call device plugin allocate function. Device plugin may do some initialization operations, such as QAT configuration or QRNG initialization. If initialization is successful, this function will return how to config the device assigned to the pod when the container is created, and this configuration will be passed to the container runtime as a parameter used to run container.

User Flow

...

To use the extend resource, we add intel.com/qat to spec.containers.resource.limits/requests, we expect the request to have limits == requests.

  1. A user submits a pod spec requesting 1 QAT through intel.com/qat
  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

When receiving a pod which requests devices, Kubelet is in charge of:

  • Deciding which device to assign to the pod's containers
  • Calling the Allocate function with the list of devices

The Kubernetes scheduler is in charge of filtering the nodes which cannot satisfy the resource requests.

Enable QAT supported by virtlet

...

Gaps detection in source code

When testing the qat sriov support condition with the officer virtlet image, 

Fix


Example