Ի՞նչ տեսակների կոնտեյներներ կան Kubernetes-ում։
sobes.tech AI
Պատասխան AI-ից
ՈՒ Kubernetes-ում չկա "տիպեր" կոնտեյներներ որպես այդպիսին տարբեր կոնտեյներիզացիայի տեխնոլոգիաների իմաստով: Բոլոր Kubernetes-ում գործարկվող կոնտեյներները ստանդարտ կոնտեյներներ են (հաճախ Docker-ի կամ համատեղելի շարժիչների վրա, ինչպիսիք են containerd կամ CRI-O):
Նշված օբյեկտների տեսակները, որոնք կարող են պարունակել կոնտեյներներ Kubernetes-ում, ներառում են՝
- Pod: Kubernetes-ի ամենափոքր գործարկելի միավորն է: Մի Pod կարող է պարունակել մեկ կամ մի քանի կոնտեյներներ, որոնք միասին օգտագործում են ցանցային տարածք, պահեստային տարածք և ունեն ընդհանուր կյանքի ցիկլ: Սա հիմնական "տիպ" է, որը գործարկում է կոնտեյներներ:
- Deployment: Օբյեկտ բարձր մակարդակի, որը կառավարում է Pod-ների հավաքականը: Պահպանում է դեկլարատիվ թարմացումներ և սքեյլավորում: Deployment-ը ստեղծում է ReplicaSet, որը հետագայում կառավարում է Pod-ները: Կոնտեյներները սահմանվում են Deployment-ի հղում ունեցող Pod-ի հատուկագծում:
- StatefulSet: Դիմում Deployment-ի նման, բայց նախատեսված է վիճակային ծրագրերի համար: Հաստատում է կայուն ցանցային անուններ և պահեստային տարածքներ Pod-ների համար: Կոնտեյներները նույնպես սահմանվում են Pod-ի հատուկագծում:
- DaemonSet: Համոզվում է, որ Pod-ը աշխատում է բոլոր (կամ նշված) հանգույցներում: Օգտագործվում է ծառայությունների կոնտեյներներ գործարկելու համար, ինչպիսիք են լոգերի հավաքիչները կամ մոնիտորինգի գործակալները: Կոնտեյներները սահմանվում են Pod-ի հատուկագծում:
- Job: Ստեղծում է մեկ կամ մի քանի Pod և ապահովում է նրանց կատարման հաջող ավարտը: Կոնտեյներները սահմանվում են Pod-ի հատուկագծում:
- CronJob: Ստեղծում է Jobs ժամանակացույցով: Կոնտեյներները սահմանվում են Pod-ի հատուկագծում, կապված Job-ի հետ:
Հիմնական է հասկանալ, որ կոնտեյներն ինքնին սահմանվում է Pod-ի հատուկագծում: Կառավարիչ օբյեկտները (Deployment, StatefulSet և այլն) միայն որոշում են, թե ինչպես պետք է տեղադրվեն, սքեյլավորվեն և կառավարվեն այդ Pod-ները (և, հետևաբար, կոնտեյներները ներսում):
Եթե նկատի ունեք ոչ թե "տիպ" կոնտեյներ ըստ տեխնոլոգիայի, այլ տարբեր տեսակի կոնտեյներներ մեկ Pod-ի ներսում, ապա կարելի է տարբերել՝
- Application Containers: Հիմնական կոնտեյներներ, որոնք իրականացնում են ծրագրի բիզնես տրամաբանությունը:
- Init Containers: Կոնտեյներներ, որոնք գործարկվում են հիմնական կոնտեյներների առաջ: Օգտագործվում են նախապատրաստական աշխատանքներ կատարելու համար, ինչպիսիք են տվյալների նախապատրաստումը կամ կոնֆիգուրացիայի կարգավորումը: Դրանք կատարվում են հերթով և պետք է հաջող ավարտվեն, նախքան հիմնական կոնտեյներները սկսվեն:
- Sidecar Containers: Կոնտեյներներ, որոնք աշխատում են հիմնական կոնտեյներների կողքին և տրամադրում են լրացուցիչ ֆունկցիոնալություն, ինչպիսիք են լոգերի հավաքումը, մոնիտորինգը, ցանցային թրաֆիկի պրոքսիավորումը և այլն:
Նմուշ YAML կոնֆիգուրացիա Pod-ի համար՝ init կոնտեյներ և հիմնական կոնտեյներ:
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
initContainers: # Init կոնտեյներների բաժին
- name: init-myservice
image: myregistry/init-service:1.0.0
command: ["sh", "-c", "echo Initializing... && sleep 5"]
# Այս կոնտեյներն առաջինը գործարկվելու է և պետք է հաջող ավարտվի
containers: # Հիմնական կոնտեյներների բաժին
- name: myapp-container
image: myregistry/myapp:latest
ports:
- containerPort: 80
# Այս կոնտեյներն գործարկվելու է բոլոր init կոնտեյներների հաջող ավարտից հետո