From cda66f4068cbe76baecc81d23d27567f32c188cc Mon Sep 17 00:00:00 2001 From: Anthony Ramirez Date: Thu, 2 Jul 2026 14:03:00 -0400 Subject: [PATCH 1/4] Create explicit examples for scheduling on Marble and Onyx with a given filesystem mount. Update examples in mount_fs.rst and job_submit.rst --- .../access_olcf_resources/job_submit.rst | 51 +++++++++- .../slate/access_olcf_resources/mount_fs.rst | 92 +++++++++++++++++-- 2 files changed, 130 insertions(+), 13 deletions(-) diff --git a/services_and_applications/slate/access_olcf_resources/job_submit.rst b/services_and_applications/slate/access_olcf_resources/job_submit.rst index 64782b10..22383a21 100644 --- a/services_and_applications/slate/access_olcf_resources/job_submit.rst +++ b/services_and_applications/slate/access_olcf_resources/job_submit.rst @@ -2,6 +2,8 @@ Batch Job Submission #################### +Overview +======== Batch job submission from containers is designed to work exactly like on a login node for the cluster. The workload will need to be annotated in order to get the @@ -11,8 +13,8 @@ necessary configuration injected at runtime. :header: "Cluster", "Annotation", "Value", "Schedulers" :widths: 5, 10, 5, 5 - "Marble", "ccs.ornl.gov/batchScheduler", "true", "Slurm, LSF" - "Onyx", "ccs.ornl.gov/batchScheduler", "true", "LSF" + "Marble", "ccs.ornl.gov/batchScheduler", "true", "Slurm" + "Onyx", "ccs.ornl.gov/batchScheduler", "true", "Slurm" You can add the required annotations to any workload object such as a Pod, Deployment, or a DeploymentConfig. Submitting a batch job from a container requires access to @@ -23,15 +25,52 @@ the OLCF shared filesystems so that annotation is also included. metadata: annotations: ccs.ornl.gov/batchScheduler: "true" - ccs.ornl.gov/fs: olcf + ccs.ornl.gov/fs: orion +Example Deployment +================== + Full example of a deployment using a base image provided by OLCF. .. note:: Batch job submission from containers uses SSH to access the submission host. If you use your own image you must install the **openssh client** package in your image. + +Marble +------ + +.. code:: yaml + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: test-jobsubmit + annotations: + ccs.ornl.gov/batchScheduler: "true" + ccs.ornl.gov/fs: orion + spec: + replicas: 1 + selector: + matchLabels: + app: test-jobsubmit + template: + metadata: + labels: + app: test-jobsubmit + spec: + containers: + - name: test-jobsubmit + image: "image-registry.openshift-image-registry.svc:5000/openshift/ccs-rhel7-base-amd64:latest" + args: + - cat + stdin: true + stdinOnce: true + +Onyx +---- + .. code:: yaml apiVersion: apps/v1 @@ -40,7 +79,7 @@ Full example of a deployment using a base image provided by OLCF. name: test-jobsubmit annotations: ccs.ornl.gov/batchScheduler: "true" - ccs.ornl.gov/fs: olcf + ccs.ornl.gov/fs: wolf2 spec: replicas: 1 selector: @@ -59,6 +98,10 @@ Full example of a deployment using a base image provided by OLCF. stdin: true stdinOnce: true + +Additional Information +====================== + The annotation will install wrappers into /usr/bin: Slurm diff --git a/services_and_applications/slate/access_olcf_resources/mount_fs.rst b/services_and_applications/slate/access_olcf_resources/mount_fs.rst index ab326657..a81ad64e 100644 --- a/services_and_applications/slate/access_olcf_resources/mount_fs.rst +++ b/services_and_applications/slate/access_olcf_resources/mount_fs.rst @@ -2,6 +2,9 @@ Mount OLCF Filesystems ###################### +Overview +======== + OLCF shared filesystems can be mounted into a container running in Slate. The mountpoints will be the same as a cluster node. The Kubernetes object will need to be annotated in order to get the necessary configuration injected into the container at runtime. @@ -10,50 +13,117 @@ to get the necessary configuration injected into the container at runtime. :header: "Cluster", "Annotation", "Value", "Mounts" :widths: 5, 8, 5, 25 - "Marble", "ccs.ornl.gov/fs", "alpine2", "/ccs/sw, /ccs/home, /ccs/sys, /ccs/proj, /gpfs/alpine2" "Marble", "ccs.ornl.gov/fs", "orion", "/ccs/sw, /ccs/home, /ccs/sys, /ccs/proj, /lustre/orion" "Marble", "ccs.ornl.gov/fs", "kronos", "/ccs/sw, /ccs/home, /ccs/sys, /ccs/proj, /nl/kronos" "Onyx", "ccs.ornl.gov/fs", "themis", "/ccsopen/sw, /ccsopen/home, /ccsopen/proj, /nl/themis" "Onyx", "ccs.ornl.gov/fs", "wolf2", "/ccsopen/sw, /ccsopen/home, /ccsopen/proj, /gpfs/wolf2" -For each of the following examples, replace "ccs.ornl.gov/fs=olcf" or "ccs.ornl.gov/fs: olcf" with an annotation from the above list. - If you already have a Deployment running you can add the annotation with the client .. code:: bash - oc annotate deployment web ccs.ornl.gov/fs=olcf + oc annotate deployment web ccs.ornl.gov/fs=orion + +.. code:: bash + + # or, on Onyx + + oc annotate deployment web ccs.ornl.gov/fs=wolf2 .. warning:: You cannot annotate an existing pod because the injection happens at pod creation time .. pull-quote:: - Annotating a pod not managed by a deployment with ``oc annotate pod test ccs.ornl.gov/fs=olcf`` + Annotating a pod not managed by a deployment with ``oc annotate pod test ccs.ornl.gov/fs=[orion,wolf2]`` will not work. Instead delete the pod and add the annotation to the metadata and recreate it. +Examples +======== + +General +------- + You can also add the annotations to any workload object's YAML such as a Pod, Deployment, or DeploymentConfig. +Marble +^^^^^^ + .. code:: yaml kind: Deployment metadata: annotations: - ccs.ornl.gov/fs: olcf + ccs.ornl.gov/fs: orion --- kind: DeploymentConfig metadata: annotations: - ccs.ornl.gov/fs: olcf + ccs.ornl.gov/fs: orion --- kind: Pod metadata: annotations: - ccs.ornl.gov/fs: olcf + ccs.ornl.gov/fs: orion + +Onyx +^^^^ + +.. code:: yaml + + kind: Deployment + metadata: + annotations: + ccs.ornl.gov/fs: wolf2 + --- + kind: DeploymentConfig + metadata: + annotations: + ccs.ornl.gov/fs: wolf2 + --- + kind: Pod + metadata: + annotations: + ccs.ornl.gov/fs: wolf2 + +Deployment Example +------------------ Full example of a deployment mounting the OLCF shared filesystems: +Marble +^^^^^^ + +.. code:: yaml + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: test-fs + annotations: + ccs.ornl.gov/fs: orion + spec: + replicas: 1 + selector: + matchLabels: + app: test-fs + template: + metadata: + labels: + app: test-fs + spec: + containers: + - name: test-fs + image: busybox:latest + args: + - cat + stdin: true + stdinOnce: true + +Onyx +^^^^ + .. code:: yaml apiVersion: apps/v1 @@ -61,7 +131,7 @@ Full example of a deployment mounting the OLCF shared filesystems: metadata: name: test-fs annotations: - ccs.ornl.gov/fs: olcf + ccs.ornl.gov/fs: wolf2 spec: replicas: 1 selector: @@ -80,6 +150,10 @@ Full example of a deployment mounting the OLCF shared filesystems: stdin: true stdinOnce: true + +Additional Information +====================== + .. note:: There are no requirements in the container image in order to mount OLCF filesystems From a734355875d4e2b597abe74ce63f0cb264cf1707 Mon Sep 17 00:00:00 2001 From: Anthony Ramirez Date: Thu, 2 Jul 2026 14:04:20 -0400 Subject: [PATCH 2/4] Change verbiage for deployment example title --- .../slate/access_olcf_resources/job_submit.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services_and_applications/slate/access_olcf_resources/job_submit.rst b/services_and_applications/slate/access_olcf_resources/job_submit.rst index 22383a21..5e5eba1f 100644 --- a/services_and_applications/slate/access_olcf_resources/job_submit.rst +++ b/services_and_applications/slate/access_olcf_resources/job_submit.rst @@ -28,7 +28,7 @@ the OLCF shared filesystems so that annotation is also included. ccs.ornl.gov/fs: orion -Example Deployment +Deployment Example ================== Full example of a deployment using a base image provided by OLCF. From 7af71af94bdc45b27edcbdc15cec6c3761b3feb4 Mon Sep 17 00:00:00 2001 From: Anthony Ramirez Date: Thu, 2 Jul 2026 14:55:34 -0400 Subject: [PATCH 3/4] Change image to include openSSH client --- .../slate/access_olcf_resources/job_submit.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services_and_applications/slate/access_olcf_resources/job_submit.rst b/services_and_applications/slate/access_olcf_resources/job_submit.rst index 5e5eba1f..057f6bb6 100644 --- a/services_and_applications/slate/access_olcf_resources/job_submit.rst +++ b/services_and_applications/slate/access_olcf_resources/job_submit.rst @@ -62,7 +62,8 @@ Marble spec: containers: - name: test-jobsubmit - image: "image-registry.openshift-image-registry.svc:5000/openshift/ccs-rhel7-base-amd64:latest" + # this image was chosen because it has openSSH installed, please build your own image with openSSH for production use + image: "linuxserver/openssh-server:latest" args: - cat stdin: true @@ -92,7 +93,8 @@ Onyx spec: containers: - name: test-jobsubmit - image: "image-registry.openshift-image-registry.svc:5000/openshift/ccs-rhel7-base-amd64:latest" + # this image was chosen because it has openSSH installed, please build your own image with openSSH for production use + image: "linuxserver/openssh-server:latest" args: - cat stdin: true From 6b9cea54aaf69ab054f703b4f371bb2304639619 Mon Sep 17 00:00:00 2001 From: Anthony Ramirez Date: Thu, 2 Jul 2026 15:05:52 -0400 Subject: [PATCH 4/4] Change command to avoid typical container init procedures. --- .../slate/access_olcf_resources/job_submit.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services_and_applications/slate/access_olcf_resources/job_submit.rst b/services_and_applications/slate/access_olcf_resources/job_submit.rst index 057f6bb6..7c13c464 100644 --- a/services_and_applications/slate/access_olcf_resources/job_submit.rst +++ b/services_and_applications/slate/access_olcf_resources/job_submit.rst @@ -64,10 +64,11 @@ Marble - name: test-jobsubmit # this image was chosen because it has openSSH installed, please build your own image with openSSH for production use image: "linuxserver/openssh-server:latest" + command: ["/bin/sh","-c"] args: - cat + tty: true stdin: true - stdinOnce: true Onyx ---- @@ -95,10 +96,11 @@ Onyx - name: test-jobsubmit # this image was chosen because it has openSSH installed, please build your own image with openSSH for production use image: "linuxserver/openssh-server:latest" + command: ["/bin/sh","-c"] args: - cat + tty: true stdin: true - stdinOnce: true Additional Information