KUBERNETES(1) راهنمای کاربر kubernetes KUBERNETES(1)

kubectl-drain - تخلیه نود به منظور آماده‌سازی برای نگهداری

kubectl drain [OPTIONS]

تخلیه نود به منظور آماده‌سازی برای نگهداری.

نود داده‌شده به عنوان غیرقابل‌زمان‌بندی (unschedulable) علامت‌گذاری می‌شود تا از ورود پادهای جدید جلوگیری شود. اگر سرور API از اخراج (eviction) پشتیبانی کند [https://kubernetes.io/docs/concepts/workloads/pods/disruptions]، دستور 'drain' پادها را اخراج می‌کند. در غیر این صورت، از دستور عادی DELETE برای حذف پادها استفاده خواهد کرد. دستور 'drain' تمام پادها به جز پادهای آینه‌ای (mirror pods که از طریق سرور API قابل حذف نیستند) را اخراج یا حذف می‌کند. اگر پادهای تحت مدیریت daemon set وجود داشته باشند، drain بدون گزینه --ignore-daemonsets ادامه نخواهد یافت، و در هر صورت هیچ پاد تحت مدیریت daemon set را حذف نخواهد کرد، زیرا آن پادها بلافاصله توسط کنترل‌کننده daemon set که علامت‌های غیرقابل‌زمان‌بندی را نادیده می‌گیرد جایگزین می‌شوند. اگر پادهایی وجود داشته باشند که نه پاد آینه‌ای هستند و نه توسط replication controller، replica set، daemon set، stateful set یا job مدیریت می‌شوند، drain هیچ پادی را حذف نخواهد کرد مگر اینکه از --force استفاده کنید. همچنین در صورتی که منبع مدیریت‌کننده یک یا چند پاد مفقود شده باشد، --force اجازه ادامه فرآیند حذف را می‌دهد.

دستور 'drain' منتظر خاتمه ملایم (graceful termination) می‌ماند. تا زمانی که دستور تکمیل نشده است، نباید روی ماشین عملیاتی انجام دهید.

هنگامی که آماده بازگرداندن نود به چرخه سرویس‌دهی بودید، از دستور kubectl uncordon استفاده کنید که نود را مجدداً قابل زمان‌بندی می‌کند.

گردش کار: https://kubernetes.io/images/docs/kubectl_drain.svg

--chunk-size=500 بازگرداندن فهرست‌های بزرگ به صورت تکه‌ای (chunk) به جای یکباره. برای غیرفعال کردن مقدار 0 را وارد کنید.

--delete-emptydir-data=false ادامه دادن حتی در صورتی که پادهایی از emptyDir استفاده می‌کنند (داده‌های محلی که هنگام تخلیه نود حذف خواهند شد).

--disable-eviction=false اجبار drain به استفاده از delete، حتی اگر اخراج (eviction) پشتیبانی شود. این کار بررسی PodDisruptionBudgets را نادیده می‌گیرد؛ با احتیاط استفاده شود.

--dry-run="none" باید یکی از مقادیر "none"، "server" یا "client" باشد. اگر راهبرد client باشد، فقط شیئی را که ارسال خواهد شد چاپ می‌کند بدون اینکه آن را بفرستد. اگر راهبرد server باشد، درخواست سمت سرور را بدون پایدارسازی و ذخیره منبع ارسال می‌کند.

--force=false ادامه دادن حتی در صورتی که پادهایی وجود داشته باشند که کنترل‌کننده‌ای برای آن‌ها اعلام نشده باشد.

--grace-period=-1 مدت زمان به ثانیه که به هر پاد برای خاتمه ملایم داده می‌شود. اگر منفی باشد، از مقدار پیش‌فرض مشخص‌شده در پاد استفاده خواهد شد.

--ignore-daemonsets=false نادیده گرفتن پادهای تحت مدیریت DaemonSet.

--pod-selector="" انتخاب‌گر برچسب برای فیلتر کردن پادها روی نود

-l, --selector="" انتخاب‌گر (پرس‌وجوی برچسب) برای فیلتر کردن، از '='، '=='، '!='، 'in' و 'notin' پشتیبانی می‌کند (مانند ‎-l key1=value1,key2=value2,key3 in (value3)‎). اشیاء منطبق باید تمام محدودیت‌های برچسب مشخص‌شده را برآورده کنند.

--skip-wait-for-delete-timeout=0 اگر مقدار DeletionTimestamp پاد قدیمی‌تر از N ثانیه باشد، از انتظار برای پاد صرف‌نظر می‌شود. برای صرف‌نظر کردن، مقدار ثانیه‌ها باید بزرگتر از 0 باشد.

--timeout=0s مدت زمان انتظار پیش از انصراف؛ صفر به معنی زمان نامحدود است

--as="" نام کاربری برای جعل هویت (impersonate) در این عملیات. کاربر می‌تواند یک کاربر معمولی یا یک حساب خدمت (service account) در یک فضای نام (namespace) باشد.

--as-group=[] گروه برای جعل هویت در این عملیات؛ این فلگ می‌تواند برای تعیین چندین گروه تکرار شود.

--as-uid="" شناسه UID برای جعل هویت در این عملیات.

--as-user-extra=[] اطلاعات اضافی کاربر برای جعل هویت در این عملیات؛ این فلگ می‌تواند برای مشخص کردن چندین مقدار برای یک کلید یکسان تکرار شود.

--cache-dir="/home/username/.kube/cache" دایرکتوری پیش‌فرض کش

--certificate-authority="" مسیر فایل گواهینامه برای مرجع صدور گواهینامه (certificate authority)

--client-certificate="" مسیر فایل گواهینامه کلاینت برای TLS

--client-key="" مسیر فایل کلید کلاینت برای TLS

--cluster="" نام کلاستر kubeconfig برای استفاده

--context="" نام کانتکست kubeconfig برای استفاده

--disable-compression=false در صورت true بودن، از فشرده‌سازی پاسخ‌ها برای تمام درخواست‌ها به سرور صرف‌نظر می‌شود

--insecure-skip-tls-verify=false در صورت true بودن، اعتبار گواهینامه سرور بررسی نخواهد شد. این کار اتصالات HTTPS شما را ناامن می‌کند

--kubeconfig="" مسیر فایل kubeconfig برای استفاده در درخواست‌های CLI.

--kuberc="" مسیر فایل kuberc برای استفاده در تنظیمات ترجیحی. این قابلیت می‌تواند با export کردن ویژگی KUBECTL_KUBERC=false یا خاموش کردن ویژگی با KUBERC=off غیرفعال شود.

--match-server-version=false الزام به تطابق نسخه سرور با نسخه کلاینت

-n, --namespace="" در صورت وجود، دامنه فضای نام (namespace) برای این درخواست CLI

--password="" رمز عبور برای احراز هویت پایه (basic authentication) در سرور API

--profile="none" نام پروفایل برای ثبت. یکی از موارد (none|cpu|heap|goroutine|threadcreate|block|mutex|trace)

--profile-output="profile.pprof" نام فایلی که پروفایل در آن ذخیره می‌شود

--request-timeout="0" مدت زمان انتظار پیش از انصراف از یک درخواست به سرور. مقادیر غیر صفر باید شامل واحد زمانی متناظر باشند (مانند 1s، 2m، 3h). مقدار صفر یعنی درخواست‌ها هرگز منقضی نشوند (بدون وقفه زمانی).

-s, --server="" آدرس و پورت سرور Kubernetes API

--tls-server-name="" نام سرور برای اعتبارسنجی گواهینامه سرور. در صورت عدم ارائه، از hostname استفاده‌شده برای برقراری ارتباط با سرور استفاده می‌شود

--token="" توکن Bearer برای احراز هویت در سرور API

--user="" نام کاربر kubeconfig برای استفاده

--username="" نام کاربری برای احراز هویت پایه در سرور API

--version=false گزینه --version یا --version=raw اطلاعات نسخه را چاپ کرده و خارج می‌شود؛ --version=vX.Y.Z... نسخه گزارش‌شده را تنظیم می‌کند

--warnings-as-errors=false در نظر گرفتن هشدارهای دریافتی از سرور به عنوان خطا و خروج با کد وضعیت غیر صفر

# Drain node "foo", even if there are pods not managed by a replication controller, replica set, job, daemon set, or stateful set on it
kubectl drain foo --force
# As above, but abort if there are pods not managed by a replication controller, replica set, job, daemon set, or stateful set, and use a grace period of 15 minutes
kubectl drain foo --grace-period=900

kubectl(1),

ژانویه ۲۰۱۵، در ابتدا توسط Eric Paris (eparis at redhat dot com) بر پایه محتوای منبع kubernetes گردآوری شد، اما امید است که از آن زمان به بعد به طور خودکار تولید شده باشند!

Jan 2015 Eric Paris