Orchestration Software

When developing and testing container images, stand-alone docker images are often sufficient to meet these needs. When it’s time to deploy these container images, container orchestration software will likely be required. Container orchestration provides the following benefits:

  • improved portability

  • improved scalability

  • simplified QAT resource allocation

This section describes QAT usage within Orchestration Software framework.

Clone intel device plugin:

git clone https://github.com/intel/intel-device-plugins-for-kubernetes

Start container with kubectl:

kubectl -n <namespace> apply -k intel-device-plugins-for-kubernetes/deployments/qat_plugin/overlays/e2e/

This could fail if hardware is not configured properly. Ensure system pre-requisites are installed properly

Check if QAT pods are up and running:

kubectl get pods -A | grep qat
default       intel-qat-plugin-e2e-5b4bg         1/1     Running       0          192d
default       intel-qat-plugin-e2e-6bdzb         1/1     Running       37         192d
default       intel-qat-plugin-e2e-dkvsr         1/1     Running       9          192d

This is example output when intel-device-plugins-for-kubernetes is deployed to default namespace on 3 compute nodes in a kubernetes cluster. Pods might be in pending state initially but must be in running state before deploying application.

Log messages can be used to check for additional errors:

kubectl -n <namespace> logs  <intel-qat_pod>

Verify QAT resources are available:

kubectl get nodes -o json | jq .items[].status.allocatable | grep qat
"qat.intel.com/cy": "64",
"qat.intel.com/dc": "64"
"qat.intel.com/cy": "64",
"qat.intel.com/dc": "64"
"qat.intel.com/cy": "64",
"qat.intel.com/dc": "64"

Example of 64 cy and 64 dc resources available on each of 3 compute nodes.

If we need to delete, the following command can be used:

kubectl -n <namespace> delete  -k intel-device-plugins-for-kubernetes/deployments/qat_plugin/overlays/e2e/

QAT Resource Allocation

With the orchestration (QAT device plugin), the workload owner specifies how many dc and how many cy VFs each container needs.

The plugin has two different allocation policies which guide the plugin to allocate VFs.

  • packed - VFs are obtained from one PF

  • balanced - VFs are spread across PFs