خطای “نمی توان Pods با حافظه محلی حذف کرد” به چه معناست؟

در حالی که ما در حال انجام بهروزرسانیهای خوشهای Kubernetes هستیم، یا میخواهیم به سادگی یک گره را قبل از حذف آن پاک کنیم، میتوانیم با خطای “**نمیتوان Pods را با حافظه محلی حذف کرد” داشته باشیم.
$ kubectl drain node-1 --ignore-daemonsets
...
error: cannot delete Pods with local storage (use --delete-emptydir-data to override):
راه حل بسیار ساده است و قبلاً در گزارش خطا ذکر شده است. فقط باید گزینه را اضافه کنیم --delete-emptydir-data
به فرمان شما تا کار کند.
اما این یعنی چه ؟
توضیح خطا
این خطا می خواهد به شما نشان دهد که چند غلاف دارید (که روی گره ای هستند که می خواهید تمیز کنید) دارند ذخیره سازی محلی مانند valaDir.
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- image: busybox
name: busybox
volumeMounts:
- mountPath: /data
name: my-volume
volumes:
- name: my-volume
emptyDir: {}
با استفاده از یک valaDir حجم چیزی است که باید درک شود تا از این نوع مسائل جلوگیری شود.
یک valaDir حجم فقط در گره ای وجود دارد که غلاف مربوطه در آن قرار دارد. برخلاف غلاف ها، به گره جدیدی منتقل نمی شود، اما خواهد بود نابود، قبل از اینکه بازآفرینی کرد روی گره جدید
این بدان معنی است که تمام داده هایی که در گره “قدیمی” هستند، خواهند بود حذف شده.
به همین دلیل است که ما باید نسبت به آنچه که یک است آگاه باشیم valaDir جلد. اگر از این برای یک پایگاه داده استفاده می کنید، ممکن است بتوانید به صورت دستی کاری برای استخراج داده ها و انتقال آن به گره جدید انجام دهید. اما همیشه نمی توانید آن را انجام دهید. برخی از سرویسهایی که از حجمها استفاده میکنند، ویژگی «استخراج» ندارند.
بنابراین می توانیم نتیجه بگیریم که خطا است نمی توان Pod را با حافظه محلی حذف کرد بیشتر یک “جعبه تایید” است که به شما اطلاع می دهد که فضای ذخیره سازی محلی دارید و در صورت امکان باید استخراج شود، در غیر این صورت برای همیشه حذف خواهد شد.
امیدوارم به شما کمک کند! 🍺