rilascio della piattaforma di orchestrazione dei container , che consente di gestire un cluster di container isolati come un'unica entità e offre meccanismi per il deployment, il mantenimento e il dimensionamento delle applicazioni eseguite nei container. Il progetto è stato originariamente creato da Google, ma successivamente è stato trasferito su una piattaforma indipendente, supervisionata dalla Linux Foundation. La piattaforma si posiziona come una soluzione universale in evoluzione, non legata a sistemi specifici e in grado di operare con qualsiasi applicazione in qualsiasi ambiente cloud. Il codice di Kubernetes è scritto in Go e sotto licenza Apache 2.0.
Vengono fornite funzioni per il deployment e la gestione dell'infrastruttura, come la gestione del DNS, il bilanciamento del carico,
la distribuzione dei container sui nodi del cluster (migrazione dei container in base al cambiamento del carico e alle esigenze dei servizi), il controllo dello stato a livello applicativo, la gestione degli account, l'aggiornamento e il dimensionamento dinamico del cluster in esecuzione, senza arrestarlo. È possibile implementare gruppi di container con operazioni di aggiornamento e rollback simultanei per l'intero gruppo, così come una suddivisione logica del cluster in parti con separazione delle risorse. È supportata la migrazione dinamica delle applicazioni, per le quali possono essere utilizzati sia storage locali che sistemi di storage di rete.
Il rilascio di Kubernetes 1.18 include 38 modifiche e miglioramenti, di cui 15 sono stati portati allo stato stabile e 11 allo stato beta. 12 nuove modifiche sono state proposte in stato alpha. Per la preparazione della nuova versione sono stati dedicati sforzi sia al perfezionamento delle varie funzionalità che alla stabilizzazione delle capacità sperimentali, oltre all'aggiunta di nuovi sviluppi. Le principali modifiche:
- Kubectl
- la versione alpha del comando «kubectl debug», che facilita il debug nei pod, avviando container effimeri con strumenti di debug.
- il comando «kubectl diff», che consente di vedere cosa cambierà nel cluster se si applica il manifesto.
- tutti i generatori del comando «kubectl run», tranne il generatore per l'avvio di un singolo pod.
- il flag «—dry-run», a seconda del suo valore (client, server e none) esegue una prova del comando sul lato client o server.
- Codice kubectl in un repository separato. Questo ha permesso di separare kubectl dalle dipendenze interne di kubernetes e facilitare l'importazione del codice in progetti esterni.
- Ingress
- cambiamento del gruppo API per Ingress a networking.v1beta1.
- nuovi campi:
- pathType, che consente di specificare il modo in cui verrà confrontato il percorso nella richiesta
- IngressClassName — sostituzione dell'annotazione kubernetes.io/ingress.class, che è stata dichiarata obsoleta. In questo campo si specifica il nome dell'oggetto speciale IngressClass
- l'oggetto IngressClass, in cui si specifica il nome del controller ingress, i suoi parametri aggiuntivi e l'indicazione di utilizzo predefinito
- Servizio
- campo AppProtocol, in cui è possibile specificare quale protocollo utilizza l'applicazione
- in stato beta e incluso per impostazione predefinita l'EndpointSlicesAPI, che è una sostituzione più funzionale dei normali Endpoints.
- Rete
- IPv6 è stato tradotto in stato beta.
- Dischi permanenti. È stata dichiarata stabile la seguente funzionalità:
- Configurazione dell'applicazione
- Negli oggetti ConfigMap e Secret nuovo campo «immutable». Impostare il valore del campo su true impedisce la modifica dell'oggetto.
- Pianificatore
- possibilità di creare profili aggiuntivi per kube-scheduler. Se in passato era necessario avviare pianificatori separati aggiuntivi per implementare algoritmi di distribuzione pod non standard, ora è possibile creare set di configurazioni aggiuntive per il pianificatore standard e specificarne il nome nello stesso campo pod «.spec.schedulerName». Stato — alpha.
- dichiarata stabile
- Scalabilità
- la possibilità di specificare nel manifesto HPA il grado di aggressività durante la modifica del numero di pod in esecuzione, cioè, all'aumento del carico, avviare immediatamente N volte più istanze (instance).
- Kubelet
- ha ricevuto lo stato beta. La funzionalità include la distribuzione NUMA, che consente di evitare la degradazione delle prestazioni su sistemi multi-socket.
- Stato beta funzione PodOverhead, che consente di specificare in RuntimeClass una quantità aggiuntiva di risorse necessarie per l'esecuzione di un pod.
- supporto HugePages, in stato alpha è stata aggiunta l'isolamento a livello di contenitore e il supporto per più dimensioni hugepages.
- endpoint per metriche /metrics/resource/v1alpha1, al suo posto viene utilizzato /metrics/resource
- API
- rimossa la possibilità di utilizzare le vecchie API group apps/v1beta1 e extensions/v1beta1.
- elevato allo stato beta2. Questo miglioramento trasferisce la manipolazione degli oggetti da kubectl al server API. Gli autori del miglioramento affermano che questo consentirà di correggere molti errori esistenti che non possono essere risolti nella situazione attuale. Hanno inoltre aggiunto la sezione «.metadata.managedFields», in cui si propone di memorizzare la cronologia delle modifiche all'oggetto, specificando chi, quando e cosa esattamente è stato modificato.
- stable CertificateSigningRequest API.
- Supporto per la piattaforma Windows.
- Continua ad espandersi il supporto per Windows node. Sono state aggiunte versioni alpha:
- Supporto per
- Continua ad espandersi il supporto per Windows node. Sono state aggiunte versioni alpha:
Fonte: opennet.ru
