مؤلفه های اصلی و معماری Kubernetes

کربن (K8S) یک سیستم ارکستراسیون کانتینر است که امکان استقرار خودکار ، مقیاس گذاری و مدیریت برنامه ها را فراهم می کند. برای تعریف مؤلفه های Kubernetes ، ما از پرونده های YAML استفاده می کنیم که نحوه مدیریت ظروف در داخل خوشه را توصیف می کند.
غلاف
غلاف کوچکترین واحد در Kubernetes است. این می تواند حاوی یک یا چند کانتینر باشد. غلافها در صورت لزوم ایجاد و نابود می شوند. آنها به طور پیش فرض پایدار نیستند (اما می تواند از حجم برای ادامه داده ها استفاده کند)بشر
شبکه: ظروف در همان غلاف همان آدرس و درگاه های IP را به اشتراک می گذارند.
ذخیره سازی: حجم ها را می توان بین ظروف درون غلاف نصب و به اشتراک گذاشت.
چرخه زندگی: تمام ظروف موجود در غلاف شروع و متوقف می شوند. اگر غلاف حذف شود ، تمام ظروف موجود در آن خاتمه می یابد.
نمونه ای از نحوه ایجاد یک yaml برای غلاف.
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: app
image: nginx
ماکت
تضمین می کند که تعداد مشخصی از آنها غلاف ماکت ها در حال اجرا هستند.
اگر a غلاف شکست می خورد یا حذف می شود ، ماکت به طور خودکار یک جدید ایجاد می کند غلاف برای جایگزینی آن
انتخاب کنندگان مشخص می کنند که کدام یک از ماکت ها را باید مدیریت کنند.
نمونه ای از نحوه ایجاد یک yaml برای ماکت.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-replicaset
spec:
replicas: 3
selector:
matchLabels:
app: minha-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: nginx
اعزام
به روزرسانی های برنامه و بازپرداخت را مدیریت می کند (بدون خرابی)بشر مدیریت کردن ماکت برای اطمینان از تعداد مورد نظر ماکت های POD.
هر یک اعزام بروزرسانی جدید ایجاد می کند ماکت، امکان کنترل نسخه های مختلف کاربردی. به تدریج غلافهای قدیمی را با موارد جدید جایگزین می کند و اطمینان حاصل می کند که برنامه در طول به روزرسانی در دسترس است.
نمونه ای از نحوه ایجاد یک یام برای استقرار.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: nginx
حالت عالی
برای برنامه هایی که به یک هویت ثابت نیاز دارند ، مانند پایگاه داده استفاده می شود. هر یک غلاف در الف حالت عالی یک شناسه منحصر به فرد و پایدار دریافت می کند و از نام و ذخیره سازی شبکه قابل پیش بینی اطمینان می یابد.
هر کدام را تضمین می کند غلاف حتی پس از خرابی یا شروع مجدد ، حجم مداوم انحصاری دارد.
آدرس های شبکه استاتیک را برای هر یک حفظ می کند غلاف حتی بعد از شروع مجدد
نمونه ای از نحوه ایجاد یک yaml برای stayfulset.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: my-statefulset
spec:
serviceName: "my-service"
replicas: 2
selector:
matchLabels:
app: database
template:
metadata:
labels:
app: database
spec:
containers:
- name: db
image: mysql
خدمت
تعریف می کند که چگونه مجموعه ای از غلاف قابل دسترسی است آدرس های IP و DNS پایدار را برای دسترسی فراهم می کند غلاف، حتی اگر آنها بازآفرینی شوند یا منتقل شوند.
ترافیک شبکه را بین غلافهایی که با آن مطابقت دارند توزیع می کند خدمت انتخاب کننده
نمونه ای از نحوه ایجاد YAML برای خدمات.
apiVersion: v1
kind: Service
metadata:
name: my-servico
spec:
selector:
app: my-app
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 8080
متغیرهای پیکربندی را برای غلافبشر داده ها در نقشه پیکربندی به عنوان جفت ارزش کلیدی ذخیره می شود و این کار را برای آن آسان می کند غلاف برای دسترسی و استفاده
با استفاده از نقشه های پیکربندی تنظیمات برنامه را از کد جدا می کند و مدیریت برنامه را آسان تر می کند. تنظیمات را می توان بدون بازسازی تصویر کانتینر تغییر داد.
بوها نقشه پیکربندی حداکثر اندازه 1 مگابایت دارد. برای تنظیمات بزرگتر ، راه حل های دیگر مانند حجم مداوم ممکن است مورد نیاز باشد.
نمونه ای از نحوه ایجاد YAML برای خدمات.
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
APP_MODE: "production"
TIMEOUT: "30"
پایان
Kubernetes دارای چندین مؤلفه است که به مدیریت برنامه ها به روشی مقیاس پذیر و قابل اعتماد کمک می کند. توانایی آن در ارکستر کردن ظروف به طور خودکار به تیم های توسعه و عملیات اجازه می دهد تا به جای نگرانی از پیچیدگی زیرساخت ها ، بر ایجاد ارزش تجاری تمرکز کنند.