
Aujourd'hui est le 27 septembre, ce qui
signifie que pendant les heures de travail (selon le fuseau horaire américain), nous pouvons nous attendre à la prochaine version de Kubernetes - 1.12 (cependant, son annonce officielle est parfois retardée). En général, il est temps de poursuivre la glorieuse tradition et de parler des changements les plus importants, ce que nous ferons en fonction des informations publiques du projet:
Kubernetes présente le tableau de suivi ,
CHANGELOG-1.12 , de nombreux problĂšmes, demandes de tirage et propositions de conception. Alors, quoi de neuf dans K8s 1.12?
Installations de stockage
Si vous identifiez une chose qui est mentionnĂ©e plus souvent que toute autre parmi tous les problĂšmes liĂ©s Ă la sortie de Kubernetes 1.12, ce sera peut-ĂȘtre l'
interface de stockage de conteneurs (CSI) , dont nous avons
déjà parlé l'autre jour. Pour cette raison, commençons par les modifications apportées à la prise en charge du stockage.
En tant que tels
, les plugins CSI ont conservĂ© le statut bĂȘta et devraient ĂȘtre stables pour la prochaine version de Kubernetes (1.13). Quoi de neuf dans le support CSI?
En février de cette année
, les travaux sur
le concept de topologie ont commencĂ© dans la spĂ©cification CSI elle-mĂȘme. En bref, la topologie est une information sur la segmentation des clusters (par exemple, par «racks» pour les installations sur site ou par «rĂ©gions» et «zones» pour les environnements cloud), que les systĂšmes d'orchestration doivent connaĂźtre et prendre en compte. Pourquoi? Les volumes allouĂ©s par les fournisseurs de stockage ne seront pas nĂ©cessairement Ă©galement accessibles dans tout le cluster, et par consĂ©quent, la connaissance de la topologie est nĂ©cessaire pour planifier efficacement les ressources et prendre des dĂ©cisions de provisionnement.
Le résultat de l'émergence des topologies dans CSI (
adopté dans la spécification le 1er juin) a été leur support dans Kubernetes 1.12:
Mais cela ne se termine pas avec les mises à jour liées à CSI. Une autre innovation importante dans la version 1.12 de Kubernetes est la
prise en charge des instantanés pour CSI (en état alpha). Des instantanés des volumes en tant que tels sont apparus dans la
version de K8s 1.8 . L'implĂ©mentation principale, qui comprend le contrĂŽleur et le provisionneur (deux fichiers binaires sĂ©parĂ©s), a Ă©tĂ© dĂ©cidĂ©e pour ĂȘtre transfĂ©rĂ©e vers
un référentiel externe . Depuis lors, la prise en charge des volumes de GCE PD, AWS EBS, OpenStack Cinder, GlusterFS et Kubernetes hostPath a été ajoutée.
La nouvelle
proposition de conception vise à «poursuivre cette initiative en ajoutant la prise en charge des instantanés pour les pilotes de volume CSI» (la prise en charge des instantanés dans la spécification CSI est décrite
ici ). Ătant donnĂ© que Kubernetes adhĂšre au principe d'inclure un ensemble minimum de capacitĂ©s dans l'API principale, cette implĂ©mentation (comme pour les instantanĂ©s dans le Volume Snapshot Controller) utilise CRD (
CustomResourceDefinitions
).
Et quelques nouvelles fonctionnalités pour les pilotes CSI:
- La version alpha de la capacitĂ© du pilote Ă sâinscrire dans lâAPI Kubernetes (afin de permettre aux utilisateurs de trouver plus facilement les pilotes installĂ©s dans le cluster et de permettre aux pilotes dâinfluencer les processus dâinteraction de Kubernetes avec eux);
- Version alpha de la capacité du pilote à recevoir des informations sur le lecteur demandant le volume via
NodePublish
.
Introduit dans la derniĂšre version de Kubernetes, le
mĂ©canisme de limitation dynamique des volumes sur les nĆuds est passĂ© de l'alpha Ă la bĂȘta, en
recevant ... vous l'aurez deviné, la prise en charge de CSI, ainsi que d'Azure.
Enfin, la fonctionnalité de
propagation de l'espace de noms Mount , qui vous permet de monter le volume en tant que
rshared
(de sorte que tous les rĂ©pertoires de conteneurs montĂ©s soient visibles sur l'hĂŽte) et a un statut bĂȘta dans la version
K8s 1.10 , est déclarée stable.
Planificateur
Dans le planificateur, Kubernetes 1.12 améliore les performances grùce à la version alpha du
mĂ©canisme de restriction de recherche dans un cluster de nĆuds adaptĂ© Ă la planification de foyers
(nĆuds rĂ©alisables) . Auparavant, pour chaque tentative de planification de chaque module,
kube-scheduler vĂ©rifiait la disponibilitĂ© de tous les nĆuds et les transmettait pour Ă©valuation, mais maintenant le planificateur ne trouvera qu'un certain nombre d'entre eux, puis arrĂȘtera son travail. Dans le mĂȘme temps, le mĂ©canisme prĂ©voit la sĂ©lection obligatoire de nĆuds de diffĂ©rentes rĂ©gions et zones, ainsi que la nĂ©cessitĂ© de visualiser diffĂ©rents nĆuds dans diffĂ©rents cycles de planification (ne sĂ©lectionnez pas les 100 premiers nĆuds Ă chaque dĂ©marrage). La dĂ©cision de mettre en Ćuvre ce mĂ©canisme a Ă©tĂ© prise, guidĂ©e par les rĂ©sultats de l'analyse des donnĂ©es sur les performances de l'ordonnanceur (si le 90e centile montrait un temps de 30 ms pour un foyer, alors le 99e centile dĂ©jĂ 60 ms).
De plus, les fonctionnalitĂ©s suivantes de l'ordonnanceur ont atteint la version bĂȘta:
- Taint node by Condition , qui est apparu dans K8s 1.8 et permet de marquer un nĆud avec un certain statut (pour d'autres actions) lorsque certains Ă©vĂ©nements se produisent: maintenant le contrĂŽleur de cycle de vie du nĆud crĂ©e automatiquement des taches, et le planificateur les vĂ©rifie (au lieu de conditions );
DaemonSet
foyer dans DaemonSet
utilisant kube-scheduler (au lieu du contrĂŽleur DaemonSet
): il a également été activé par défaut;- spécifiant une classe de priorité dans
ResourceQuota
.
Noeuds de cluster
Une innovation intéressante a été l'apparition (dans l'état de la version alpha) de
RuntimeClass
- une nouvelle ressource au niveau du cluster conçue pour servir les paramÚtres de l'
exécution du
conteneur (exécution du conteneur) .
RuntimeClasses
sont attribuĂ©es aux pods via le mĂȘme champ dans
PodSpec
et implĂ©mentent la prise en charge de l'utilisation de plusieurs environnements exĂ©cutables au sein d'un cluster ou d'un nĆud. Pourquoi?
«L'intĂ©rĂȘt pour l'utilisation de diffĂ©rents temps d'exĂ©cution dans un cluster augmente. Ă l'heure actuelle, le principal facteur de motivation est les bacs Ă sable et le dĂ©sir des conteneurs Kata et gVisor de s'intĂ©grer Ă Kubernetes. D'autres modĂšles d'exĂ©cution tels que les conteneurs Windows ou mĂȘme les environnements d'exĂ©cution distants nĂ©cessiteront Ă©galement une prise en charge Ă l'avenir. RuntimeClass offre un moyen de choisir entre diffĂ©rents runtimes configurĂ©s dans un cluster et de modifier leurs propriĂ©tĂ©s (Ă la fois par le cluster et par l'utilisateur). »
Pour choisir entre les configurations prédéfinies, le
RuntimeHandler
passé au CRI (Container Runtime Interface), qui est destiné à remplacer les annotations actuelles du foyer:

Et la configuration dans containerd pour kata-runtime ressemble Ă ceci:
[plugins.cri.containerd.kata-runtime] runtime_type = "io.containerd.runtime.v1.linux" runtime_engine = "/opt/kata/bin/kata-runtime" runtime_root = ""
Le critĂšre
RuntimeClass
pour la version alpha est une
validation CRI réussie.
En outre, le
mécanisme d'enregistrement des plug-ins locaux (y compris CSI) dans
Kubelet et
shareProcessNamespace
(la fonctionnalitĂ© est devenue activĂ©e par dĂ©faut) est passĂ© au statut de version bĂȘta.
Réseaux
La principale nouveauté dans la partie réseau de Kubernetes est la
version alpha du support
SCTP (Stream Control Transmission Protocol). Ayant reçu un support dans
Pod ,
Service ,
Endpoint et
NetworkPolicy , ce protocole de télécommunication a rejoint les rangs de TCP et UDP. Avec la nouvelle fonctionnalité «applications qui nécessitent SCTP comme protocole L4 pour leurs interfaces, il sera plus facile de déployer sur des clusters Kubernetes; par exemple, ils pourront utiliser la découverte de services basée sur
kube-dns , et leur interaction sera contrÎlée via
NetworkPolicy . " Les détails d'implémentation sont disponibles dans
ce document .
Deux fonctionnalités réseau introduites dans K8s 1.8 ont également atteint un statut stable: la
prise en charge des stratégies pour le trafic
EgressRules
sortant dans l'API NetworkPolicy et l'
application des rĂšgles CIDR pour la source / destination via
ipBlockRule
.
Mise à l'échelle
Les améliorations apportées à l'autoscaler horizontal Pod comprennent:
L'
Ă©chelle verticale des foyers , qui avant d'atteindre la version bĂȘta manquait de tests utilisateur, ne s'arrĂȘte pas. Les auteurs l'ont jugĂ©e suffisante pour la sortie de K8s 1.12 et
rappellent que cette fonctionnalitĂ© est plus susceptible d'ĂȘtre ajoutĂ©e Ă Kubernetes (non incluse dans le noyau). Tout le dĂ©veloppement est effectuĂ© dans un rĂ©fĂ©rentiel sĂ©parĂ©, dans lequel la version bĂȘta sera programmĂ©e pour coĂŻncider avec la sortie de Kubernetes.
Flux de travail Vertical Pod Autoscaler (VPA) pour KubernetesEnfin, K8s 1.12 inclut (sous forme alpha) les résultats des
travaux sur la "simplification de l'installation Ă l'aide de
ComponentConfig
" (dans le cadre du cycle de vie sig-cluster), qui dure depuis prÚs de deux ans. Malheureusement, pour une raison quelconque (une simple négligence?), L'accÚs au
document de proposition de conception avec des détails est fermé aux utilisateurs anonymes.
Autres changements
API
Deux nouvelles fonctionnalités sont implémentées dans le groupe api-machines:
dry-run
Ă sec pour apiserver (version alpha), qui imite la validation et le traitement des demandes;- API de quota de ressources (immĂ©diatement bĂȘta) qui dĂ©finit les ressources qui sont limitĂ©es par dĂ©faut (au lieu du comportement actuel lorsque la consommation des ressources est illimitĂ©e si aucun quota n'est dĂ©fini).
Azure
Déclarée stable:
Les premiÚres implémentations (versions alpha) sont ajoutées:
Kubectl
- Une version alpha du mécanisme de plug-in mis à jour a été implémentée, ce qui vous permet d'ajouter de nouvelles commandes ou de réécrire des sous-commandes existantes de n'importe quel niveau d'imbrication. Il est similaire à Git et examine les exécutables commençant par
kubectl-
dans le $PATH
l'utilisateur. Voir la proposition de conception pour plus de dĂ©tails. - Une version bĂȘta de l' idĂ©e d'isoler le
pkg/kubectl/genericclioptions
de kubectl dans un référentiel indépendant a été implémentée. - La fonction d' impression cÎté serveur a été déclarée stable.
Autre
- La version alpha du nouveau mécanisme TTL after finish , conçue pour limiter la durée de vie des Jobs et Pods qui ont terminé leur exécution, est présentée . AprÚs l'expiration du TTL spécifié, les objets seront automatiquement nettoyés sans intervention de l'utilisateur.
- La génération d'une clé privée et d'un CSR (TLS Bootstrap) pour signer un certificat au niveau du cluster dans Kubelet est déclarée stable.
- La rotation du certificat TLS du serveur dans Kubelet est passĂ©e au statut bĂȘta.
PS
Lisez aussi dans notre blog: