Skip to content

دستورات kubectl توضیح داده شده

دستورات kubectl که روزمره استفاده می‌شوند، بر اساس کار گروه‌بندی شده‌اند: خواندن کلاستر، بررسی بارهای کاری، اعمال و بازگردانی تغییرات، در معرض قرار دادن سرویس‌ها، مدیریت نودها و ساخت اشیای پیکربندی. هر سطر دستور را با یک فراخوانی واقعی همراه می‌کند.

kubectl دستگیرهٔ شما روی یک کلاستر Kubernetes است. مدل، اعلانی (declarative) است: معمولاً یک مانیفست را اعمال می‌کنید (apply -f) نه اینکه چیزها را به‌صورت دستوری بسازید، سپس نتیجه را بازخوانی می‌کنید (get، describe، logs). دستورهای زیر عملیات روزمره را پوشش می‌دهند؛ وقتی در namespace پیش‌فرض نیستید، پرچم namespace (-n name) را اضافه کنید.

جدول مرجع · 59 مورد
59 of 59 rows
کلاستر و context
نشان می‌دهد صفحهٔ کنترل و سرویس‌های اصلی کجا اجرا می‌شوند.kubectl cluster-info
کلاسترها و namespaceهایی را که می‌توانید بین آن‌ها جابه‌جا شوید فهرست می‌کند.kubectl config get-contexts
به یک context دیگر از کلاستر یا namespace سوئیچ می‌کند.kubectl config use-context my-prod
namespace پیش‌فرض context فعلی را تنظیم می‌کند.kubectl config set-context --current --namespace=staging
نام یک context ذخیره‌شده را در kubeconfig شما تغییر می‌دهد.kubectl config rename-context old-name prod
همهٔ نوع‌های منبعی را که کلاستر می‌شناسد فهرست می‌کند.kubectl api-resources
نسخه‌های Kubernetes سمت کلاینت و سرور را چاپ می‌کند.kubectl version
فیلدهایی را که یک منبع پشتیبانی می‌کند، از schema مربوط به API خوانده و نشان می‌دهد.kubectl explain pod.spec.containers
بررسی می‌کند که آیا کاربر فعلی اجازهٔ اجرای یک عمل مشخص را دارد یا نه.kubectl auth can-i delete pods
بررسی بارهای کاری
پادها و وضعیتشان را فهرست می‌کند؛ برای node و IP گزینهٔ -o wide را اضافه کنید.kubectl get pods -A
منابع رایج یک namespace را در یک فراخوانی فهرست می‌کند.kubectl get all
به هر دستور get، ستون‌های node و IP را اضافه می‌کند.kubectl get pods -o wide
یک منبع را به‌صورت مانیفست کامل YAML پشت آن چاپ می‌کند.kubectl get deploy/web -o yaml
deploymentها و تعداد replicaهای آماده را فهرست می‌کند.kubectl get deployments
stateful setها و replicaهای آماده‌شان را فهرست می‌کند.kubectl get statefulsets
jobهای دسته‌ای و cron jobهای زمان‌بندی‌شده را فهرست می‌کند.kubectl get jobs,cronjobs
رویدادها، labelها و وضعیت یک pod را نشان می‌دهد.kubectl describe pod web-abc
ظرفیت یک node، شرایطش و پادهای در حال اجرا روی آن را نشان می‌دهد.kubectl describe node node-1
خروجی استاندارد یک pod را چاپ می‌کند؛ -f برای دنبال کردن، --previous برای آخرین کرش.kubectl logs -f web-abc
یک دستور را داخل یک pod در حال اجرا اجرا می‌کند.kubectl exec -it web-abc -- sh
CPU و حافظهٔ زنده برای پادها یا نودها (به metrics-server نیاز دارد).kubectl top pods
رویدادهای اخیر مانند pullهای ناموفق و backoffها را فهرست می‌کند.kubectl get events -A --sort-by=.lastTimestamp
قوانین ingress و آدرس‌های load balancer آن‌ها را فهرست می‌کند.kubectl get ingress
فایل‌ها را بین ماشین شما و یک pod در حال اجرا کپی می‌کند.kubectl cp web-abc:/var/log/app.log ./app.log
تا زمانی که یک منبع شرطی را برآورده کند منتظر می‌ماند.kubectl wait --for=condition=ready pod -l app=web
یک pod دورریز را از یک image راه می‌اندازد، بدون نیاز به مانیفست.kubectl run debug --rm -it --image=busybox -- sh
اعمال، مقیاس‌گذاری، انتشار
نشان می‌دهد apply چه چیزی را تغییر می‌داد، بدون اینکه تغییری بدهد.kubectl diff -f deploy.yaml
منابع را از یک فایل مانیفست می‌سازد یا به‌روزرسانی می‌کند.kubectl apply -f deploy.yaml
مانیفست‌ها را اعمال می‌کند و اشیایی که از آن‌ها خارج شده‌اند را حذف می‌کند.kubectl apply -f dir/ --prune -l app=web
یک منبع زنده را در ویرایشگر شما باز می‌کند و هنگام ذخیره اعمالش می‌کند.kubectl edit deploy/web
چند فیلد از یک منبع زنده را تغییر می‌دهد.kubectl patch deploy/web --patch-file fix.json
کانتینرهای یک deployment را به یک image جدید اشاره می‌دهد.kubectl set image deploy/web web=nginx:1.27
یک شیء را جایگزین می‌کند و در صورت نیاز آن را حذف و بازسازی می‌کند.kubectl replace --force -f deploy.yaml
منابع اعلام‌شده در یک فایل مانیفست را حذف می‌کند.kubectl delete -f deploy.yaml
تعداد replicaهای یک deployment را تغییر می‌دهد.kubectl scale deploy/web --replicas=4
پیگیری می‌کند که یک rollout تمام شود یا شکست بخورد.kubectl rollout status deploy/web
بازبینی‌هایی را که یک rollout از آن‌ها گذشته فهرست می‌کند.kubectl rollout history deploy/web
هر pod یک deployment را یکی‌یکی دوباره راه‌اندازی می‌کند.kubectl rollout restart deploy/web
یک deployment را به بازبینی قبلی‌اش برمی‌گرداند.kubectl rollout undo deploy/web
سرویس‌ها و شبکه
سرویس‌ها را با نوع و IP کلاسترشان فهرست می‌کند.kubectl get svc
نشان می‌دهد کدام IPهای pod در حال حاضر پشتیبان هر سرویس هستند.kubectl get endpoints web
یک سرویس می‌سازد که جلوی مجموعه‌ای از پادها قرار می‌گیرد؛ --type=NodePort یا LoadBalancer به بیرون کلاستر می‌رسد.kubectl expose deploy/web --port=80
آدرس load balancer پشت هر ingress را نشان می‌دهد (آلفا).kubectl ingress status -A
سیاست‌هایی را که ترافیک podها را محدود می‌کنند فهرست می‌کند.kubectl get networkpolicies
یک پورت محلی را به یک pod یا سرویس تونل می‌زند.kubectl port-forward svc/web 8080:80
نودها و نگهداری
نودهای کلاستر و وضعیتشان را فهرست می‌کند.kubectl get nodes -o wide
یک node را غیرقابل زمان‌بندی علامت می‌زند (بدون pod جدید).kubectl cordon node-1
یک node را دوباره قابل زمان‌بندی علامت می‌زند.kubectl uncordon node-1
پادها را از یک node بیرون می‌راند و آن را غیرقابل زمان‌بندی علامت می‌زند.kubectl drain node-1 --ignore-daemonsets
یک taint را که پادها را از node دور می‌کند اضافه یا حذف می‌کند.kubectl taint node node-1 key=value:NoSchedule
یک pod گیرکرده را بلافاصله حذف می‌کند و خاموشی منظم را رد می‌کند.kubectl delete pod web-abc --grace-period=0 --force
اشیا و پیکربندی
یک namespace جدید برای محدوده‌کردن منابع می‌سازد.kubectl create namespace staging
namespaceها و وضعیتشان را فهرست می‌کند.kubectl get namespaces
کلیدها یا فایل‌های پیکربندی را به‌عنوان یک شیء کلاستر ذخیره می‌کند.kubectl create configmap app --from-file=config.yaml
config mapهای داخل namespace را فهرست می‌کند.kubectl get configmaps
یک رمز عبور یا گواهی را به‌عنوان secret ذخیره می‌کند.kubectl create secret generic db --from-literal=password=s3cret
secretهای داخل namespace را فهرست می‌کند.kubectl get secrets
یک label را روی یک منبع اضافه یا حذف می‌کند.kubectl label pod web-abc tier=backend
فراداده‌ای را می‌چسباند که selectorها نمی‌توانند با آن تطبیق شوند.kubectl annotate deploy/web release=july