مدیریت ETCD
etcd یک پایگاهدادهی key-value توزیعشده و با کارایی بالا است که برای ذخیره دادههای حیاتی کوبرنتیز استفاده میشود. در کوبرنتیز، etcd نقش source of truth را ایفا میکند و تمام اطلاعات مربوط به وضعیت cluster (مانند وضعیت nodes، pods، configurations و غیره) را ذخیره میکند.
وظایف اصلی etcd در کوبرنتیز شامل موارد زیر است:
- State Management: ذخیره وضعیت جاری و desired state برای هماهنگی بین control plane و اجزای مختلف.
- Leader Election: پشتیبانی از فرآیندهای انتخاب رهبر (leader) برای هماهنگی در سیستمهای توزیعشده.
- Configuration Management: ذخیره تنظیمات پیکربندی که توسط API Server کوبرنتیز خوانده و نوشته میشوند.
پایداری و دسترسی بالا (High Availability) در etcd بسیار مهم است، زیرا از دست دادن دادههای etcd میتواند به از دست رفتن اطلاعات کل cluster منجر شود. برای این منظور در سرویس کوبرنتیز ستون، به طور خودکار از etcd نسخهی پشتیبان (backup) گرفته میشود.
کامپوننت etcd از کامپوننتهای مدیریتی کوبرنتیز است که در سرویس کوبرنتیز ابری ستون، توسط ستون نگهداری و بهینهسازی میشود. کاربر نیز میتواند با تنظیم مانیتورینگ و موارد مشابه از کیفیت نگهداری این کامپوننت در کلاستر، اطمینان حاصل کند.
دیتابیس etcd برای اینکه قابل اتکا باقی بماند، نیاز به نگهداری دورهای دارد. این نگهداری معمولاً به صورت خودکار و بدون خرابی یا کاهش عملکرد توسط خود etcd انجام میشود و منابع ذخیرهسازی مصرف شده توسط etcd را مدیریت میکند. مقدار ماکزیمم حافظه که etcd استفاده میکند توسط فلگ quota-backend-bytes محدود میشود. این مقدار در ابتدا به طور پیشفرض توسط etcd برابر با ۲ گیگابایت تنظیم میشود. همچنین حداکثر اندازهی پیشنهادی etcd برای این مقدار 8 گیگابایت است و برای جلوگیری از جابجایی یا تمام شدن حافظه، ماشین باید حداقل به این اندازه مموری داشته باشد.
اگر یکی از اعضای etcd منابع بیشتری که از مقدار quota تعریف شده مصرف کند، یک هشدار (alarm) ایجاد میشود که etcd را در حالت تعمیر و نگهداری با عملیات محدود قرار میدهد. برای جلوگیری از پر شدن فضا، تاریخچه فضای کلید etcd به صورت خودکار توسط خود etcd فشرده (compact) میشود.
مانیتورینگ etcd برای اطمینان از سلامت و عملکرد کلاستر بسیار مهم است. این راهنما دستورالعملهای گامبهگام برای تنظیم مانیتورینگ etcd و بررسی روشهای مختلف برای انجام این کار را ارائه میدهد.
ابتدا پاد etcd را در کنترل پلین شناسایی کنید.
به دنبال پادی با نام مشابه <etcd-node-name> بگردید.
سرتیفیکیتها را از پاد etcd کپی کنید.
سرتیفیکیتهای etcd را در یک secret ذخیره کنید.
اگر Prometheus را در کلاستر خود نصب نکردهاید، مراحل زیر را برای دیپلوی آن دنبال کنید. در غیر این صورت این گام را رد کنید:
Prometheus و Grafana را با استفاده از چارت Helm دیپلوی کنید.
پس از دیپلوی میتوانید از طریق port-forward و یا expose کردن سرویسها به رابطهای Prometheus و Grafana دسترسی پیدا کنید.
اطلاعات پیشفرض Grafana:
- نام کاربری: admin
رمز عبور: با دستور زیر بازیابی کنید:
سپس آن را اعمال کنید.
سپس آن را اعمال کنید.
تارگت های Prometheus را بررسی کنید تا اطمینان حاصل کنید متریکهای etcd جمعآوری میشوند.
به http://localhost:9090/targets بروید و اطمینان حاصل کنید که تارگت های etcd بهصورت UP ظاهر میشود.
یک داشبورد آماده etcd را از جامعه Grafana وارد کنید. به Dashboards > Import بروید و ID داشبورد را وارد کنید یا فایل JSON را آپلود کنید. به طور مثال می توانید ازاین دشبورد آماده استفاده نمایید.

همچنین میتوانید الرتهایی برای etcd ست کنید.
- الرت برای سایز دیتابیس:
- وضعیت لیدر: etcd_server_has_leader == 0
- تأخیر دیسک: etcd_disk_backend_commit_duration_seconds
- پیشنهادات ناموفق: etcd_server_proposals_failed_total