mirror of
https://github.com/openshift/openshift-docs.git
synced 2026-02-05 12:46:18 +01:00
149 lines
4.0 KiB
Plaintext
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.
|