платформа за оркестрация на контейнери , която позволява управлението на клъстера от изолирани контейнери като едно цяло и предоставя механизми за разгръщане, поддръжка и мащабиране на приложения, изпълнявани в контейнери. Проектът първоначално е създаден от Google, но след това е преместен на независима платформа, кюртирана от Linux Foundation. Платформата е позиционирана като универсално решение с отворен код, което не е привързано към отделни системи и може да работи с всякакви приложения в различни облачни среди. Кодът на Kubernetes е написан на език Go и е под лицензия Apache 2.0.
предоставя функции за разгръщане и управление на инфраструктурата, включително поддържане на DNS база, балансировка на натоварването,
разпределение на контейнерите между възлите на клъстера (миграция на контейнери в зависимост от промените в натоварването и необходимостите от услуги), проверка на здравето на приложния слой, управление на акаунти, актуализиране и динамично мащабиране на работещия клъстер без прекъсване. Възможно е разгръщане на групи контейери с извършване на операции по актуализиране и отмяна на промени едновременно за цялата група, както и логично разделяне на клъстера на части с разделение на ресурси. Има поддръжка за динамична миграция на приложения, за съхранение на данни, за които могат да се използват както локални, така и мрежови системи за съхранение.
Изданието на Kubernetes 1.18 включва 38 изменения и подобрения, от които 15 са преместени в статус стабилен, а 11 в статус бета. 12 нови изменения са предложени в статус алфа. При подготовката на новата версия значителни усилия са били насочени както към доработване и стабилизиране на различната функционалност, така и към добавяне на нови разработки. Основните промени:
- Kubectl
- алфа версия на командата „kubectl debug“, която опростява отстраняването на грешки в подовете чрез стартиране на ефемерни контейнери с инструменти за отстраняване на грешки.
- командата „kubectl diff“, която позволява да видите какво ще се промени в клъстера, ако приложите манифест.
- всички генератори на командата „kubectl run“, с изключение на генератора за стартиране на единичен под.
- флаг «—dry-run», в зависимост от неговата стойност (client, server и none) пробно изпълнение на командата се извършва на страна на клиента или сървъра.
- код kubectl в отделен репозиторий. Това позволи да се отдели kubectl от вътрешните зависимости на kubernetes и да се улесни импортирането на кода в странични проекти.
- Ingress
- смена на API групата за Ingress на networking.v1beta1.
- нови полета:
- pathType, позволяващо указване на начина, по който ще се сравнява пътя в заявката
- IngressClassName — замяна на анотацията kubernetes.io/ingress.class, която е обявена за остаряла. В това поле се указва името на специалния обект IngressClass
- обект IngressClass, в който се посочва името на ингрес контролера, неговите допълнителни параметри и признак за използването му по подразбиране
- Услуга
- поле AppProtocol, в което може да се уточни кой протокол използва приложението
- в статус бета и включен по подразбиране EndpointSlicesAPI, който е по-функционално заменяне на обикновените Endpoints.
- Мрежа
- IPv6 премина в статус бета.
- Постоянни дискове. Обявена стабилна следната функционалност:
- Конфигуриране на приложението
- В обекти ConfigMap и Secret ново поле «immutable». Настройването на стойността на полето в true забранява промените на обекта.
- Планировчик
- възможност за създаване на допълнителни профили за kube-scheduler. Ако преди се изискваше стартиране на допълнителни отделни планировчици за реализиране на нестандартни алгоритми за разпределение на подовете, сега се появи възможност за създаване на допълнителни набори настройки за стандартния планировчик и указване на името му в същото поле на пода «.spec.schedulerName». Статус — алфа.
- обявена за стабилна
- Мащабиране
- възможността да се посочи в манифеста HPA степента на агресивност при промяна на броя на стартираните подове, тоест при увеличаване на натоварването да стартирате веднага N пъти повече екземпляри (instance).
- Kubelet
- получи статус бета. Функцията включва NUMA-разпределение, което позволява да се избегне деградация на производителността на мулти-сокетни системи.
- Статус бета функцията PodOverhead, позволяваща да се посочи в RuntimeClass допълнителното количество ресурси, необходимо за стартиране на пода.
- поддръжка на HugePages, в алфа статус добавена изолация на ниво контейнер и поддръжка на няколко размера hugepages.
- endpoint за метрики /metrics/resource/v1alpha1, вместо него се използва /metrics/resource
- API
- премахната е възможността за използване на остарели API групи apps/v1beta1 и extensions/v1beta1.
- повишен до статус бета2. Това подобрение пренася манипулирането на обектите от kubectl в API-сървъра. Авторите на подобрението твърдят, че това ще позволи да се оправят множество съществуващи грешки, които не могат да се коригират в текущата ситуация. Също така добавиха секция „.metadata.managedFields“, в която предлагат да се съхранява история на промените на обекта, с указание кой, кога и какво точно е променил.
- стабилен CertificateSigningRequest API.
- Поддръжка на платформата Windows.
- Поддръжката на Windows node продължава да се разширява. Добавени са алфа-версии:
- В стабилен статус е преведена поддръжката
- Поддръжката на Windows node продължава да се разширява. Добавени са алфа-версии:
Източник: opennet.ru
