1. What are some basic Kubernetes commands I’ll need to know to use Saagie?

Locate the <namespace>:

kubectl get namespaces

Locate the <pod_name> (replacing <namespace>):

kubectl -n <namespace> get pods

Retrieve <container_name>, run the following command, replacing <deployment_name>. Doing so will retrieve all of the information about the deployment, including container names.

kubectl describe deployment <deployment_name>

Locate your <deployment_name>, run the following command:

kubectl -n <namespace> get deployments

Locate the <statefulset_name>:

kubectl -n <namespace> get statefulset

Locate the <pvc_name> (replacing <namespace>):

kubectl -n <namespace> get pvc

2. How can I view components logs?

Use the Kubernetes kubectl command line to view logs for Saagie components and pods.

2.1. View logs for a specific pod

These instructions are for pods with one container. If your pod contains multiple containers, continue to View logs for pods with multiple containers.

To view pod logs, run the following command, replacing <namespace> and <pod_name>:

kubectl -n <namespace> logs <pod_name>

2.2. View logs for pods with multiple containers

If your pod has multiple containers and you try to view logs for these pods following the instructions above, you’ll receive an error, such as:

error: a container name must be specified for pod saagie-common-auth-123zase12-12343esd2, choose one of: [auth auth-proxy auth-config-observer] or one of the init containers: [create-mongo-user]

To view logs for pods with multiple containers, you must add the container name. Run the following command, replacing <namespace>, <pod_name>, and <container_name>:

kubectl -n <namespace> logs <pod_name> <container_name>

Refer to the kubectl documentation for more information.

If you’d like to simplify the process of viewing Kubernetes logs, check out kubetail or kail.

3. How do I increase PVC storage size?

If you need to increase the storage size of your Persistent Volume Claim (PVC), you can edit your PVC. Confirm that the volume manager (storageClass) can support the increase.

For reference, you might use Kafka, Zookeeper, MongoDB, PostgreSQL, Minio.

To see a list your PVCs, run the following command, replacing <namespace>:

kubectl -n <namespace> get pvc

The following steps are detailed below:

  1. Check storageClass.

  2. Scale down the pod.

  3. Edit the PVC.

  4. Scale up the pod.

Make sure to edit your PVC. If you delete and recreate it, you will lose your data.

3.1. Check storageClass

Before modifying a PVC, you must confirm that the storageClass can support the storage increase on the cluster.

Retrieve the <storageclass_name> of your PVC, run the following command, replacing <namespace> and <pvc_name>:

kubectl -n <namespace> get pvc <pvc_name> -o jsonpath='{.spec.storageClassName}'

To check if your PVC can be increased, run the following command, replacing <storageclass_name>:

kubectl get <storageclass_name> -o jsonpath='{.allowVolumeExpansion}'

It the response for allowVolumeExpansion is true, you can increase the storage of your PVC.

3.2. Scale down the pod

Before editng a PVC, you must scale down (turn off) any pods using that PVC. The command depends on your PVC.

Run one of the following commands, replacing <namespace> and either <deployment_name> or <statefulset_name>:

kubectl -n <namespace> scale deployment/<deployment_name> --replicas 0

kubectl -n <namespace> scale statefulset/<statefulset_name> --replicas 0
The 0 after --replicas represents the action of scaling down a pod.

3.3. Edit the PVC

Once you’ve confirmed that your storageClass supports the storage increase and you’ve scaled down your pod, you’re ready to increase the storage size. To do so, update the storage field in your PVC.

If you’d like to learn more about your PVC, including the storage capacity, run the describe command, replacing <namespace> and <pvc_name>:

kubectl -n <namespace> describe pvc <pvc_name>

To edit your PVC, use the following command, replacing <namespace> and <pvc_name>, which will allow you to modify your PVC values:

kubectl -n <namespace> edit pvc <pvc_name>

Locate the spec section of the response:

  - ReadWriteOnce
  dataSource: null
      storage: 32Gi
  storageClassName: common-storageclass
  volumeName: pvc-jhz434ui92

Modify the value with your new increased storage amount.

You can only increase storage. Decreasing storage is not supported.

Once your changes have been saved, you should see the following, where <pvc_name> is the name of your PVC:

persistentvolumeclaim/<pvc_name> edited

3.4. Scale up the pod

Once you have increased your PVC storage size, you need to scale up the pods using that PVC.

To see the state of your PVC, run the following command, replacing <namespace> and <pvc_name>:

kubectl -n <namespace> describe pvc <pvc_name>

You should see the following conditions:

Type                      Status  LastProbeTime                     LastTransitionTime                Reason  Message
----                      ------  -----------------                 ------------------                ------  -------
FileSystemResizePending   True    Mon, 01 Jan 0001 00:00:00 +0000   Fri, 13 Mar 2020 15:03:55 +0100           Waiting for user to (re-)start a pod to finish file system resize of volume on node.

To scale up your pod, you’ll need to locate your <replicas_default> value first. Run a describe command for either a deployment or a statefulset, replacing <namespace> and either <deployment_name> or <statefulset_name>:

kubectl -n <namespace> describe deployment <deployment_name>

kubectl -n <namespace> describe statefulset <statefulset_name>

Once you’ve retrieved your <replicas_default> value, run the same command used to scale down, replacing the 0 with the <replicas_default> (make sure to replace <namespace> and either <deployment_name> or <statefulset_name> as well):

kubectl -n <namespace> scale deployment/<deployment_name> --replicas <replicas_default>

kubectl -n <namespace> scale statefulset/<statefulset_name> --replicas <replicas_default>

After you’ve scaled up your pod, it will take a few minutes before the pod—​with it’s new storage volume—​is usable.

4. How do I connect to a container?

To connect to a pod within a container, use the kubectl exec command, replacing <namespace>, <pod_name>, <container_name>, and <command>:

kubectl -n <namespace> exec {-it} <pod_name> -c <container_name> <command>
-it is an optional setting that launches an interactive mode, allowing you to work directly from your terminal. This only works if your command allows for it.

For example, the following bash command allows you to connect to the auth container from the pod saagie-common-auth-7df644756-6hbzm, allowing you to execute bash commands within the container.

kubectl exec -it saagie-common-auth-7df644756-6hbzm -c auth bash

5. What do I do if I received an OutOfMemoryError for Phagocytor?

When there are too many pods on a cluster, phagocytor might not have enough memory to manage them. You’ll see the error Caused by: java.lang.OutOfMemoryError: Java heap space. When this occurs, you’ll need to increase the memory for phagocytor by editing the corresponding cronjob.

To increase the memory, run the following command:

kubectl edit cronjob saagie-common-phagocytor

Locate resources in the spec section: spec.jobTemplate.spec.template.spec.containers.resources.

    memory: 512Mi
    memory: 256Mi

Increase the memory limits. The increase will take effect the next time your cronjob is excecuted.

These changes might be erased by the default values when a new version of Saagie is deployed.

6. How do I restore a component?

When a component is defective and there are no other solutions presented in the documentation, you’ll need to renew the pod connected to the component.

To do so, you need to delete the pod. This prompts Kubernetes to create a new pod automatically according to deployment instructions. The new pod will either be a statefulSet or a daemonSet, depending on the nature of the pod.

To delete your pod and prompt the automatic creation of a new pod, run the following command, replacing <namespace> and <pod_name>:

kubectl -n <namespace> delete pod <pod_name>

7. How can I contact Saagie support?

Saagie support is here to help you. We recommend using our support in the following order.

  1. Documentation: Start with the documentation found in the Saagie Help Center.

  2. Ticket: If you haven’t found the information you need in our documentation, open a new ticket in the Saagie Help Center. This ticket will follow your entire request until the issue is resolved.

    • Select Open a new ticket.

    • Complete the form, providing as much information as possible. The more information you provide, the better we will understand the issue.

    • Select Submit.

    • Tickets are treated during normal, working hours: 8:00am to 6:00pm (GMT+1) Monday through Friday (closed holidays).

  3. Call: It is also possible to call Saagie directly.

    • Make sure you have opened a new ticket before calling.

    • Hours: 8:00am to 6:00pm (GMT+1) Monday through Friday (closed holidays)

    • (If calling from the United States, dial

You must open a new ticket before calling Saagie support. If there’s not a ticket, there’s no issue.

7.1. What information should I collect for Saagie support?

As mentioned above, when you open a new ticket, it is important to provide as much information as possible. Try to include as many of the following items as possible, as they apply to your issue:

  • Exact error message

  • Impact on the Saagie application

  • What were you trying to do when the error occurred

  • Logs

  • Screenshot of the issue

  • Any other information you think could be useful

8. Do you have any other tips or tricks?

8.1. Suspend phagocytor

The phagocytor pod is responsible for cleaning pods and workflows in project namespaces. Part of the cleaning process is to delete pods that are no longer needed. It can be difficult to access data for a specific pod (for example, by running a kubectl describe) before phagocytor destroys that pod.

You might need to suspend this process in order to access information about certain pods. To suspend the cleaning process and view your logs, run the following command:

kubectl patch cronjobs saagie-common-phagocytor -p '{"spec" : {"suspend" : true }}'

Once you’ve retrieved the logs you need, reactivate phagocytor by running the following command:

kubectl patch cronjobs saagie-common-phagocytor -p '{"spec" : {"suspend" : false }}'
Make sure to reactivate phagocytor. Otherwise, your cluster could become overrun with unneeded data.