Skip to content

Commit

Permalink
Clarify init container name and reqs
Browse files Browse the repository at this point in the history
Signed-off-by: Mike McKiernan <[email protected]>
  • Loading branch information
mikemckiernan committed Jan 31, 2024
1 parent 0532b4c commit 06f0831
Showing 1 changed file with 19 additions and 31 deletions.
50 changes: 19 additions & 31 deletions gpu-operator/install-gpu-operator-service-mesh.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,15 @@ Install GPU Operator with Service Mesh
Special Considerations for Service Meshes
*****************************************

This page describes how to successfully deploy the NVIDIA GPU Operator in clusters that use service meshes such as
Istio and Linkerd.
You can use NVIDIA GPU Operator in a cluster that uses a service mesh provided by Istio CNI or Linkerd CNI.

The typical consideration for using the Operator with a service mesh is that the init container
for the ``driver`` container needs to download several OS packages prior to driver installation.
The typical consideration for using the Operator with a service mesh is that the ``k8s-driver-manager`` init container
for the ``driver`` container needs network access to the Kubernetes API server of the cluster.

The Istio CNI plugin and Linkerd CNI plugin can cause networking connectivity problems with application init containers.
To address the connectivity problems, NVIDIA recommends disabling injection for the GPU Operator namespace.
The data plane---implemented by Istio CNI or Linkerd CNI as proxies running as sidecar containers---must be running for any pod networking to work.
The proxy sidecar containers start only after the init phase of the pod, so init containers are not able to communicate with the API server.

To address the connectivity challenge, NVIDIA recommends disabling injection for the GPU Operator namespace.
Refer to the following documentation for more information:

- `Controlling the injection policy <https://istio.io/latest/docs/setup/additional-setup/sidecar-injection/#controlling-the-injection-policy>`_
Expand All @@ -46,36 +47,23 @@ Refer to the following documentation for more information:
in the Linkerd documentation.


***************************************
Deploy GPU Operator with a Service Mesh
***************************************

#. Create the GPU Operator namespace:

.. code-block:: console
$ kubectl create namespace gpu-operator
#. Label the Operator namespace to prevent automatic injection:

.. code-block:: console
$ kubectl label namespace gpu-operator istio-injection=disabled
****************************************
Label the Namespace to Disable Injection
****************************************

Or, for Linkerd:
- Label the Operator namespace to prevent automatic injection:

.. code-block:: console
.. code-block:: console
$ kubectl label namespace gpu-operator linkerd.io/inject=disabled
$ kubectl label namespace gpu-operator istio-injection=disabled
Or, for Linkerd:

#. Install the Operator with Helm:
.. code-block:: console
.. code-block:: console
$ kubectl label namespace gpu-operator linkerd.io/inject=disabled
$ helm install --wait --generate-name \
-n gpu-operator --create-namespace \
nvidia/gpu-operator
Refer to the common :doc:`installation <getting-started>` documentation
for information about custom options and common installation scenarios.
If the GPU Operator is not already installed, refer to
:doc:`getting-started`
for information about custom options and common installation scenarios.

0 comments on commit 06f0831

Please sign in to comment.