fbpx

Каталог статей

Каталог статей для размещения статей информационного характера

Как выучить

Kubernetes Learning Path

Kubernetes Learning Path

Сегодня Kubernetes присутствует во всех основных облаках (Google cloud, AWS, Azure и т.д.) как полностью управляемый сервис, бессерверный на данный момент, и он становится расширяемым с каждым днем, так что новые компоненты могут быть добавлены поверх него без каких-либо проблем. В настоящее время о Kubernetes говорят все, и изучение Kubernetes важно для технарей и новичков. Цель этой статьи – предоставить путь изучения Kubernetes для новичков, которые хотят узнать об этом.

Поскольку Kubernetes развивается очень быстро, онлайн-учебники, книги легко устаревают, но большая часть информации доступна на официальном сайте. Но информация разрозненна и требует много времени и усилий для поиска нужной информации. Поэтому я постарался собрать все важные темы со ссылками, которые обеспечивают новичкам путь обучения, чтобы начать работу с Kubernetes. Это не окончательный список. Если вам нужно узнать больше, пожалуйста, изучите официальный сайт.

Для лучшего понимания я разделил концепции на 8 этапов, и вы можете посвятить каждому этапу неделю или две и изучить от основ Kubernetes до продвинутого уровня. Этот путь обучения поможет вам изучить Kubernetes за приличное количество времени.

Необходимые условия для изучения Kubernetes

Этот путь обучения Kubernetes предназначен для новичков. В основном вы должны хорошо разбираться в командной строке, Linux, YAML.

Фаза 1: Основы Kubernetes

Цель этой фазы – узнать

  1. Что такое Kubernetes и его возможности?
  2. Понять основные концепции и использование Kubernetes.
  3. Настроить среду Kubernetes.

Путь обучения

Прежде чем изучать любую технологию, важно понять предысторию и значение ее появления. Что касается основ Kubernetes, рассмотрите следующие темы

    и его особенности? ?
  1. Понять основы контейнеров?
  2. Существуют ли другие подобные системы, доступные сегодня на рынке?
  3. Изучите, какие услуги предлагают поставщики управляемых услуг Kubernetes.
  4. Изучите конкретные примеры использования Kubernetes в масштабах предприятия.

Как только вы освоите терминологию Kubernetes, рекомендуется создать локальную среду с помощью minikube и начать развертывание тестовых приложений, чтобы освоить ресурсы и концепции Kubernetes, такие как Pod, Node, Service, Labels and Selectors, Annotations, Config, Secrets, Deployment, Namespace и, кроме того, Understanding Kubernetes Objects.

Рекомендуемый официальный документ

Официальный пример гостевой книги: Пример гостевой книги

Мои два цента

Если вы начинаете изучать Kubernetes как новичок, пожалуйста, используйте Kubernetes как b

На втором этапе начните изучение с базовой архитектуры Kubernetes. Поймите, как компоненты сочетаются друг с другом, и настройте Kubernetes вручную, что рекомендуется для лучшего понимания того, как компоненты работают друг с другом. Нижеприведенные темы должны быть рассмотрены, по крайней мере, для того, чтобы иметь достаточное понимание компонентов архитектуры Kubernetes.

Цель этой фазы – узнать

Путь обучения

Сервер API. Как k8 получает запрос и как он возвращает ответ клиенту. . Поймите, в чем заключается основная роль Etcd.

  • Менеджер контроллера. Понимать принцип работы контроллера и примерно знать, какие типы контроллеров Kubernetes содержит по умолчанию. . Понять роль планировщика во всем процессе планирования.
    • Kubelet. Знать, как Kubelet принимает запросы на планирование и запускает контейнер.
    • Kube-proxy. Понимать роль Kube-proxy и его возможности. . Понять, какие режимы выполнения контейнеров доступны в Kubernetes.
    • DNS. DNS обеспечивает поддержку обнаружения кластерных служб. Kubernetes v1.13 по умолчанию начинает использовать CoreDNS. Подробности о версии CoreDNS, поставляемой с k8, можно узнать здесь.
    • Сетевой плагин. В многоузловой среде Kubernetes необходимо развернуть сетевой плагин для включения сетевого подключения контейнера и удаления ресурсов при удалении контейнера. По умолчанию K8 позволяет использовать kubenet, сетевой плагин, не относящийся к CNI.
    • Существует несколько сторонних CNI-плагинов. Среди наиболее известных можно назвать следующие:
    • Примечание: На этом этапе вы должны получить хорошее представление о компонентах Kubernetes и взаимодействии между ними, а также о том, как контейнеры управляются и предоставляют услуги внешнему миру.
    • Рекомендуемый официальный документ
    • Мои два цента

    Не запоминайте все компоненты Kubernetes на этом этапе; чтобы лучше понять компоненты k8, разверните кластер Kubernetes с 0 (нуля), чтобы получить глубокое понимание каждого компонента. Если вы хотите ускорить процесс обучения, вы также можете попробовать использовать такие инструменты, как kubeadm для развертывания кластера.

    Рекомендуемый официальный документ

    Мои два цента

    Фаза 3: Основные концепции Kubernetes

    Цель этой фазы – изучить

    Путь обучения

    Основные концепции Kubernetes – Вкратце вы должны получить хорошее представление о pods, nodes, node pools, control plane, namespaces, daemon sets, deployments, YAML files, и многое другое. Кроме того, не менее важно получить четкое представление о том, как Kubernetes планирует распределение стручков по узлам и какой алгоритм (Bin Packing) он использует для достижения утилизации аппаратных мощностей.

    Цель этой фазы – узнать

    Рабочие нагрузки

    Планирование

    Контроллеры бодов

    Конфигурация

    Хранение

    Сервисы / Сеть

    Безопасность – RBAC

    Мои два цента

    На этом этапе индекс сложности немного высок, поскольку вы должны хорошо знать основные понятия, включая POD, узел, планировщики, DaemonSet, StatefulSet, StorageClass, NetworkPolicy, безопасность, PSP и так далее. Более того, вы должны иметь более глубокое понимание того, как эти ресурсы работают под одной крышей.

    Этап 4: Понимание Kubernetes Api и подсистем Kubernetes

    Цель этого этапа состоит в том, чтобы научиться

    Понять структуру API Kubernetes

    Как удовлетворить нефункциональные требования с помощью Kubernetes.

    Цель этой фазы – узнать

    1. Путь обучения
    2. На этом этапе вы должны понять структуру API, NFR и подсистемы Kubernetes. Основная концепция Kubernetes – это система, управляемая API. В ней есть система сеансов планирования, в которой есть мастер, отслеживающий ресурсы, планирование (контейнеры), состояние кластера. Таким образом, Kubernetes API позволяет запрашивать и манипулировать состоянием объектов в Kubernetes. Ядром плоскости управления k8 является сервер API. Поэтому вы должны полностью понять API в следующих областях
    3. Как API Kubernetes управляет версией

    Рабочие нагрузки

    Метод представления и концепция дизайна объектов Kubernetes.

    1. Далее, хотя требования вашего проекта будут подталкивать вас к бессерверным или управляемым решениям (GKE, AKS, EKS, сторонние провайдеры) для запуска ваших рабочих нагрузок в облаке или на месте. Но вы должны глубоко понять, как удовлетворить нефункциональные требования, такие как производительность, масштабируемость, доступность, надежность, ремонтопригодность и безопасность, используя Kubernetes, а также углубить понимание различных подсистем Kubernetes.
    2. Производительность
    3. Масштабируемость

    Доступность

    1. Надежность
    2. Ремонтопригодность
    3. Безопасность
    4. Вот краткий список важных подсистем Kubernetes:
    5. Мои два цента
    6. На последнем этапе изучаются только основы Kubernetes. На этом этапе изучение Kubernetes API + NFR + подсистемы Kubernetes даст вам более четкое понимание концепций Kubernetes и структуры API.

    Примечание: Вы также можете узнать о группе API Kubernetes, просмотрев репозиторий кода API Kubernetes. Следующая ссылка четко объяснит общую спецификацию API. Далее, вы можете просмотреть репозиторий кода Kubernetes/Community, чтобы узнать о различных группах интересов (SIG), “SIG” – это аббревиатура Special Interest Group. Например, sig-apps отвечает за принятие решений о введении новых API или существующих, которые могут быть обновлены, и т.д.

    Цель этого этапа состоит в том, чтобы научиться

    Целью этой фазы является изучение

    Углубить понимание возможностей компонентов архитектуры Kubernetes

    Изучить больше функций Kubernetes на уровне кластера

    Цель этой фазы – узнать

    1. После того, как вы поняли основные концепции Kubernetes и изучили достаточно ресурсов API для их использования, давайте подробнее разберемся в архитектуре Kubernetes master & node и компонентах, которые на них работают. Фактически, каждый компонент Kubernetes имеет сильные возможности конфигурации, и мы можем глубоко погрузиться в некоторые из наиболее используемых функций Kubernetes вокруг каждого компонента Kubernetes.
    2. Я бы рекомендовал использовать Kubernetes Command Line Reference для понимания конфигурации этих компонентов:

    Рабочие нагрузки

    Master

    Kubernetes Auditing предоставляет динамически настраиваемую функцию аудита

    API Server с соответствующим префиксом параметро в-audit-.

    Список всех контроллеров допуска, поддерживаемых Kubernetes, и каждый допуск связан с определенной функцией Kubernetes

      • Соответствующий параметру API Serve r-enable-admission-plugins, комментарий параметра перечисляет все контроллеры допуска по умолчанию
      • Другие примечательные параметры включают:
      • -node-eviction-rat e-pod-eviction-timeou t-terminated-pod-gc-threshol d-pv-recycler-minimum-timeout-* -max-requests-inflight,-min-request-timeou t-watch-cache,-watch-cache-sizes
      • Узел

      Очистить дисковое пространство, занимаемое образом контейнера

        Kubelet с соответствующими параметрам и-image-gc- префикса и параметрам и-minimum-image-ttl-duration

      Резервировать определенные ресурсы для системных ресурсов, чтобы обеспечить стабильность узлов

        • Соответствующие Kubele t-kube-reserved и-kube-reserved-cgroup другие параметры
        • Предоставить больше возможностей управления процессором, например, статическое сродство процессора
        • -cpu-manager-* Параметры, соответствующие префиксу Kubelet
        • Избегайте чрезмерного монтирования томов данных на узлах.
        • Измените ограничения, задав значение переменной окружения KUBE_MAX_PD_VOLS.
        • Другие заметные параметры включают:
        • -nodeport-addresses e t-host-* -fail-swap-o n-cgroups-per-qo s-max-pods,-pods-per-cor e-resolv-conf
        • Мои два цента

        Очистить дисковое пространство, занимаемое образом контейнера

          Фаза 6: Расширение Kubernetes

        Мои два цента

        Узнать о механизме расширения Kubernetes

        Написать пример контроллера Kubernetes.

        Цель этой фазы – узнать

        1. На этом этапе мы начнем разбираться в различных механизмах расширения Kubernetes. Основные концепции Kubernetes, архитектурный дизайн и Api являются основными краеугольными камнями, но здесь методы расширения подразумеваются как архитектурное, а не функциональное расширение. Например, Pod поддерживает различные Probes для выполнения проверок состояния, включая настройку. Здесь я не классифицирую это как механизм расширения.
        2. Расширение ресурсов API (API resource extension)

        Рабочие нагрузки

        Важным способом изучения расширения ресурсов API является создание ресурса расширения или написание собственного контроллера. Я бы настоятельно рекомендовал написать контроллер самостоятельно и тщательно его изучить. Вот несколько распространенных инструментов для разработки собственных API Kubernetes

        Официальный проект расширения API от Kubernetes: пример из официального Kubernetes : библиотека оператора от Red Hat

          Расширение доступа к API

        проверяет, является ли пользователь действительным пользователем API, и если является, устанавливает его личность. проверяет, есть ли у пользователя разрешение на чтение, запись и выполнение запрошенной операции. Как только запрос аутентифицирован и авторизован, контроллер допуска перехватывает и выполняет множество дополнительных настраиваемых проверок запроса для обеспечения соблюдения политик кластера.

          Расширение доступа к API Kubernetes в основном достигается через Webhooks (Authentication webhook, Authorization web

        : аналогично Webhook, вызов внешних сервисов для принятия решений о планировании: Поддержка нескольких планировщиков для планирования различных заданий в Kubernetes : подключаемая архитектура для планировщика k8. Пользователи могут выполнять настройки “на уровне кода” без форка кода планировщика Kubernetes.

          Расширитель планировщика может быть хорошим вариантом для использования во многих сценариях, но обратите внимание, что он имеет некоторые ограничения, например, расширитель ограничен определенными фазами, такими как “Filter” и “Prioritize”, что означает, что их нельзя вызывать в начале или середине любой фазы и так далее.

        Возможности расширения сети

        : Используя плагин CNI, мы можем выбрать любую необходимую нам схему сети: Ingress определяет набор интерфейсов API, мы можем реализовать его произвольно. : Как и выше, опциональные реализации включают Calico, Cilium и т.д. : Kubernetes определяет набор спецификаций DNS, мы можем реализовать его произвольно.

          Сетевой плагин CNI – это стандарт контейнерной сети. Kubernetes обеспечивает хорошую поддержку. Часто используемые плагины включают flannel, Calico и так далее. Что касается Ingress, NetworkPolicy, DNS, вы должны понимать досконально. По сути, это набор API, определенных Kubernetes. Базовая реализация является подключаемой, и пользователи могут выбирать по своему усмотрению.

        Расширение хранилища (Storage expansion)

        : Динамическое стыковочное решение для хранения данных, предоставляемое Kubernetes, которое поддерживает определяемые пользователем бэкенды хранения данных. : Используя плагин CSI, вы можете выбрать любое решение для хранения данных, которое вам необходимо.

          FlexVolume – это решение, поставляемое с Kubernetes для подключения к внешнему хранилищу. Пользователи могут написать небольшое количество кода для добавления пользовательского бэкенда хранения, что подходит для простых сценариев. Подключаемый модуль хранения CSI является стандартом контейнерной сети и предоставляет полный набор SDK-решений для облегчения внедрения сторонними разработчиками. В настоящее время он поддерживает более 100 csi, которые могут быть использованы с Kubernetes.

        Масштабируемость времени выполнения

        Интерфейс времени выполнения CRI: Используя подключаемый модуль CRI, можно выбрать любое необходимое нам решение времени выполнения.

          Интерфейс времени выполнения CRI – это решение, предложенное Kubernetes для поддержки нескольких времен выполнения. В любой среде выполнения для подключения к Kubernetes достаточно реализовать интерфейсы, связанные с CRI. Некоторые из распространенных CRI с Kubernetes (Linux) – containerd, CRI-O, Docker.

        Возможность расширения ресурсов

        : Поддержка добавления пользовательских ресурсов через собственный API Kubernetes: Использование Device Plugin для подключения к любым необходимым нам системным аппаратным ресурсам.

        Суть Device Plugin заключается в автоматическом доступе к различным специальным аппаратным средствам, таким как Nvidia, Infiniband, FPGA и т.д. В настоящее время наиболее используемым Device Plugin является плагин устройств GPU от Nvidia.

        Возможности мониторинга

        Пользовательский мониторинг: поддержка использования пользовательских компонентов мониторинга, таких как Prometheus, для обеспечения показателей мониторинга.

          Пользовательский мониторинг включает метрики ресурсов (Metrics Server), пользовательские метрики (Prometheus Adapter) и внешние метрики (Keda).

        Масштабируемость облачных провайдеров

        Cloud Controller Manager: поддерживает подключаемых поставщиков облачных услуг

        Цель

        Я бы рекомендовал реализовать пример сквозного контроллера Kubernetes, который даст представление обо всех возможностях расширения, я бы рекомендовал сначала создать обширное понимание, а затем углубиться в определенную возможность, когда это необходимо.

        Фаза 7: Kubernetes Hello world

        Цель этой фазы – изучить

        Путь обучения

        На этом этапе мы возьмем простой сценарий и попытаемся реализовать все основные концепции, чтобы обрести уверенность в работе с Kubernetes. По своему опыту скажу, что при изучении любого программного обеспечения я обычно начинаю с примера “Hello World”.

        Сценарий: Возьмем компанию TechBlost, которая разрабатывает веб-сайт, поддерживающий продажу бакалейных товаров онлайн, и их минимальным требованием является использование решений на базе микросервисов Kubernetes. Вы используете Kubernetes последней версии в качестве фреймворка для создания сквозного пакета TechBlost.

        Цель этого этапа состоит в том, чтобы научиться

        Напишите небольшой код сервисного приложения на Node.js с файлом productService.js и разместите код на GitHub. Вы можете выполнить эту простую команду, чтобы увидеть сообщение “Kubernetes Hello World!” на вашем локальном хосте (“http://localhost:8080”). Пример – node productService .js

        Упакуйте ваше приложение в образ контейнера Docker.

        Цель этой фазы – узнать

        Рабочие нагрузки

        Все сервисы должны иметь соответствующие Secrets Config в том же месте GitHub, что и код, и они должны быть смонтированы в соответствующие pods со следующим расположением /config/secconfig и должны быть зашифрованы в base64.

        Все сервисные приложения должны быть независимыми развертываемыми сервисами и развертываниями.

        1. Все сервисы должны быть автоскалируемыми на основе порога CPU в 30%.
        2. Все конфигурации должны быть внешними
        3. Все секреты должны быть внешними
        4. В качестве базового образа следует использовать Rhel последней версии
        5. Каждый сервис/развертывание должно быть развернуто на уникальном пространстве имен.
        6. Приложение должно быть ограничено в использовании CPU и памяти в соответствии с вышеуказанными требованиями.
        7. Все развертывания должны выполняться с помощью Kubectl и YAML-конфигов.
        8. Все службы/развертывания должны иметь метки, такие как имя, автор, версия.
        9. Мои два цента
        10. Я знаю, что это требование будет немного расплывчатым для новичка. Но пока вы не попробуете, вы не получите представления о том, как работает Kubernetes.
        11. Этап 8: Ресурсы и новости Kubernetes
        12. Цель этой фазы состоит в том, чтобы научиться
        13. Следить за ресурсами Kubernetes, сообществом.
        14. Следить за развитием сообщества CNCF
        15. Путь обучения

        Мои два цента

        : – это высокопроизводительный пограничный и сервисный прокси с открытым исходным кодом, который делает сеть прозрачной для приложений. : помогает управлять Kubernetes с возможностями управления пакетами, чтобы облегчить пользователям быстрое определение, установку и обновление различных служб. : – это система мониторинга и оповещения с открытым исходным кодом, которая является одним из самых важных компонентов мониторинга в облачной среде. : – это механизм политик с открытым исходным кодом, который унифицирует реализацию политик в ИТ-среде, особенно в облачных нативных приложениях.

        Выше я перечислил лишь очень небольшое количество важных проектов, а ведь вокруг Kubernetes так много проектов, и изучить их можно в зависимости от ваших интересов. Далее мы перечислим некоторые надежные ресурсы, которые помогут вам оставаться в курсе событий.

        Цель этой фазы – узнать

        1. Список ресурсов Kubernetes
        2. Мои два цента

        Рабочие нагрузки

        Заключение

        Изучение технологий – это рутинная способность, которой вы должны следовать неукоснительно. Что касается Kubernetes, вам необходимо пройти все 8 этапов, чтобы стать специалистом в Kubernetes. Мой совет – вовлекать себя в практические занятия по каждой концепции для лучшего понимания, что поможет не сбиться с пути. Помните, что ваша основная цель состоит в том, чтобы

        Цель этого этапа состоит в том, чтобы научиться

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *