Spec Explorer

  • kube-spec.dev: A handy tool for exploring Kubernetes resource specifications.

Running a One-Time Job from a CronJob

  • To execute a job based on an existing CronJob, use the following command:

    kubectl create job --from=cronjob/<cronjob-name> <job-name> -n <namespace-name>
    

Spawning a Curl Container for Debugging

  • To quickly spin up a curl container with specific security and resource constraints, use:

    kubectl run debug-curl \
      --image=curlimages/curl \
      --overrides='{
        "apiVersion": "v1",
        "spec": {
          "securityContext": {
            "runAsNonRoot": true,
            "runAsUser": 1000,
            "runAsGroup": 1000
          },
          "containers": [
            {
              "name": "debug-curl",
              "image": "curlimages/curl",
              "resources": {
                "requests": {
                  "cpu": "100m",
                  "memory": "128Mi"
                },
                "limits": {
                  "cpu": "200m",
                  "memory": "256Mi"
                }
              },
              "command": ["/bin/sh", "-c", "sleep infinity"]
            }
          ]
        }
      }'
    
    • This command creates a debug-curl pod with a non-root user context and resource requests/limits.
    • Connect to the shell using:
    kubectl exec pod/debug-curl sh
    
    • Delete container using
    kubectl delete pod/debug-curl
    

Getting Kubernetes Events

  • To view Kubernetes events sorted by creation timestamp, use:

    kubectl get events --sort-by='.metadata.creationTimestamp' -o wide | less
    
    • The less command enables easy scrolling and searching through the event list.

Explaining Specific Kubernetes Fields

  • To get detailed information about a specific field in a Kubernetes resource specification, use kubectl explain:

    kubectl explain "postgrescluster.spec.backups.pgbackrest.repos.s3" # sample field
    
    • Replace "postgrescluster.spec.backups.pgbackrest.repos.s3" with the desired field path. This is very usefull for understanding the expected structure and values of kubernetes resources.