KubeCon EUBooth 1151, Amsterdam. March 23-26
Read Operator

Troubleshooting

Common issues and solutions for the zxporter read-only operator.

Troubleshooting

Update zxporter

curl https://raw.githubusercontent.com/devzero-inc/zxporter/refs/heads/main/dist/installer_updater.yaml | kubectl apply -f -

Increase Resource Requests

By default, zxporter requests 128Mi memory and 200m CPU. For large clusters, increase these:

kubectl patch deployment devzero-zxporter-controller-manager -n devzero-zxporter --patch '{
  "spec": {
    "template": {
      "spec": {
        "containers": [
          {
            "name": "manager",
            "resources": {
              "requests": {
                "memory": "512Mi",
                "cpu": "500m"
              }
            }
          }
        ]
      }
    }
  }
}'

Remove zxporter

To completely remove the operator and all associated resources:

kubectl delete all --all -n devzero-zxporter

Resources Created by the Installer

When you install the zxporter operator, the following resources are created in the devzero-zxporter namespace:

Namespaces and Service Accounts

  • Namespace: devzero-zxporter
  • ServiceAccounts: devzero-zxporter-controller-manager, prometheus-server, prometheus-kube-state-metrics, prometheus-prometheus-node-exporter

RBAC

  • ClusterRoles: devzero-zxporter-manager-roleresources, devzero-zxporter-collectionpolicy-editor-role, prometheus-server, prometheus-kube-state-metrics
  • Role: devzero-zxporter-leader-election-role

Deployments

  • devzero-zxporter-controller-manager
  • prometheus-kube-state-metrics
  • prometheus-server

DaemonSets

  • prometheus-prometheus-node-exporter
  • node-exporter-prometheus-node-exporter

Services

  • devzero-zxporter-controller-manager-metrics-service
  • prometheus-server
  • prometheus-kube-state-metrics
  • prometheus-prometheus-node-exporter

The operator reads only metadata and resource utilization data. No secrets or sensitive pod-level data is accessed.

Common Issues

Operator not connecting to the platform

  1. Verify the cluster token is correct in the ConfigMap:

    kubectl get configmap devzero-zxporter-env-config -n devzero-zxporter -o yaml
  2. Check operator logs for connection errors:

    kubectl logs deployment/devzero-zxporter-controller-manager -n devzero-zxporter
  3. Ensure outbound HTTPS (port 443) traffic to api.devzero.io is allowed.

Missing metrics for certain namespaces

Check if those namespaces are excluded in the CollectionPolicy:

kubectl get collectionpolicy -n devzero-zxporter -o yaml

GPU metrics not appearing

  1. Verify DCGM exporter pods are running:

    kubectl get pods -A | grep dcgm
  2. Check that DCGM pods have the Prometheus scrape annotation:

    kubectl get pods -A -l app=dcgm-exporter -o jsonpath='{.items[*].metadata.annotations.prometheus\.io/scrape}'
  3. If missing, patch the DaemonSet:

    kubectl get daemonset -A -o json | jq -r '.items[] | select(.metadata.name | contains("dcgm-exporter")) | "\(.metadata.namespace) \(.metadata.name)"' | while read namespace daemonset; do
      kubectl patch daemonset $daemonset -n $namespace -p '{"spec":{"template":{"metadata":{"annotations":{"prometheus.io/scrape":"true"}}}}}'
    done

On this page