Di episode ini kita akan coba bahas kubectl all keyword untuk mengelola multiple Kubernetes resource sekaligus. Kita akan mempelajari cara menggunakan kubectl get all, kubectl delete all, dan memahami resource apa saja yang included di all.

Catatan
Untuk kalian yang ingin membaca episode sebelumnya, bisa click thumbnail episode 16 di bawah ini
Di episode sebelumnya kita sudah belajar tentang Node Selector untuk kontrol Pod placement di specific node. Selanjutnya di episode 17 kali ini, kita akan coba bahas all keyword di kubectl, yang menyediakan cara convenient untuk bekerja dengan multiple Kubernetes resource sekaligus.
Catatan: Disini saya akan menggunakan Kubernetes Cluster yang di install melalui K3s.
Saat mengelola Kubernetes cluster, kalian sering perlu view atau manage multiple resource type simultaneously. Daripada running separate command untuk Pod, Service, Deployment, dll, kubectl menyediakan all keyword sebagai shortcut untuk bekerja dengan common resource together.
all keyword di kubectl adalah special resource type yang represent collection dari commonly used Kubernetes resource. Saat kalian gunakan kubectl get all, dia retrieve multiple resource type dalam single command, memberikan comprehensive view dari application component kalian.
Bayangkan all seperti preset filter yang include most frequently accessed resource - bukan literally "all resource" di cluster kalian, tapi rather curated list dari common workload-related resource.
Karakteristik kunci all keyword:
all keyword include resource type ini:
Important
Penting: all keyword TIDAK include semua resource type. Dia exclude ConfigMap, Secret, PersistentVolume, PersistentVolumeClaim, Namespace, Node, dan banyak resource lain.
Penggunaan paling umum dari all adalah dengan get command.
Get all resource di current namespace:
sudo kubectl get allContoh output:
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-abc123-xyz 1/1 Running 0 5m
pod/nginx-deployment-abc123-def 1/1 Running 0 5m
pod/nginx-deployment-abc123-ghi 1/1 Running 0 5m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 30d
service/nginx ClusterIP 10.43.100.50 <none> 80/TCP 5m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-deployment 3/3 3 3 5m
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-deployment-abc123 3 3 3 5mView resource di specific namespace:
sudo kubectl get all --namespace productionAtau gunakan shorthand:
sudo kubectl get all -n productionView resource across all namespace:
sudo kubectl get all --all-namespacesAtau gunakan shorthand:
sudo kubectl get all -AOutput include namespace column:
NAMESPACE NAME READY STATUS RESTARTS AGE
default pod/nginx-abc123 1/1 Running 0 5m
production pod/api-xyz789 1/1 Running 0 10m
development pod/test-def456 1/1 Running 0 2m
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
default service/kubernetes ClusterIP 10.43.0.1 <none> 443/TCP
production service/api ClusterIP 10.43.100.50 <none> 8080/TCPShow additional detail seperti node placement dan IP address:
sudo kubectl get all -o wideFilter resource by label:
sudo kubectl get all -l app=nginxGet resource dengan specific label value:
sudo kubectl get all -l environment=productionGet resource dengan multiple label:
sudo kubectl get all -l app=nginx,environment=productionFilter by field value:
sudo kubectl get all --field-selector status.phase=RunningMonitor resource secara real-time:
sudo kubectl get all --watchAtau gunakan shorthand:
sudo kubectl get all -wall keyword juga bekerja dengan delete command untuk remove multiple resource sekaligus.
Warning
Warning: Hati-hati dengan kubectl delete all karena dia remove multiple resource simultaneously. Selalu verify namespace dan gunakan label selector untuk avoid accidental deletion.
Delete all resource di current namespace:
sudo kubectl delete all --allIni delete semua Pod, Service, Deployment, ReplicaSet, dll di current namespace.
Delete all resource di specific namespace:
sudo kubectl delete all --all --namespace developmentAtau:
sudo kubectl delete all --all -n developmentDelete hanya resource yang matching specific label:
sudo kubectl delete all -l app=nginxDelete resource dengan multiple label criteria:
sudo kubectl delete all -l app=nginx,environment=developmentPreview apa yang akan di-delete tanpa actually delete:
sudo kubectl delete all --all --dry-run=clientAtau dengan server-side dry run:
sudo kubectl delete all --all --dry-run=serverGet list resource sebelum deletion:
# Pertama, lihat apa yang akan di-delete
sudo kubectl get all -l app=nginx
# Kemudian delete
sudo kubectl delete all -l app=nginxKalian juga bisa gunakan describe dengan all:
sudo kubectl describe allIni show detailed information untuk all resource di current namespace.
Describe all resource dengan specific label:
sudo kubectl describe all -l app=nginxCheck all resource untuk specific application:
sudo kubectl get all -l app=web-appOutput:
NAME READY STATUS RESTARTS AGE
pod/web-app-abc123-xyz 1/1 Running 0 10m
pod/web-app-abc123-def 1/1 Running 0 10m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/web-app ClusterIP 10.43.50.100 <none> 80/TCP 10m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/web-app 2/2 2 2 10m
NAME DESIRED CURRENT READY AGE
replicaset.apps/web-app-abc123 2 2 2 10mRemove all development resource:
# Pertama, verify apa yang akan di-delete
sudo kubectl get all -n development
# Kemudian delete
sudo kubectl delete all --all -n developmentWatch resource during deployment:
sudo kubectl get all -l app=api -wView production resource:
sudo kubectl get all -l environment=production -n productionView staging resource:
sudo kubectl get all -l environment=staging -n stagingDelete all failed job dan pod nya:
# View failed job
sudo kubectl get jobs --field-selector status.successful=0
# Delete all resource untuk failed job
sudo kubectl delete all -l job-name=<job-name>Deploy dan verify application:
# Deploy application
sudo kubectl apply -f app-deployment.yml
# Check all resource
sudo kubectl get all -l app=myapp
# Jika ada issue, delete dan redeploy
sudo kubectl delete all -l app=myapp
sudo kubectl apply -f app-deployment.ymlResource penting yang TIDAK included di all:
# Tidak included di 'all'
sudo kubectl get configmaps
sudo kubectl get secrets# Tidak included di 'all'
sudo kubectl get persistentvolumes
sudo kubectl get persistentvolumeclaims# Tidak included di 'all'
sudo kubectl get namespaces# Tidak included di 'all'
sudo kubectl get nodes# Tidak included di 'all'
sudo kubectl get serviceaccounts# Tidak included di 'all'
sudo kubectl get ingress# Tidak included di 'all'
sudo kubectl get customresourcedefinitionsUntuk get ALL resource type (including yang tidak di all):
sudo kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n <namespace>Atau untuk all namespace:
sudo kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -AGet quick overview dari application kalian:
sudo kubectl get all -l app=myapp -o wideClean up entire namespace:
# Preview
sudo kubectl get all -n temp-namespace
# Delete
sudo kubectl delete all --all -n temp-namespaceCheck all resource saat troubleshooting:
# Check current state
sudo kubectl get all
# Watch untuk change
sudo kubectl get all -w
# Get detailed info
sudo kubectl describe allCompare resource across environment:
# Production
sudo kubectl get all -n production -l app=api
# Staging
sudo kubectl get all -n staging -l app=apiManage application release:
# Check current release
sudo kubectl get all -l release=v1.0
# Delete old release
sudo kubectl delete all -l release=v0.9
# Deploy new release
sudo kubectl apply -f release-v1.1.ymlProblem: Expect all include ConfigMap, Secret, PVC, dll.
Solusi: Remember all hanya include workload resource. Check resource lain separately:
sudo kubectl get all
sudo kubectl get configmaps
sudo kubectl get secrets
sudo kubectl get pvcProblem: Running kubectl delete all --all tanpa check dulu.
Solusi: Selalu verify sebelum delete:
# Pertama, lihat apa yang akan di-delete
sudo kubectl get all
# Kemudian delete jika yakin
sudo kubectl delete all --allProblem: Delete resource di wrong namespace.
Solusi: Selalu specify namespace explicitly:
# Check current namespace
sudo kubectl config view --minify | grep namespace
# Specify namespace explicitly
sudo kubectl delete all --all -n developmentProblem: Delete lebih dari intended.
Solusi: Gunakan label selector untuk precision:
# Daripada delete everything
# sudo kubectl delete all --all
# Delete specific app
sudo kubectl delete all -l app=myappProblem: Delete all tapi leave ConfigMap, Secret, PVC.
Solusi: Delete dependent resource separately:
sudo kubectl delete all -l app=myapp
sudo kubectl delete configmap -l app=myapp
sudo kubectl delete secret -l app=myapp
sudo kubectl delete pvc -l app=myappProblem: Accidentally delete production resource.
Solusi: Gunakan dry run dulu:
# Dry run untuk lihat apa yang akan di-delete
sudo kubectl delete all --all --dry-run=client
# Jika correct, run actual delete
sudo kubectl delete all --allBe explicit tentang namespace:
# Bagus
sudo kubectl get all -n development
# Risky (gunakan default namespace)
sudo kubectl get allFilter resource dengan label:
# Bagus - specific
sudo kubectl get all -l app=myapp,version=v2
# Less specific
sudo kubectl get allSelalu check sebelum deletion:
# Step 1: View
sudo kubectl get all -l app=myapp
# Step 2: Verify it's correct
# Step 3: Delete
sudo kubectl delete all -l app=myappTest deletion dulu:
sudo kubectl delete all --all -n temp --dry-run=clientJangan lupa non-all resource:
# Delete application completely
sudo kubectl delete all -l app=myapp
sudo kubectl delete configmap -l app=myapp
sudo kubectl delete secret -l app=myapp
sudo kubectl delete pvc -l app=myapp
sudo kubectl delete ingress -l app=myappGet better visibility:
# Wide output
sudo kubectl get all -o wide
# Custom column
sudo kubectl get all -o custom-columns=NAME:.metadata.name,KIND:.kind,STATUS:.status.phase
# JSON untuk scripting
sudo kubectl get all -o jsonBuat documented cleanup script:
#!/bin/bash
# Cleanup development environment
echo "Cleaning up development namespace..."
# Show apa yang akan di-delete
echo "Resources to be deleted:"
kubectl get all -n development
# Confirm
read -p "Continue with deletion? (yes/no): " confirm
if [ "$confirm" = "yes" ]; then
kubectl delete all --all -n development
kubectl delete configmap --all -n development
kubectl delete secret --all -n development
echo "Cleanup complete"
else
echo "Cleanup cancelled"
fiWatch resource during operation:
# Terminal 1: Watch resource
sudo kubectl get all -w
# Terminal 2: Perform operation
sudo kubectl apply -f deployment.ymlDaripada all, specify exact type:
sudo kubectl get pods,services,deploymentsGet resource dari specific API group:
sudo kubectl get deployments.apps,statefulsets.appsBuat shell alias untuk common operation:
alias kga='kubectl get all'
alias kgaa='kubectl get all --all-namespaces'
alias kdaa='kubectl delete all --all'Pada episode 17 ini, kita telah membahas bekerja dengan all keyword di Kubernetes. Kita sudah belajar apa yang included di all, cara menggunakannya dengan get dan delete command, dan important consideration saat bekerja dengan multiple resource.
Key takeaway:
get, delete, dan describe commandallall keyword adalah convenient tool untuk manage Kubernetes resource, tapi require careful use, especially dengan delete operation. Dengan memahami apa yang included dan follow best practice, kalian bisa efficiently manage cluster resource sambil avoid common pitfall.
Bagaimana, makin jelas kan tentang bekerja dengan all resource di Kubernetes? Di episode 18 berikutnya, kita akan membahas Service, salah satu konsep paling fundamental di Kubernetes networking untuk expose dan access application. Jadi, pastikan tetap semangat belajar dan nantikan episode selanjutnya!
Catatan
Untuk kalian yang ingin lanjut ke episode berikutnya, bisa click thumbnail episode 18 di bawah ini