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

Введение в Kubernetes: Изучите основы

Введение в Kubernetes: Изучите основы

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

Kubernetes стала одной из самых интересных технологий в мире DevOps, которая привлекла большое внимание профессионалов DevOps. Kubernetes, или широко известная как k8s, – это портативная и расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами. Эта система оркестровки контейнеров предназначена для автоматизации развертывания, масштабирования, а также управления приложениями.

Будучи одним из лучших инструментов DevOps, основная цель Kubernetes – предоставить платформу, которая позволяет оптимизировать развертывание, масштабирование и эксплуатацию контейнеров приложений на кластере хостов. Множество облачных сервисов предоставляют платформу Kubernetes как услугу (PaaS), а также инфраструктуру как услугу (IaaS).

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

Введение в Kubernetes

Впервые Kubernetes был представлен в 2014 году не кем иным, как технологическим гигантом Google. Над ним работали несколько инженеров Google, а также Брендан Бернс, Джо Бреда и Крейг Маклаки. Проектирование и разработка Kubernetes в значительной степени опирались на Borg System компании Google. Кстати, большинство участников проекта уже работали над Borg.

Изначально проект получил название Project Seven of Nine, основанное на отсылке к Star Trek. Логотип содержит семь спиц, которые обозначают это кодовое имя. Для написания оригинального проекта Borg использовался язык C++. Однако переписанная система реализована на языке Go. Kubernetes v1.0 был представлен для использования в 2015 году. Вместе с ее выпуском компания Google решила наладить партнерские отношения с Linux Foundation.

Вместе они сформировали Cloud Native Computing Foundation, и Kubernetes была предложена в качестве посевной технологии. К марту 2018 года Kubernetes достигла 9-го места по коммитам на GitHub и 2-го по авторам и вопросам к Linux Kernel.

Что такое объекты Kubernetes?

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

Ключевыми объектами являются:

Как работает Kubernetes?

Kubernetes имеет основную/репликативную архитектуру. Архитектура Kubernetes состоит из множества компонентов. Эти компоненты можно разделить на те, которые управляют отдельным узлом, а другие являются частью плоскости управления. Очень важно понимать архитектуру, если вы хотите изучить Kubernetes.

Ключевыми областями архитектуры Kubernetes являются:

Узел Kubernetes:

Узел – это машина, на которой развертываются рабочие нагрузки или контейнеры. Его также часто называют “миньон” или “рабочий”. Каждый узел в кластере должен запускать контейнерную среду выполнения, например Docker. Кроме того, для легкой связи с основным узлом, для сетевой конфигурации этих узлов требуется ряд других компонентов. Другими компонентами являются:

  1. Kubelet: Куплет – это компонент, который обеспечивает, чтобы каждый узел находился в работающем состоянии и чтобы все контейнеры были здоровы. Процесс запуска, остановки и обслуживания контейнеров приложений берет на себя kubelet. Он следит за состоянием pod, и если они не находятся в нужном состоянии, pod повторно развертывается на том же узле.
  2. Kube-proxy: Kube-proxy выполняет функции балансировщика нагрузки и сетевого прокси. Основная задача этого компонента – направлять трафик на нужный контейнер на основе IP и номера порта.
  3. Время выполнения контейнера: Контейнер находится внутри капсулы. Контейнер – это самый низкий уровень микросервисов. В идеале он содержит запущенные приложения, библиотеки и их зависимости.

Плоскость управления Kubernetes:

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

  1. etcd: etcd – это хранилище данных, которое может разрабатывать CoreOS. Оно легкое, постоянное, распределяет и хранит данные конфигурации с ключевыми значениями.
  2. Сервер API: Сервер API является еще одним важным компонентом Kubernetes. Он предоставляет сервер Kubernetes, используя JSON, по HTTP. API может обеспечивать как внутренний, так и внешний интерфейс Kubernetes.
  3. Планировщик: Планировщик – это подключаемый компонент, который выбирает, на каком узле будет запущен объект.
  4. Дополнения запускаются с помощью стручков и сервисов и работают так же, как и любое другое приложение, запущенное в кластере. Единственное основное различие заключается в том, что они реализуют функции кластера Kubernetes. К числу важных дополнений относятся:

DNS

веб-интерфейс

  1. Мониторинг ресурсов контейнеров
  2. ведение журналов на уровне кластера
  3. Сертификация Kubernetes входит в топ-5 сертификаций DevOps. Читайте наш предыдущий блог, чтобы узнать о лучших сертификациях DevOps.
  4. Для каких целей используется Kubernetes?

Производство реальных приложений может охватывать множество контейнеров. Эти контейнеры должны быть развернуты на нескольких серверных узлах. Здесь возникает проблема, связанная с тем, что безопасность контейнеров является многоуровневой и сложной. Здесь на помощь приходит Kubernetes. Он легко предоставляет возможности управления и оркестровки, которые необходимы для масштабного развертывания контейнеров. Оркестровка позволяет создавать прикладные сервисы, которые могут охватывать несколько контейнеров, планировать эти контейнеры в кластерах, масштабировать эти контейнеры и управлять состоянием этих контейнеров. Изучив Kubernetes и используя его, вы сможете легко обеспечить ИТ-безопасность.

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

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

Каковы преимущества Kubernetes?

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

К основным преимуществам изучения Kubernetes относятся:

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

Оркестрировать контейнеры на нескольких хостах

В онлайн-учебниках рассказывается о:

развертывание контейнеризированного приложения на кластере

Масштабировать развертывание

Minikube – это утилита, позволяющая запускать Kubernetes(K8s) на локальной машине. Minikube запускает одноузловой кластер на локальной машине, чтобы мы могли попробовать Kubernetes локально во время разработки приложений. Minikube полезен для тех, кто только начинает работать с K8s, и позволяет опробовать развертывание Kubernetes и тестировать конфигурации.

Основы Kubernetes

Прежде чем приступить к установке Minikube, давайте вспомним некоторые основы.

Как установить Minikube?

Выполните следующую команду, чтобы проверить, поддерживается ли виртуализация на MacOS.

sysct l-a | grep machdep.cpu.features

Если в выводе вы увидите VMX, то функция виртуализации включена в вашей системе.

Нам необходимо установить kubectl . Если вы уже установили его, подтвердите это, выполнив команду:

kubectl version

Если нет, установите kubectl, выполнив следующую команду:

brew install kubectl

На этом шаге мы установим гипервизор. Доступны различные гипервизоры, установите любой из следующих.

Hyperkit

VirtualBox

Чтобы проверить, что мы установили kubectl и hyperkit, выполним следующую команду.

brew list

Мы установили необходимые инструменты. Теперь давайте установим minikube. Выполните следующую команду для установки minikube на MacOS.

brew install minikube

Выполните следующую команду, чтобы убедиться, что minikue успешно установлен.

версия minikube

Мы успешно установили minikube. Давайте запустим minikube, выполнив следующую команду.

minikube start

Мы можем проверить состояние minikube, выполнив следующую команду.

minikube status

Теперь мы успешно установили Minikube и готовы к работе с локальным кластером Kubernetes.

Как установить Kubernetes на Ubuntu с помощью kubeadm

В этом руководстве мы рассмотрим, как установить Kubernetes на Ubuntu 20.04.

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

Для этого руководства я создал два экземпляра Ubuntu EC2 на Amazon Web Services (AWS). Вы можете использовать платформу Whizlabs HandsOn Labs для создания инстансов и обучения установке Kubernetes.

Необходимые условия перед установкой Kubernetes на Ubuntu

2 или более серверов Ubuntu 20.04 Linux. Минимальные системные требования для Kubernetes – 2 процессора и 2 ГБ оперативной памяти

SSH-доступ к серверам с правами root

Шаг 2: Установите инструменты Kubernetes

На этом шаге мы установим инструменты kubernetes kubectl, kubeadm, kubelet, kubernetes-cni на оба узла.

Установка Kubectl

kubectl – это инструмент командной строки kubernetes, который позволяет нам выполнять команды внутри кластера.

sudo apt install kubectl

echo “deb kubernetes-xenial main” >> ~Если вы получите ошибку, попробуйте выполнить команду apt-get-update, а затем запустите эту команду снова.~При успешной установке вы получите следующее сообщение в терминале.

Установка Kubeadm

Kubectl – это инструмент, разработанный и поддерживаемый официальным сообществом Kubernetes(K8s). Kubeadm помогает создать минимально жизнеспособный кластер kubernetes без сложной конфигурации.

sudo apt install kubeadm

Установка Kubelet

Kubelet – это агент, который будет запущен на каждом узле и будет управлять коммуникацией между главным узлом и рабочими узлами.

sudo apt install kubelet

Установка kubernetes-cni

kubernetes-cni обеспечивает сетевое взаимодействие и связь между контейнерами.

sudo apt-get instal l-y kubernetes-cni

Шаг 3: Настройка имен хостов

Для облегчения идентификации мы можем задать узлам уникальные имена хостов. В этом руководстве я назвал узлы whizlabs-master и whizlabs-worker.

Вы можете задать имена узлов по своему усмотрению, выполнив следующую команду.

sudo hostnamectl set-hostname whizlabs-master

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

sudo hostnamectl set-hostname whizlabs-worker

Убедитесь, что вы запустили эти команды на соответствующих машинах. Выполните первую команду на узле, который вы хотите использовать в качестве ведущего, а вторую – на рабочем узле.

Шаг 4: Отключите память подкачки

Для работы kubernetes необходимо отключить память подкачки на всех узлах.

sudo swapof f-a

Приведенная выше команда отключит память подкачки временно или до перезагрузки системы. Мы можем отключить память подкачки навсегда, внеся изменения в файл fstab.

Шаг 5: Разрешите Iptables видеть трафик, передаваемый по мосту

Выполните следующие команды одну за другой. Нам нужно установить значение 1 для главного и рабочего узлов, чтобы правильно видеть мостовой трафик.

lsmod | grep br_netfilter

sudo modprobe br_netfilter

sudo sysctl net.bridge.bridge-nf-call-iptables=1

Шаг 6: Настройка драйвера Docker

Kubernetes рекомендует запускать docker с systemd в качестве драйвера.

sudo mkdir /etc/docker

“log-driver”: “json-файл”,

“storage-driver”: “overlay2”.

EOF

Также выполните следующие команды, чтобы включить docker при загрузке системы.

sudo systemctl enable docker

sudo systemctl daemon-reload

sudo systemctl restart docker

Шаг 7: Инициализация главного узла Kubernetes

Выполните следующую команду на главном узле.

sudo kubeadm ini t-pod-network-cidr=10.1.0.0/16

Шаг 8: Развертывание сети POD

Давайте проверим состояние брандмауэра и развернем сеть POD. Порт по умолчанию для kubernetes – 6443. Поэтому нам нужно добавить правило брандмауэра на главном и рабочем узлах, чтобы разрешить 6443. Выполните следующую команду для добавления правил брандмауэра.

sudo ufw allow 6443

sudo ufw allow 6443/tcp

Чтобы развернуть сеть pod, выполните следующие команды на главном узле.

kubectl appl y-f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl appl y-f

Чтобы проверить, все ли службы работают, как ожидалось, выполните следующую команду:

kubectl get pod s-all-namespaces

Шаг 9: Присоедините рабочие узлы к кластеру

Теперь у нас есть один главный узел и один рабочий узел. Войдите на рабочий узел и выполните следующую команду:

sudo kubeadm join 127.0.0.188:644 3-token u81y02.91gqwkxx6rnhnnl y-discovery-token-ca-cert-hash sha256:4482ab1c66bf17992ea02c1ba580f4af9f3ad4cc37b24f189db34d6e3fe95c2d

Теперь вернитесь на главный узел и проверьте, отображается ли рабочий узел в кластере.

kubectl get nodes

Мы успешно настроили кластер kubernetes. Теперь наш кластер готов к запуску приложений на нем. Теперь вы можете приступить к созданию развертываний kubernetes и тестированию приложений в реальном времени.

Чтобы попробовать пример развертывания приложения, можно выполнить следующую команду для развертывания веб-сервера nginx.

kubectl create deployment ngin x-image=nginx

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

kubectl create service nodeport ngin x-tcp=80:80

Попробуйте выполнить эти команды и научитесь устанавливать Kubernetes на Ubuntu 20.04.

Резюме

Хотя концепция контейнеров существует уже более десяти лет, ее популярность появилась совсем недавно. Основные операционные системы на базе Unix имели встроенную поддержку контейнеров, но по-настоящему демократизировать контейнеры, сделав их доступными и управляемыми, смог только Docker. Kubernetes основан на 15-летнем опыте выполнения производственных рабочих нагрузок в Google.

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

Если вы хотите изучить Kubernetes и придать своей карьере DevOps новый импульс, присоединяйтесь к онлайн-курсу Kubernetes и станьте экспертом по Kubernetes с AWS и Docker.

Есть вопросы? Просто напишите в разделе комментариев ниже или напишите в службу поддержки Whizlabs, мы будем рады ответить вам.

О Дхармалингаме Н

Dharmalingam.N имеет степень магистра в области делового администрирования и пишет на самые разные темы – от технологий до бизнес-анализа. Он имеет опыт работы в области управления взаимоотношениями. Некоторые из тем, о которых он писал и которые были опубликованы, включают: управление проектами, бизнес-анализ и привлечение клиентов.

Использует Kubernetes

команда check hypervisor

kubectl version cmd

установить hyperkit команда cmd

brew list cmd

brew install minikube cmd

minikube version cmd

minikube start cmd

minikube status cmd

Exit mobile version