کامپوننت API Server چیه و چرا مرکز همه چیزه؟
—————————
هیچ کامپوننتی توی Kubernetes مستقیم با هم حرف نمیزنه. Scheduler، Controller Manager، kubelet، همه فقط با یه نقطه در ارتباطن: API Server. هر درخواستی، از هر جایی، باید از اینجا رد بشه.
ساختار HTTP APIش هم کاملاً قابل پیشبینیه:
/api/<version>namespaces/<namespace>/<resource-type><resource-name>
پس وقتی میزنی:
kubectl get pod nginx -n dev
پشت صحنه این اتفاق میفته:
کامپوننت kubectl درخواست رو تبدیل میکنه به یه HTTP GET ساده روی:
/api/v1/namespaces/dev/pods/nginx
این درخواست وارد یه pipeline چندمرحلهای توی API Server میشه:
مرحله: 1. Authentication — مشخص میکنه درخواست از طرف کیه: یوزر، Service Account، یا یه کامپوننت دیگه داخل کلاستر.
مرحله: 2. Authorization— چک میکنه همون هویت، اصلاً مجوز این عملیات رو داره یا نه. معمولاً از طریق RBAC.
مرحله: 3. Admission Control— قبل از finalize شدن، یه سری Webhook و Controller بررسیش میکنن، گاهی حتی تغییرش میدن (مثلاً تزریق sidecar یا اعمال resource limit).
بعد از عبور از این مراحل، API Server با etcd صحبت میکنه؛ چه برای خوندن state فعلی، چه برای persist کردن تغییر جدید.
نکته مهم اینه API Server هیچ منطق scheduling یا اجرایی نداره. کارش فقط validate کردن، ذخیرهسازی، و broadcast کردن state از طریق مکانیزم Watch هست.
@DevTwitter | <Alireza Taghikhani/>
Post #12558
6.17K
- 👍 9
- ❤ 5