1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00
Files
openshift-docs/modules/lws-config.adoc

149 lines
4.0 KiB
Plaintext

// Module included in the following assemblies:
//
// * ai_workloads/leader_worker_set/lws-managing.adoc
:_mod-docs-content-type: PROCEDURE
[id="lws-config_{context}"]
= Deploying a leader worker set
[role="_abstract"]
You can use the {lws-operator} to deploy a leader worker set to assist with managing distributed workloads across nodes.
.Prerequisites
* You have installed the {lws-operator}.
.Procedure
. Create a new project by running the following command:
+
[source,terminal]
----
$ oc new-project my-namespace
----
. Create a file named `leader-worker-set.yaml`
+
[source,yaml]
----
apiVersion: leaderworkerset.x-k8s.io/v1
kind: LeaderWorkerSet
metadata:
generation: 1
name: my-lws
namespace: my-namespace
spec:
leaderWorkerTemplate:
leaderTemplate:
metadata: {}
spec:
containers:
- image: nginxinc/nginx-unprivileged:1.27
name: leader
resources: {}
restartPolicy: RecreateGroupOnPodRestart
size: 3
workerTemplate:
metadata: {}
spec:
containers:
- image: nginxinc/nginx-unprivileged:1.27
name: worker
ports:
- containerPort: 8080
protocol: TCP
resources: {}
networkConfig:
subdomainPolicy: Shared
replicas: 2
rolloutStrategy:
rollingUpdateConfiguration:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
startupPolicy: LeaderCreated
----
+
where:
`metadata.name`::
Specifies the name of the leader worker set resource.
`metadata.namespace`::
Specifies the namespace for the leader worker set to run in.
`spec.leaderWorkerTemplate.leaderTemplate`::
Specifies the pod template for the leader pods.
`spec.leaderWorkerTemplate.restartPolicy`::
Specifies the restart policy for when pod failures occur. Allowed values are `RecreateGroupOnPodRestart` to restart the whole group or `None` to not restart the group.
`spec.leaderWorkerTemplate.size`::
Specifies the number of pods to create for each group, including the leader pod. For example, a value of `3` creates 1 leader pod and 2 worker pods. The default value is `1`.
`spec.leaderWorkerTemplate.workerTemplate`::
Specifies the pod template for the worker pods.
`spec.networkConfig.subdomainPolicy`::
Specifies the policy to use when creating the headless service. Allowed values are `UniquePerReplica` or `Shared`. The default value is `Shared`.
`spec.replicas`::
Specifies the number of replicas, or leader-worker groups. The default value is `1`.
`spec.rolloutStrategy.rollingUpdateConfiguration.maxSurge`::
Specifies the maximum number of replicas that can be scheduled above the `replicas` value during rolling updates. The value can be specified as an integer or a percentage.
+
For more information on all available fields to configure, see link:https://lws.sigs.k8s.io/docs/reference/leaderworkerset.v1/[LeaderWorkerSet API] upstream documentation.
. Apply the leader worker set configuration by running the following command:
+
[source,terminal]
----
$ oc apply -f leader-worker-set.yaml
----
.Verification
. Verify that pods were created by running the following command:
+
[source,terminal]
----
$ oc get pods -n my-namespace
----
+
.Example output
[source,terminal]
----
NAME READY STATUS RESTARTS AGE
my-lws-0 1/1 Running 0 4s
my-lws-0-1 1/1 Running 0 3s
my-lws-0-2 1/1 Running 0 3s
my-lws-1 1/1 Running 0 7s
my-lws-1-1 1/1 Running 0 6s
my-lws-1-2 1/1 Running 0 6s
----
+
** `my-lws-0` is the leader pod for the first group.
** `my-lws-1` is the leader pod for the second group.
. Review the stateful sets by running the following command:
+
[source,terminal]
----
$ oc get statefulsets
----
+
.Example output
[source,terminal]
----
NAME READY AGE
my-lws 4/4 111s
my-lws-0 2/2 57s
my-lws-1 2/2 60s
----
+
** `my-lws` is the leader stateful set for all leader-worker groups.
** `my-lws-0` is the worker stateful set for the first group.
** `my-lws-1` is the worker stateful set for the second group.