Bird
Raised Fist0
Kubernetesdevops~20 mins

Database operators example in Kubernetes - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Database Operator Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
What is the primary role of a Database Operator in Kubernetes?

In Kubernetes, a Database Operator helps manage database lifecycle. What is its main job?

AAutomatically manage database deployment, backups, scaling, and updates
BOnly monitor database performance without making changes
CReplace the Kubernetes scheduler for database pods
DServe as a database client to query data
Attempts:
2 left
💡 Hint

Think about automation tasks related to databases in Kubernetes.

💻 Command Output
intermediate
1:30remaining
Output of checking PostgreSQL Operator pods status

You run the command kubectl get pods -n postgres-operator after installing a PostgreSQL Operator. What output indicates the operator is running correctly?

Kubernetes
kubectl get pods -n postgres-operator
AError from server (NotFound): namespaces "postgres-operator" not found
Bpostgres-operator-abc123 1/1 Running 0 2m
CNo resources found in postgres-operator namespace.
Dpostgres-operator-abc123 0/1 CrashLoopBackOff 3 2m
Attempts:
2 left
💡 Hint

Look for pods with all containers ready and status Running.

Configuration
advanced
2:00remaining
Correct Custom Resource for a MySQL Cluster using an Operator

Which YAML snippet correctly defines a MySQL cluster custom resource for a MySQL Operator?

A
apiVersion: mysql.oracle.com/v1alpha1
kind: MySQLCluster
metadata:
  name: my-mysql
spec:
  replicas: 3
  version: "8.0"
B
apiVersion: mysql.oracle.com/v1alpha1
kind: Cluster
metadata:
  name: my-mysql
spec:
  replicas: 3
  version: "8.0"
C
apiVersion: mysql.oracle.com/v1alpha1
kind: MySQL
metadata:
  name: my-mysql
spec:
  nodes: 3
  version: "8.0"
D
apiVersion: mysql.oracle.com/v1alpha1
kind: Cluster
metadata:
  name: my-mysql
spec:
  nodes: 3
  version: "8.0"
Attempts:
2 left
💡 Hint

Check the kind field for the correct resource type the operator expects.

Troubleshoot
advanced
2:00remaining
Troubleshooting a Failed Backup Job in a Database Operator

A backup job created by your database operator fails with the error 'permission denied'. What is the most likely cause?

AThe database cluster has no replicas
BThe database operator pod is not running
CThe service account used by the backup job lacks permissions to access the storage location
DThe Kubernetes API server is down
Attempts:
2 left
💡 Hint

Consider what permissions are needed for backup jobs to write data.

🔀 Workflow
expert
2:30remaining
Order the steps to deploy a database using an Operator in Kubernetes

Put the following steps in the correct order to deploy a database using an Operator.

A3,1,2,4
B2,1,3,4
C1,3,2,4
D1,2,3,4
Attempts:
2 left
💡 Hint

Think about installing the operator first before creating and applying resources.

Practice

(1/5)
1. What is the main purpose of a database operator in Kubernetes?
easy
A. To manually configure database settings using kubectl commands
B. To monitor network traffic between pods
C. To replace the Kubernetes API server
D. To automate database management tasks like backups and scaling

Solution

  1. Step 1: Understand the role of operators

    Operators automate complex tasks for applications running in Kubernetes, such as databases.
  2. Step 2: Identify database operator tasks

    Database operators handle backups, scaling, and updates automatically without manual intervention.
  3. Final Answer:

    To automate database management tasks like backups and scaling -> Option D
  4. Quick Check:

    Database operator purpose = automate management [OK]
Hint: Operators automate tasks, not manual configs [OK]
Common Mistakes:
  • Thinking operators replace Kubernetes API
  • Confusing operators with manual commands
  • Assuming operators monitor network traffic
2. Which YAML field is commonly used to specify the database version in a Kubernetes operator manifest?
easy
A. spec.replicas
B. spec.version
C. status.phase
D. metadata.name

Solution

  1. Step 1: Review common YAML fields in operator manifests

    Database version is usually set under the spec section to define desired state.
  2. Step 2: Identify the correct field for version

    The field spec.version is used to specify which database version to deploy.
  3. Final Answer:

    spec.version -> Option B
  4. Quick Check:

    Database version field = spec.version [OK]
Hint: Version info is under spec, not metadata or status [OK]
Common Mistakes:
  • Using metadata.name for version
  • Confusing status.phase with version
  • Mistaking spec.replicas for version
3. Given this snippet of a PostgreSQL operator manifest:
apiVersion: postgres-operator.crunchydata.com/v1
kind: PostgresCluster
metadata:
  name: my-postgres
spec:
  instances:
    - replicas: 3
  backups:
    pgbackrest:
      repos:
        - name: repo1
          volume:
            volumeClaimSpec:
              accessModes: ["ReadWriteOnce"]
              resources:
                requests:
                  storage: 10Gi
  version: "14"
What does the replicas: 3 setting do?
medium
A. Sets the backup frequency to 3 times per day
B. Limits the database to 3 connections
C. Creates 3 PostgreSQL instances for high availability
D. Defines 3 storage volumes for backups

Solution

  1. Step 1: Understand replicas in Kubernetes

    Replicas define how many copies of a pod or instance run for availability and load balancing.
  2. Step 2: Apply to PostgreSQL operator

    replicas: 3 means 3 PostgreSQL instances will run, improving availability.
  3. Final Answer:

    Creates 3 PostgreSQL instances for high availability -> Option C
  4. Quick Check:

    replicas = number of instances [OK]
Hint: Replicas control instance count, not connections or backups [OK]
Common Mistakes:
  • Confusing replicas with connection limits
  • Thinking replicas set backup frequency
  • Assuming replicas define storage volumes
4. You applied a YAML manifest for a MySQL operator but the pods fail to start. The manifest includes:
spec:
  replicas: 2
  version: "8.0"
  backup:
    enabled: true
    schedule: "0 2 * * *"
What is the likely error in this manifest?
medium
A. The field 'backup' should be 'backups' to match operator schema
B. The version number must be an integer, not a string
C. Replicas cannot be set to 2 for MySQL operator
D. Schedule format is invalid; cron must have 6 fields

Solution

  1. Step 1: Check operator schema for backup configuration

    Most database operators expect 'backups' (plural) as the field name, not 'backup'.
  2. Step 2: Validate other fields

    Version as string is valid, replicas can be 2, and cron with 5 fields is standard.
  3. Final Answer:

    The field 'backup' should be 'backups' to match operator schema -> Option A
  4. Quick Check:

    Field names must match operator schema exactly [OK]
Hint: Check exact field names in operator docs [OK]
Common Mistakes:
  • Changing version to integer unnecessarily
  • Assuming replicas must be 1
  • Misunderstanding cron schedule format
5. You want to deploy a MongoDB cluster using a Kubernetes operator that supports automatic backups and scaling. Which combination of YAML fields is essential to enable these features correctly?
hard
A. spec: replicas: 3 version: "5.0" backups: enabled: true schedule: "0 1 * * *" autoscaling: enabled: true minReplicas: 2 maxReplicas: 5
B. spec: instances: 3 version: 5 backup: schedule: daily scaling: enabled: yes
C. metadata: replicas: 3 version: "5.0" backups: enabled: false autoscale: min: 2 max: 5
D. spec: replicas: 1 version: "latest" backup: enabled: true schedule: "@daily" autoscaling: enabled: false

Solution

  1. Step 1: Identify correct field names and types for backups and scaling

    Backups require 'backups' with enabled and schedule fields; autoscaling needs enabled, minReplicas, maxReplicas.
  2. Step 2: Compare options for correctness

    spec: replicas: 3 version: "5.0" backups: enabled: true schedule: "0 1 * * *" autoscaling: enabled: true minReplicas: 2 maxReplicas: 5 uses correct field names, proper YAML structure, and valid values for version and schedule.
  3. Final Answer:

    spec: replicas: 3 version: "5.0" backups: enabled: true schedule: "0 1 * * *" autoscaling: enabled: true minReplicas: 2 maxReplicas: 5 -> Option A
  4. Quick Check:

    Correct fields and values enable features [OK]
Hint: Use exact field names and valid cron schedules [OK]
Common Mistakes:
  • Using 'backup' instead of 'backups'
  • Incorrect autoscaling field names
  • Setting enabled false disables features