k8s 5 Flashcards
Што е Pesistent Volume?
A map to external storage asset.
Што е Persistent Volume Claim?
Тикет кој ги авторизира апликациите (капсулите) да користат некој persistent volume.
Што е Storage Class?
Систем кој ги автоматизира процедурите на storage-то
Што е container storage interface или provisioner?
Дозволува работа со storage,…
Што е storage provider?
Plugin во k8s. Менаџира со функционалностите на сториџот.
Отвора k8s функции преку CSI и менаџира со ресурсите.
За што служат класите на складови?
Начин на апстракција на различни видови складишта. Во манифестите на различни капсули се наведува името на класата на складиштето кое сакаме да го користиме.
Како изгледа манифестот на една класа на складиште?
kind: Storage class
metadata.name: <ime>
provisioner: <CSI></CSI></ime>
Дали на кластерот може да има повеќе класи на складишта?
Да.
Кои се чекорите до постигнување на конекција со складиште?
Најпрво треба да се направи класа на складиштето:
Kind: StorageClass
metadata.name: <name-sc>
provisioner: <CSI> (Configured by a cloud provider or on-premise)</CSI></name-sc>
Потоа се прави PVC објект кој го користат капсулите за поврзување со складиштето:
kind: PersistendVolumeClaim
metadata.name: <pvc-name>
spec.storageClassName: <name-sc></name-sc></pvc-name>
За крај секоја капсула која сака да се поврзи со складиштето:
spec.volumes.persistendVolumeClaim.claimName : <pvc-name></pvc-name>
Во кој објект се дефинира наччинот на пристап до складиштето?
Vo PVC објектот:
spec.accessModes: -<accessMode></accessMode>
Какви начини за пристап до едно складиште постојат?
ReadWriteOnce, ReadWriteMany, ReadOnlyMany
Дали кога се бриши PVC се бриши и PV
Во зависност од ReclaimPolicy на volume-от. Доколку е Delete се бриши, доколку е Retain се задржува, но не прима конекции од други PVC објекти.
Што е ConfigMap?
Објект кој доаѓа со k8s. Во него се чува конфигурација надвор од капсула. За време на извршување може да се вбризга, инјектира било каде.
Дали ConfigMap се користи за осетливи податоци?
Не.
Од што се содржи еден ConfigMap објект?
Од key-value парови.
Како може да се спои ConfigМаp со капсула?
Како променлива на околина, како аргумент во команда, или како датотека во меморија.
Доколку сакаме да инјектираме мапа како променлива на околината, што треба да се направи?
Во манифестот на капсулата, специфично под env од некој контејнер:
spec.containers.env:
-name: <env_var_name>
valueFrom:
configMapKeyRef:
name: <map_name>
key: <required_key_name></required_key_name></map_name></env_var_name>
Дали со промена на Config мапа, капсула која е веќе во работен тек ќе знае за промената?
Не. Таа капсула ќе знае само за старата вредност.
На кој начин се инјектира конфигурациска мапа, како аргумент во команда за стартување на контејнер?
Вредноста на променливата се превзема на ист начин како и како променлива на околина:
spec.containers.env:
-name: <env_var_name>
valueFrom:
configMapKeyRef:
name: <map_name>
key: <required_key_name></required_key_name></map_name></env_var_name>
Но се користи во:
containers:
- name : <cnt1>
..
-command: ["echo var {<env-var_>}"]</env-var_></cnt1>
Што се недостатоци на инјектирање на мапа како аргумент во команда?
Во суштина инјектирањето како аргумент е исто како и инјектирањето на променлива на околината, но само променливата се користи како аргумент при стартување на контејнер.
Која е предноста на инјектирање на конфигурациска мапа како volume?
Промените во мапата се рефлектираат за време на работење на капсулата.
На кој начин се енкриптирани тајните во k8s?
base64
На колкава големина се ограничени тајните во k8s?
1MiB.
Како се движи работниот тек на тајни?
- Тајната се создава и чува во кластер стор како не енкриптиран објект.
- Кога капсула која го користи е распоредена на некој јазел, тајната се испраќа неенкриптирана до јазелот.
- Кога ќе се стартува капсулата и контејнерите на јазелот, тајната се става во контејнерот и се декодира како обичен текст.
- Кога ќе се избриши капсулата, се бриши и тајната од јазелот.
Која е промената кај капсулите за апликации кои чуваат состојба и апликации кои не чуваат состојба?
Кај оние кои не чуваат состојба има непредвидливи адреси, имиња на домаќини.
Додека оние кои чуваат треба да иамат предвидливи имиња, имиња на домаќин, како и volume bindings.
По кое правило се додаваат нови реплики од StatefulSet?
По растечки редослед. Доколку последно креираната реплика е replica-3, а потребни се уште 2, се креираат replica-4 и replica-5
По кое правило се бришат реплики од StatefulSet?
Од последно креираното, па надолу.
Како се постигнува statefulness, а и self-healing?
Така што освен предиктивното именување на репликите, предиктивно се именуваат и нивните volumes. Кога ќе умре pod-3, тој се поврзува со vol-pod-3 кога е одново стартуван.
Која е вредноста на .spec.clusterIP за да се креираат предиктивни DNS за секоја реплика на капсула?
None. Се користи haedless Service.