For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
      • AstroFully-managed data operations, powered by Apache Airflow.
      • Astro Private CloudRun Airflow-as-a-service in your environment.
      • Professional ServicesExpert Airflow services for your enterprise's success.
    • Tools
      • Cosmos
      • Orbiter
      • CLI
      • AI SDK
      • Agents
      • Blueprint
      • UpdatesThe State of Airflow 2026See the insights from over 5,800 data practitioners in the full report. Download Now ➔
  • Customers
  • Docs
    • Insights
      • Blog
      • Webinars
      • Resource Library
      • Events
    • Education
      • Academy
      • What is Airflow?
  • Pricing
Get Started Free
    • Overview
      • kubectl
      • Debugging
      • Disaster recovery
    • Book Office Hours

Product

  • Platform Overview
  • Astro
  • Astro Observe
  • Astro Private Cloud
  • Security & Trust
  • Pricing

Tools & Services

  • Cosmos
  • Docs
  • Professional Services
  • Product Updates

Use Cases

  • AI Ops
  • Data Observability
  • ETL/ELT
  • ML Ops
  • Operational Analytics
  • All Use Cases

Industries

  • Financial Services
  • Gaming
  • Retail
  • Manufacturing
  • Healthcare
  • All Industries

Resources

  • Academy
  • eBooks & Guides
  • Blog
  • Webinars
  • Events
  • The Data Flowcast Podcast
  • All Resources

Airflow

  • What is Airflow
  • Airflow on Astro
  • Airflow 3.0
  • Airflow Upgrades
  • Airflow Use Cases
  • Airflow 2.x End of Life

Company

  • Our Story
  • Customers
  • Newsroom
  • Careers
  • Contact

Support

  • Knowledge Base
  • Status
  • Contact Support
GitHubYouTubeLinkedInx
  • Legal
  • Privacy
  • Terms of Service
  • Consent Preferences

  • Do Not Sell or Share My Personal information
  • Limit the Use Of My Sensitive Personal Information

Apache Airflow®, Airflow, and the Airflow logo are trademarks of the Apache Software Foundation. Copyright © Astronomer 2026. All rights reserved.

LogoLogo
On this page
  • Kubectl and Helm
  • Setup
  • Base namespace and release
  • Creating new Airflow deployments
  • Managing Pods
  • Other Resources
Troubleshoot

Use kubectl to administer Astronomer Software

Edit this page
Built with

Kubectl and Helm

Kubectl and helm are the two primary ways DevOps users will interact/administer the Astronomer Platform.

Setup

Both these tools are needed to deploy Astronomer onto a Kubernetes cluster. We also recommend using kubectx to simplify commands (the rest of this guide will use kubectx).

Base namespace and release

The initial helm install command to deploy Astronomer requires a namespace to deploy the base platform pods into.

helm install -f values.yaml . datarouter

This deploys a randomly named release of our helm charts into the datarouter namespace.

All pods can be listed in the namespace with kubectl.

$root@orbiter: datarouter
$Context "gke_astronomer-dev-190903_us-east4-a_astronomer-dev-lybjumoigv" modified.
$Active namespace is "datarouter".
$
$root@orbiter: kubectl get pods
$NAME READY STATUS RESTARTS AGE
$cautious-seal-postgresql-0 1/1 Running 0 2d
$singed-chimp-alertmanager-0 1/1 Running 0 1h
$singed-chimp-commander-68b95959c5-xb9ht 1/1 Running 0 1h
$singed-chimp-elasticsearch-client-84d85f87fb-lmbsf 1/1 Running 0 1h
$singed-chimp-elasticsearch-client-84d85f87fb-wjpwc 1/1 Running 0 1h
$singed-chimp-elasticsearch-data-0 1/1 Running 0 1h
$singed-chimp-elasticsearch-data-1 1/1 Running 0 1h
$singed-chimp-elasticsearch-exporter-5fc97b847f-52qsq 1/1 Running 0 1h
$singed-chimp-elasticsearch-master-0 1/1 Running 0 1h
$singed-chimp-elasticsearch-master-1 1/1 Running 0 1h
$singed-chimp-elasticsearch-master-2 1/1 Running 0 1h
$singed-chimp-elasticsearch-nginx-9c4bc78-f5zzz 1/1 Running 0 1h
$singed-chimp-fluentd-ztb6k 1/1 Running 0 1h
$singed-chimp-grafana-6df6859854-btdc6 1/1 Running 0 1h
$singed-chimp-houston-86556ffd74-dkbr8 1/1 Running 0 1h
$singed-chimp-kibana-5ccc7b98d4-gk7vb 1/1 Running 0 1h
$singed-chimp-kube-state-78bd89bf47-m7nrm 1/1 Running 0 1h
$singed-chimp-kubed-5699fc79b4-9dz28 1/1 Running 0 1h
$singed-chimp-nginx-5cbdf7967f-2q4dr 1/1 Running 0 1h
$singed-chimp-nginx-default-backend-55788c586-2s9nl 1/1 Running 0 1h
$singed-chimp-astro-ui-748dfd5748-77v66 1/1 Running 0 1h
$singed-chimp-prisma-6ddf8f6784-lfnfr 1/1 Running 0 1h
$singed-chimp-prometheus-0 1/1 Running 0 1h
$singed-chimp-registry-0 1/1 Running 0 1h

Run helm ls to list all releases:

$root@orbiter: helm ls
$NAME REVISION UPDATED STATUS CHART NAMESPACE
$cautious-seal 1 Mon May 6 14:37:34 2019 DEPLOYED postgresql-0.18.1 datarouter
$singed-chimp 3 Thu May 9 12:08:36 2019 DEPLOYED astronomer-0.8.2 datarouter

There is a release for Astronomer (single-chimp) and postgres (cautious-seal) in the datarouter namespace.

Creating new Airflow deployments

If you navigate to the Software UI and create a new deployment, it will create a new helm release in a new namespace.

$root@orbiter helm ls
$NAME REVISION UPDATED STATUS CHART NAMESPACE
$accurate-bolide-9914 2 Thu May 9 12:06:06 2019 DEPLOYED airflow-0.8.2 datarouter-accurate-bolide-9914
$cautious-seal 1 Mon May 6 14:37:34 2019 DEPLOYED postgresql-0.18.1 datarouter
$singed-chimp 3 Thu May 9 12:08:36 2019 DEPLOYED astronomer-0.8.2 datarouter

The accurate-bolide-9914 helm release now lives in the a namespace generated by Astronomer named $basenamespace-release_name (datarouter-accurate-bolide-9914) and lives on the URL $release-name-airflow-BASEDOMAIN.

Switching into the datarouter-accurate-bolide-9914 namespace reveals the Airflow pods.

$root@orbiter: kubectl get namespaces
$NAME STATUS AGE
$datarouter Active 2d
$datarouter-accurate-bolide-9914 Active 1h
$default Active 222d
$
$root@orbiter: kubens datarouter-accurate-bolide-9914
$root@orbiter: kubectl get pods
$
$NAME READY STATUS RESTARTS AGE
$accurate-bolide-9914-pgbouncer-57b46d67bb-b4tpw 2/2 Running 0 1h
$accurate-bolide-9914-scheduler-7d4f5596b5-r457d 2/2 Running 0 1h
$accurate-bolide-9914-statsd-84d76854fb-wz45c 1/1 Running 0 1h
$accurate-bolide-9914-webserver-86bcbc48b-5xcwr 1/1 Running 0 1h
$accurate-bolide-9914-worker-0 1/1 Running 0 1m
$accurate-bolide-9914-redis-0 1/1 Running 0 1m
$accurate-bolide-9914-flower-84f7d67fbd-q5sd7 1/1 Running 0 1m

Since this deployment is running the Celery executor with 1 worker, there are pods for Redis and Flower.

Managing Pods

Airflow logs can be fetched directly from the underlying pods:

$root@orbiter: kubectl logs accurate-bolide-9914-scheduler-7d4f5596b5-r457d
$
$Waiting for host: accurate-bolide-9914-pgbouncer 6543
$Initializing airflow database...
$[2019-05-09 17:53:22,865] {settings.py:182} INFO - settings.configure_orm(): Using pool settings. pool_size=5, pool_recycle=1800, pid=18
$[2019-05-09 17:53:24,345] {__init__.py:51} INFO - Using executor KubernetesExecutor
$DB: postgresql://accurate_bolide_9914_airflow:***@accurate-bolide-9914-pgbouncer:6543/accurate-bolide-9914-metadata
$[2019-05-09 17:53:24,969] {db.py:350} INFO - Creating tables
$INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
$INFO [alembic.runtime.migration] Will assume transactional DDL.
$Done.
$[2019-05-09 17:53:28,159] {settings.py:182} INFO - settings.configure_orm(): Using pool settings. pool_size=5, pool_recycle=1800, pid=8
$[2019-05-09 17:53:29,663] {__init__.py:51} INFO - Using executor KubernetesExecutor
$ ____________ _____________
$ ____ |__( )_________ __/__ /________ __
$____ /| |_ /__ ___/_ /_ __ /_ __ \_ | /| / /
$___ ___ | / _ / _ __/ _ / / /_/ /_ |/ |/ /
$ _/_/ |_/_/ /_/ /_/ /_/ \____/____/|__/
$[2019-05-09 17:53:30,338] {jobs.py:1500} INFO - Starting the scheduler
$[2019-05-09 17:53:30,339] {jobs.py:1508} INFO - Running execute loop for -1 seconds
$[2019-05-09 17:53:30,340] {jobs.py:1509} INFO - Processing each file at most -1 times
$[2019-05-09 17:53:30,340] {jobs.py:1512} INFO - Searching for files in /usr/local/airflow/dags
$[2019-05-09 17:53:30,341] {jobs.py:1514} INFO - There are 2 files in /usr/local/airflow/dags
$[2019-05-09 17:53:30,343] {kubernetes_executor.py:691} INFO - Start Kubernetes executor

A full description of a pods status, resource request, and other data can be found with the describe command

$root@orbiter: kubectl describe po/accurate-bolide-9914-scheduler-7d4f5596b5-g72pg
$Name: accurate-bolide-9914-scheduler-7d4f5596b5-g72pg
$Namespace: datarouter-accurate-bolide-9914
$Priority: 0
$PriorityClassName: <none>
$Node: gke-astronomer-dev-l-astronomer-dev-n-1c6fc689-s8pg/10.150.0.77
$Start Time: Thu, 09 May 2019 13:53:20 -0400
$Labels: component=scheduler
$ platform=singed-chimp
$ pod-template-hash=3809115261
$ release=accurate-bolide-9914
$ tier=airflow
$ workspace=cjvgu6b2d00110b785tfxyqp0

Pods can also be deleted as a way to restart any Airflow component.

root@orbiter: kubectl delete po/accurate-bolide-9914-scheduler-7d4f5596b5-r457d

This will delete that copy of the pod and spin up a new one. All pods in an Airflow deployment are meant to be stateless, so deleting one and letting it recreate should not cause any

Other Resources

For additional kubectl commands, check out this Kubernetes Cheat Sheet.