From b3483466c3bae805a7243805960ac93d54dc257c Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Wed, 1 Nov 2023 12:24:12 +0100 Subject: [PATCH 01/11] Document service restarts --- .../pages/operations/cluster_operations.adoc | 57 ++++++++++++++++++- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/modules/concepts/pages/operations/cluster_operations.adoc b/modules/concepts/pages/operations/cluster_operations.adoc index 027f0b19d..8954975d4 100644 --- a/modules/concepts/pages/operations/cluster_operations.adoc +++ b/modules/concepts/pages/operations/cluster_operations.adoc @@ -6,6 +6,8 @@ Stackable operators offer different cluster operations to control the reconcilia * `reconciliationPaused` - Stop the operator from reconciling the cluster spec. The status will still be updated. * `stopped` - Stop all running pods but keep updating all deployed resources like `ConfigMaps`, `Services` and the cluster status. +If not specified, `clusterOperation.reconciliationPaused` and `clusterOperation.stopped` default to `false`. + == Example [source,yaml] @@ -15,8 +17,57 @@ include::example$cluster-operations.yaml[] <1> The `clusterOperation.reconciliationPaused` flag set to `true` stops the operator from reconciling any changes to the cluster spec. The cluster status is still updated. <2> The `clusterOperation.stopped` flag set to `true` stops all pods in the cluster. This is done by setting all deployed `StatefulSet` replicas to 0. -== Notes - -If not specified, `clusterOperation.reconciliationPaused` and `clusterOperation.stopped` default to `false`. IMPORTANT: When setting `clusterOperation.reconciliationPaused` and `clusterOperation.stopped` to true in the same step, `clusterOperation.reconciliationPaused` will take precedence. This means the cluster will stop reconciling immediately and the `stopped` field is ignored. To avoid this, the cluster should first be stopped and then paused. + +== Service Restarts + +=== Manual Restarts + +Sometimes it is necessary to restart services deployed in Kubernetes. A service restart should induce as little disruption as possible, ideally none. + +Most operators create StatefulSet objects for the products they manage and Kubernetes offers rollout mechanism for this purpose. You can use `kubectl rollout restart statefulset` to restart a StatefulSet previously created by an operator. + +For example, an Airflow stack will have three ServiceSets created for it: `scheduler`, `webserver` and `worker`. So given the following stateful sets deployed for an Airflow stack: + +[source,shell] +---- +❯ kubectl get sts +NAME READY AGE +airflow-scheduler-default 1/1 61m +airflow-webserver-default 1/1 61m +airflow-worker-default 2/2 61m +postgresql-airflow 1/1 64m +redis-airflow-master 1/1 64m +redis-airflow-replicas 1/1 64m +---- + +To restart the Airflow scheduler, run: + +[source,shell] +---- +❯ kubectl rollout restart statefulset airflow-scheduler-default +statefulset.apps/airflow-scheduler-default restarted +---- + +Sometimes you want to restart all Pods of stack and not just individual roles. This can be achieved in a similar manner by using labels instead of StatefulSet names. Continuing with the example above, to restart all Airflow Pods you would have to run: + +[source,shell] +---- +❯ kubectl rollout restart statefulset --selector app.kubernetes.io/instance=airflow +---- + +To wait for all Pods to be running again you run: + +[source,shell] +---- +❯ kubectl rollout status statefulset --selector app.kubernetes.io/instance=airflow +---- + +Here we used the label `app.kubernetes.io/instance=airflow` to select all Pods that belong to a specific Airflow stack. This label is created by the operator and `airflow` is the name of the Airflow stack as specified in the custom resource. You can add more labels to make finer grained restarts. + +NOTE: When using Airflow's https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/executor/kubernetes.html[Kubernetes executor], `worker` Pods are created dynamically by DAGs when needed, this in general it's not necessary to restart them. + +== Automatic Restarts + +The Commons Operator of the Stackable Platform might restart Pods automatically, for example to ensure that security certificates are up-to-date. For details, see the xref:commons:index.adoc[Commons Operator documentation]. From b5781eb788ba379979763a343d8e5114c5f2d5bf Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Wed, 1 Nov 2023 12:45:18 +0100 Subject: [PATCH 02/11] Fix xref and some cleanup --- modules/concepts/pages/operations/cluster_operations.adoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/concepts/pages/operations/cluster_operations.adoc b/modules/concepts/pages/operations/cluster_operations.adoc index 8954975d4..c41296070 100644 --- a/modules/concepts/pages/operations/cluster_operations.adoc +++ b/modules/concepts/pages/operations/cluster_operations.adoc @@ -26,9 +26,9 @@ IMPORTANT: When setting `clusterOperation.reconciliationPaused` and `clusterOper Sometimes it is necessary to restart services deployed in Kubernetes. A service restart should induce as little disruption as possible, ideally none. -Most operators create StatefulSet objects for the products they manage and Kubernetes offers rollout mechanism for this purpose. You can use `kubectl rollout restart statefulset` to restart a StatefulSet previously created by an operator. +Most operators create `StatefulSet` objects for the products they manage and Kubernetes offers a rollout mechanism to restart them. You can use `kubectl rollout restart statefulset` to restart a StatefulSet previously created by an operator. -For example, an Airflow stack will have three ServiceSets created for it: `scheduler`, `webserver` and `worker`. So given the following stateful sets deployed for an Airflow stack: +For example, an Airflow stack will have three `ServiceSets` created for it: `scheduler`, `webserver` and `worker`. So given the following stateful sets deployed for an Airflow stack: [source,shell] ---- @@ -50,7 +50,7 @@ To restart the Airflow scheduler, run: statefulset.apps/airflow-scheduler-default restarted ---- -Sometimes you want to restart all Pods of stack and not just individual roles. This can be achieved in a similar manner by using labels instead of StatefulSet names. Continuing with the example above, to restart all Airflow Pods you would have to run: +Sometimes you want to restart all `Pods` of stack and not just individual roles. This can be achieved in a similar manner by using labels instead of `StatefulSet` names. Continuing with the example above, to restart all Airflow `Pods` you would have to run: [source,shell] ---- @@ -70,4 +70,4 @@ NOTE: When using Airflow's https://airflow.apache.org/docs/apache-airflow/stable == Automatic Restarts -The Commons Operator of the Stackable Platform might restart Pods automatically, for example to ensure that security certificates are up-to-date. For details, see the xref:commons:index.adoc[Commons Operator documentation]. +The Commons Operator of the Stackable Platform might restart Pods automatically, for example to ensure that security certificates are up-to-date. For details, see the xref:commons-operator:index.adoc[Commons Operator documentation]. From 26be25c63f899a6d1c495ae41ac9975df5eccbc9 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Wed, 1 Nov 2023 16:44:32 +0100 Subject: [PATCH 03/11] Update modules/concepts/pages/operations/cluster_operations.adoc Co-authored-by: Natalie --- modules/concepts/pages/operations/cluster_operations.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/concepts/pages/operations/cluster_operations.adoc b/modules/concepts/pages/operations/cluster_operations.adoc index c41296070..d95059bcf 100644 --- a/modules/concepts/pages/operations/cluster_operations.adoc +++ b/modules/concepts/pages/operations/cluster_operations.adoc @@ -70,4 +70,4 @@ NOTE: When using Airflow's https://airflow.apache.org/docs/apache-airflow/stable == Automatic Restarts -The Commons Operator of the Stackable Platform might restart Pods automatically, for example to ensure that security certificates are up-to-date. For details, see the xref:commons-operator:index.adoc[Commons Operator documentation]. +The Commons Operator of the Stackable Platform may restart Pods automatically, for purposes such as ensuring that security certificates are up-to-date. For details, see the xref:commons-operator:index.adoc[Commons Operator documentation]. From a2959abdee71f1af48fe4a5d82fae241f3e9f95f Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Wed, 1 Nov 2023 16:48:42 +0100 Subject: [PATCH 04/11] Update modules/concepts/pages/operations/cluster_operations.adoc Co-authored-by: Natalie --- modules/concepts/pages/operations/cluster_operations.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/concepts/pages/operations/cluster_operations.adoc b/modules/concepts/pages/operations/cluster_operations.adoc index d95059bcf..dce9dca8a 100644 --- a/modules/concepts/pages/operations/cluster_operations.adoc +++ b/modules/concepts/pages/operations/cluster_operations.adoc @@ -64,7 +64,7 @@ To wait for all Pods to be running again you run: ❯ kubectl rollout status statefulset --selector app.kubernetes.io/instance=airflow ---- -Here we used the label `app.kubernetes.io/instance=airflow` to select all Pods that belong to a specific Airflow stack. This label is created by the operator and `airflow` is the name of the Airflow stack as specified in the custom resource. You can add more labels to make finer grained restarts. +Here we used the label `app.kubernetes.io/instance=airflow` to select all Pods that belong to a specific Airflow stacklet. This label is created by the operator and `airflow` is the name of the Airflow stacklet as specified in the custom resource. You can add more labels to make finer grained restarts. NOTE: When using Airflow's https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/executor/kubernetes.html[Kubernetes executor], `worker` Pods are created dynamically by DAGs when needed, this in general it's not necessary to restart them. From c7942e9fb5fe102b0727dc5bbe79c08091569832 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Wed, 1 Nov 2023 16:55:04 +0100 Subject: [PATCH 05/11] Remove code quotes. --- modules/concepts/pages/operations/cluster_operations.adoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/concepts/pages/operations/cluster_operations.adoc b/modules/concepts/pages/operations/cluster_operations.adoc index dce9dca8a..a94206c92 100644 --- a/modules/concepts/pages/operations/cluster_operations.adoc +++ b/modules/concepts/pages/operations/cluster_operations.adoc @@ -26,9 +26,9 @@ IMPORTANT: When setting `clusterOperation.reconciliationPaused` and `clusterOper Sometimes it is necessary to restart services deployed in Kubernetes. A service restart should induce as little disruption as possible, ideally none. -Most operators create `StatefulSet` objects for the products they manage and Kubernetes offers a rollout mechanism to restart them. You can use `kubectl rollout restart statefulset` to restart a StatefulSet previously created by an operator. +Most operators create StatefulSet objects for the products they manage and Kubernetes offers a rollout mechanism to restart them. You can use `kubectl rollout restart statefulset` to restart a StatefulSet previously created by an operator. -For example, an Airflow stack will have three `ServiceSets` created for it: `scheduler`, `webserver` and `worker`. So given the following stateful sets deployed for an Airflow stack: +For example, an Airflow stack will have three ServiceSets created for it: `scheduler`, `webserver` and `worker`. So given the following stateful sets deployed for an Airflow stacklet: [source,shell] ---- @@ -50,7 +50,7 @@ To restart the Airflow scheduler, run: statefulset.apps/airflow-scheduler-default restarted ---- -Sometimes you want to restart all `Pods` of stack and not just individual roles. This can be achieved in a similar manner by using labels instead of `StatefulSet` names. Continuing with the example above, to restart all Airflow `Pods` you would have to run: +Sometimes you want to restart all Pods of stack and not just individual roles. This can be achieved in a similar manner by using labels instead of StatefulSet names. Continuing with the example above, to restart all Airflow Pods you would have to run: [source,shell] ---- From 7149e7d23b430ab7c64c52dd3edaf6ea0ec6aa8f Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:26:01 +0100 Subject: [PATCH 06/11] Rename stacklet to myairflow --- .../pages/operations/cluster_operations.adoc | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/modules/concepts/pages/operations/cluster_operations.adoc b/modules/concepts/pages/operations/cluster_operations.adoc index a94206c92..8a0b1a3bd 100644 --- a/modules/concepts/pages/operations/cluster_operations.adoc +++ b/modules/concepts/pages/operations/cluster_operations.adoc @@ -28,45 +28,45 @@ Sometimes it is necessary to restart services deployed in Kubernetes. A service Most operators create StatefulSet objects for the products they manage and Kubernetes offers a rollout mechanism to restart them. You can use `kubectl rollout restart statefulset` to restart a StatefulSet previously created by an operator. -For example, an Airflow stack will have three ServiceSets created for it: `scheduler`, `webserver` and `worker`. So given the following stateful sets deployed for an Airflow stacklet: +To illustrate how to use the command line to restart one or more Pods, we will assume you used the Stackable Airflow Operator to deploy an Airflow stacklet called `myairflow`. + +This stacklet will consist, among other things, of three ServiceSets created for each Airflow role: `scheduler`, `webserver` and `worker`. Let's list them: [source,shell] ---- ❯ kubectl get sts NAME READY AGE -airflow-scheduler-default 1/1 61m -airflow-webserver-default 1/1 61m -airflow-worker-default 2/2 61m +myairflow-scheduler-default 1/1 61m +myairflow-webserver-default 1/1 61m +myairflow-worker-default 2/2 61m postgresql-airflow 1/1 64m redis-airflow-master 1/1 64m redis-airflow-replicas 1/1 64m ---- -To restart the Airflow scheduler, run: +To restart the Airflow scheduler Pod, run: [source,shell] ---- -❯ kubectl rollout restart statefulset airflow-scheduler-default -statefulset.apps/airflow-scheduler-default restarted +❯ kubectl rollout restart statefulset myairflow-scheduler-default +statefulset.apps/myairflow-scheduler-default restarted ---- -Sometimes you want to restart all Pods of stack and not just individual roles. This can be achieved in a similar manner by using labels instead of StatefulSet names. Continuing with the example above, to restart all Airflow Pods you would have to run: +Sometimes you want to restart all Pods of stacklet and not just individual roles. This can be achieved in a similar manner by using labels instead of StatefulSet names. Continuing with the example above, to restart all Airflow Pods you would have to run: [source,shell] ---- -❯ kubectl rollout restart statefulset --selector app.kubernetes.io/instance=airflow +❯ kubectl rollout restart statefulset --selector app.kubernetes.io/instance=myairflow ---- To wait for all Pods to be running again you run: [source,shell] ---- -❯ kubectl rollout status statefulset --selector app.kubernetes.io/instance=airflow +❯ kubectl rollout status statefulset --selector app.kubernetes.io/instance=myairflow ---- -Here we used the label `app.kubernetes.io/instance=airflow` to select all Pods that belong to a specific Airflow stacklet. This label is created by the operator and `airflow` is the name of the Airflow stacklet as specified in the custom resource. You can add more labels to make finer grained restarts. - -NOTE: When using Airflow's https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/executor/kubernetes.html[Kubernetes executor], `worker` Pods are created dynamically by DAGs when needed, this in general it's not necessary to restart them. +Here we used the label `app.kubernetes.io/instance=myairflow` to select all Pods that belong to a specific Airflow stacklet. This label is created by the operator and `myairflow` is the name of the Airflow stacklet as specified in the custom resource. You can add more labels to make finer grained restarts. == Automatic Restarts From 6b2d8d65e301228df0d61be53c06ae6204dcb195 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:28:21 +0100 Subject: [PATCH 07/11] Typo --- modules/concepts/pages/operations/cluster_operations.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/concepts/pages/operations/cluster_operations.adoc b/modules/concepts/pages/operations/cluster_operations.adoc index 8a0b1a3bd..c5150cc99 100644 --- a/modules/concepts/pages/operations/cluster_operations.adoc +++ b/modules/concepts/pages/operations/cluster_operations.adoc @@ -30,7 +30,7 @@ Most operators create StatefulSet objects for the products they manage and Kuber To illustrate how to use the command line to restart one or more Pods, we will assume you used the Stackable Airflow Operator to deploy an Airflow stacklet called `myairflow`. -This stacklet will consist, among other things, of three ServiceSets created for each Airflow role: `scheduler`, `webserver` and `worker`. Let's list them: +This stacklet will consist, among other things, of three StatefulSets created for each Airflow role: `scheduler`, `webserver` and `worker`. Let's list them: [source,shell] ---- From c5179e3973b73d8dc67b0416f37154b6b24d0601 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Wed, 1 Nov 2023 18:18:15 +0100 Subject: [PATCH 08/11] Example with HDFS --- .../pages/operations/cluster_operations.adoc | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/modules/concepts/pages/operations/cluster_operations.adoc b/modules/concepts/pages/operations/cluster_operations.adoc index c5150cc99..525e9693a 100644 --- a/modules/concepts/pages/operations/cluster_operations.adoc +++ b/modules/concepts/pages/operations/cluster_operations.adoc @@ -28,45 +28,42 @@ Sometimes it is necessary to restart services deployed in Kubernetes. A service Most operators create StatefulSet objects for the products they manage and Kubernetes offers a rollout mechanism to restart them. You can use `kubectl rollout restart statefulset` to restart a StatefulSet previously created by an operator. -To illustrate how to use the command line to restart one or more Pods, we will assume you used the Stackable Airflow Operator to deploy an Airflow stacklet called `myairflow`. +To illustrate how to use the command line to restart one or more Pods, we will assume you used the Stackable HDFS Operator to deploy an HDFS stacklet called `dumbo`. -This stacklet will consist, among other things, of three StatefulSets created for each Airflow role: `scheduler`, `webserver` and `worker`. Let's list them: +This stacklet will consist, among other things, of three StatefulSets created for each HDFS role: `namenode`, `datanode` and `journalnode`. Let's list them: [source,shell] ---- -❯ kubectl get sts +❯ kubectl get sts -l app.kubernetes.io/instance=dumbo NAME READY AGE -myairflow-scheduler-default 1/1 61m -myairflow-webserver-default 1/1 61m -myairflow-worker-default 2/2 61m -postgresql-airflow 1/1 64m -redis-airflow-master 1/1 64m -redis-airflow-replicas 1/1 64m +dumbo-datanode-default 2/2 4m41s +dumbo-journalnode-default 1/1 4m41s +dumbo-namenode-default 2/2 4m41s ---- -To restart the Airflow scheduler Pod, run: +To restart the HDFS data node Pods, run: [source,shell] ---- -❯ kubectl rollout restart statefulset myairflow-scheduler-default -statefulset.apps/myairflow-scheduler-default restarted +❯ kubectl rollout restart statefulset dumbo-datanode-default +statefulset.apps/dumbo-datanode-default restarted ---- -Sometimes you want to restart all Pods of stacklet and not just individual roles. This can be achieved in a similar manner by using labels instead of StatefulSet names. Continuing with the example above, to restart all Airflow Pods you would have to run: +Sometimes you want to restart all Pods of a stacklet and not just individual roles. This can be achieved in a similar manner by using labels instead of StatefulSet names. Continuing with the example above, to restart all HDFS Pods you would have to run: [source,shell] ---- -❯ kubectl rollout restart statefulset --selector app.kubernetes.io/instance=myairflow +❯ kubectl rollout restart statefulset --selector app.kubernetes.io/instance=dumbo ---- -To wait for all Pods to be running again you run: +To wait for all Pods to be running again: [source,shell] ---- -❯ kubectl rollout status statefulset --selector app.kubernetes.io/instance=myairflow +❯ kubectl rollout status statefulset --selector app.kubernetes.io/instance=dumbo ---- -Here we used the label `app.kubernetes.io/instance=myairflow` to select all Pods that belong to a specific Airflow stacklet. This label is created by the operator and `myairflow` is the name of the Airflow stacklet as specified in the custom resource. You can add more labels to make finer grained restarts. +Here we used the label `app.kubernetes.io/instance=dumbo` to select all Pods that belong to a specific HDFS stacklet. This label is created by the operator and `dumbo` is the name of the HDFS stacklet as specified in the custom resource. You can add more labels to make finer grained restarts. == Automatic Restarts From 5bc77cf2b0704a7638a7b8e334adf66eeb28372d Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Thu, 2 Nov 2023 12:04:52 +0100 Subject: [PATCH 09/11] Update modules/concepts/pages/operations/cluster_operations.adoc Co-authored-by: Sebastian Bernauer --- modules/concepts/pages/operations/cluster_operations.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/concepts/pages/operations/cluster_operations.adoc b/modules/concepts/pages/operations/cluster_operations.adoc index 525e9693a..d0ab1d70d 100644 --- a/modules/concepts/pages/operations/cluster_operations.adoc +++ b/modules/concepts/pages/operations/cluster_operations.adoc @@ -34,7 +34,7 @@ This stacklet will consist, among other things, of three StatefulSets created fo [source,shell] ---- -❯ kubectl get sts -l app.kubernetes.io/instance=dumbo +❯ kubectl get statefulset -l app.kubernetes.io/instance=dumbo NAME READY AGE dumbo-datanode-default 2/2 4m41s dumbo-journalnode-default 1/1 4m41s From ae6c227aed175c39c6a1ba4b019f46690be3f285 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Thu, 2 Nov 2023 12:05:02 +0100 Subject: [PATCH 10/11] Update modules/concepts/pages/operations/cluster_operations.adoc Co-authored-by: Sebastian Bernauer --- modules/concepts/pages/operations/cluster_operations.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/concepts/pages/operations/cluster_operations.adoc b/modules/concepts/pages/operations/cluster_operations.adoc index d0ab1d70d..527aeb50b 100644 --- a/modules/concepts/pages/operations/cluster_operations.adoc +++ b/modules/concepts/pages/operations/cluster_operations.adoc @@ -41,7 +41,7 @@ dumbo-journalnode-default 1/1 4m41s dumbo-namenode-default 2/2 4m41s ---- -To restart the HDFS data node Pods, run: +To restart the HDFS DataNode Pods, run: [source,shell] ---- From 10394d923b07530b7782003a9c8bfc12067b0012 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Thu, 2 Nov 2023 12:05:24 +0100 Subject: [PATCH 11/11] Update modules/concepts/pages/operations/cluster_operations.adoc Co-authored-by: Sebastian Bernauer --- modules/concepts/pages/operations/cluster_operations.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/concepts/pages/operations/cluster_operations.adoc b/modules/concepts/pages/operations/cluster_operations.adoc index 527aeb50b..43d8ad904 100644 --- a/modules/concepts/pages/operations/cluster_operations.adoc +++ b/modules/concepts/pages/operations/cluster_operations.adoc @@ -67,4 +67,4 @@ Here we used the label `app.kubernetes.io/instance=dumbo` to select all Pods tha == Automatic Restarts -The Commons Operator of the Stackable Platform may restart Pods automatically, for purposes such as ensuring that security certificates are up-to-date. For details, see the xref:commons-operator:index.adoc[Commons Operator documentation]. +The Commons Operator of the Stackable Platform may restart Pods automatically, for purposes such as ensuring that TLS certificates are up-to-date. For details, see the xref:commons-operator:index.adoc[Commons Operator documentation].