Details resources¶
https://blog.octo.com/extensions-kubernetes/
kind : Namespaces¶
Deux états possibles: - active -terminating
Name : Note that the name of your namespace must be a DNS compatible label. ??
Finalizer : use pour la destruction des objets
Créer de plusieurs contextes,
kubectl config set-context dev \
--namespace=development --cluster=lithe-cocoa-92103_kubernetes --user=lithe-cocoa-92103_kubernetes
kubectl config set-context prod \
--namespace=production --cluster=lithe-cocoa-92103_kubernetes --user=lithe-cocoa-92103_kubernetes
kubectl config use-context prod
PLUS: how you can provide different authorization rules for each namespace.
Moyen propre: - ressources ; - policies ; - constraints (limit range, quota …) Scope (user community): - ressources nommés - délégation de l’autorité de gestion à un user de confiance ; - possibilité de limiter utilisation des ressources par la communauté ;
kind: Pods¶
Les custom finalizers permettent d’intercepter les destructions d’objets, en vue d’exécuter du code personnalisé. La terminologie fait référence aux destructeurs (finalizers) en programmation orientée objet. Le principe : Lorsqu’un objet (quelque soit son type) est créé, il est possible de déclarer une liste de finalizers.
- hostname :
- 10–1–1–1.default.pod.cluster.local IP.namespace.pod.cluster.local
kind: Statefullset¶
- utiliser pour le déploiement statefull : pour des base de données ou autres solutions qui gérent des données en local
kind: Secret¶
Deux possibilités pour y accèder depuis un container : - en variable d’environnement lisible par tous ; - en mount sur un dossier tmpfs : plus adapter pour la sécurité :
containers:
[..]
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: default-token-79kkc
readOnly: true
volumes:
- name: default-token-79kkc
secret:
defaultMode: 420
secretName: default-token-79kkc
kind: Namespaces¶
En prod, il faut prendre en compte avec la gestion des namespaces de : - network policies ; - restriction sur les quotas.
Label¶
Syntax strict : - peut comporter un prefix suivi d’un slash, il doit correspondre à un subdomain DNS valide - longeur:
- prefix: 253 max [a-zA-Z0-9.-_]
- value : 63 max [a-zA-Z0-9.-_]
Composant master¶
API server¶
3 APIs disponible : - kubernetes API /api/v1/<resources>
=> list, get, create, update objects
- autoscaling API apis/autoscaling/v1
- => dédié au scale horizontal automatique, basé sur le CPU, ou autres métriques
- batch API /apis/batch/v1
- => gestion des jobs, list, query, create, delete
etcd¶
Controller manager¶
Composant du master Collection de controllers divers qui assure la cohérence entre la demande et l’existent
=> replication controller, pod controller, service controller, endpoint controller
Sheduler¶
Schedule les pods sur les nodes en fonction de plusieurs contraintes: - pre-requis en resources - pre-requis en service - contrainte au niveau hard/soft-ware - spécification sur affinité/antiaffinité - localisation des données - date limites ??
DNS¶
- depuis v1.3, pod
- utiliser par tous les services, sauf le headless pour obtenir un nom DNS
- pod recoivent aussi un nom DNS
- très utile pour la découverte automatique
Composant node¶
proxy¶
- forwarding TCP/UDP
- gére les services au niveau du node
- collecte des infos IPs, dns name via les variables environnements ajoutées dans les containers
kubelet¶
- gére les containers sur les nodes
- actions:
- télécharge les secrets des pods depuis API
- montage des volumes
- lancement des containers
- report le status des pods et du node
- exécute les liveness probe
?? readness probe : par qui ?
Interface¶
Utilisation des interfaces à plusieurs niveaux pour être agnostiques des technologies : - CRI runtime interface - CSI - CNI