Middle
Kubernetesda Deployment va DaemonSet o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
Deployment, Podlarning nusxalar to'plamini boshqaradi, ularning talab qilinadigan sonini ta'minlaydi va avtomatik o'sishni ta'minlaydi. U ko'p stateless ilovalar uchun mos keladi.
DaemonSet, klasterdagi har bir tugun (yoki selektor bo'yicha belgilangan tugunlar to'plami)da Pod nusxasining ishga tushirilishini kafolatlaydi. Bu fon vazifalari uchun, masalan, loglarni yig'ish yoki monitoring uchun ishlatiladi.
Asosiy farqlar quyidagilardir:
| Xususiyat | Deployment | DaemonSet |
|---|---|---|
| Maqsad | Podlarning belgilangan sonini saqlash | Har bir tugunda (yoki to'plamda) Pod ishga tushirish |
| Podlar soni | replicas parametri bilan boshqariladi |
Tugunlar soniga qarab belgilanadi |
| O'sish | Gorizontal, talabga binoan | Tugunlar qo'shilishi/olib tashlanishi bilan bog'liq |
| Ishlatish misollari | Veb-serverlar, mikroservislar | Log yig'uvchilar, monitoring agentlari, tarmoq demonlari |
| Yangilash | Bosqichma-bosqich (rolling update) yoki almashtirish | Zarur bo'lsa, tugunlarda avtomatik yangilanadi |
Deployment uchun misol manifest:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # 3 nusxa Pod ishga tushurish
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
DaemonSet uchun misol manifest:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentbit-daemonset
spec:
selector:
matchLabels:
name: fluentbit # Pod selektori uchun etiket
template:
metadata:
labels:
name: fluentbit
spec:
containers:
- name: fluentbit
image: fluent/fluent-bit:1.8 # Log yig'uvchi tasviri
# Log fayllariga kirish uchun qo'shimcha sozlamalar
tolerations:
# Ko'pincha master tugunlarda ishga tushirish uchun zarur
- key: node-role.kubernetes.io/master
effect: NoSchedule