Вы продолжаете услышать слово «Кубернаны в техническом сообществе», и вы не могли понять, что, почему, а также как кубернаны?. Ну, вы в нужном месте, мой друг. Мне было так, когда люди вокруг меня разговаривают о Кубернетах и не могли понять, о чем говорят. Итак, в этой статье давайте понять Kubernetes с разработкой приложений Nodejs.
Примечание : Есть много статей, поясняются о Kubernetes, и это детально работает рабочий процесс. Но главная цель написания этого блога — объяснить Kubernetes для парня, как я, кто хочет изучать Кубераты легким и понятным способом.
Раньше, попадание в концепцию Кубебени. Давайте понять, что такое Kubernetes и почему это так популярно в наши дни.
Я предполагаю, что у вас есть основное понимание того, что такое Докер Контейнеры и как построить документы Docker для приложения Nodejs.
Предварительные условия
Docker Desktop установлен и Kubernetes включен на вашу машину.
Статьи по Теме
Как найти идеи проекта для веб-разработки
Создание продуктивно-класса NODEJS, GRAPHQL и SERVER SERVER на CI/CD
Что такое Кубернеты?
Давайте попробуем понять Кубернаны простыми терминами и сценариями. В начале разработки приложений мы склонны развертывать наше приложение вручную, просто создавая сервер в облаке и развернуйте наше приложение с помощью протокола GIT или передачи файлов, таких как filecilla.
После эволюции контейнеров и докера развертывание приложений будет похоже на упаковку нашего кода приложений Insider Docker Containers и развернуть их на сервере. Он решил множество проблем для нас, таких как установка зависимостей вручную и разрешать конфликты, которые приходят таким образом.
Тем не менее, есть некоторые проблемы, которые нужно решить вручную. Они есть, если у нас есть реплики контейнеров, нам нужно управлять им. вроде бы, если кто-то опустится. Нам нужно перезапустить набор реплик и продолжать проверять здоровье кластера.
Затем наступает Кубернаны, что помогает нам управлять контейнерами в системе. Kubernetes помогает нам систематически управлять контейнером. После настроили, он позаботится о контейнерах без необходимости беспокоиться о контейнерах.
Некоторые преимущества использования Kubernetes являются,
- Открытие услуг — Допустим, у вас есть контейнер для API для отдыха пользователя и контейнера для другого контейнера API доменного отдыха. Чтобы сделать это общаться, вам нужно сделать услугу доступной другой. Кубернаны помогают нам в этом процессе легче. Мы увидим об этом в более поздней части этой статьи.
- Контейнерная оркестровка — Если вы хотите реплики вашего контейнера, чтобы работать все время независимо от сбоя. Кубернаны решают эту проблему из коробки. Вам не нужно беспокоиться об этом вообще. Это удостоверится, что указанная реплика доступна все время.
Основы кубернанов
Хорошо!! Мы достигли одной из важных тем в статье. Давайте посмотрим, что нам нужно знать в Кубернане до разработки приложений с Кубернетами.
Во-первых, у нас есть мастер и узел,
Мастер и узел
Узел — это просто виртуальная машина сервера. Как мы создаем виртуальную машину. Kubernetes управляют виртуалом в качестве узла.
Master — это контроллер, который контролирует все операции в узле, и он также управляет всеми конфигурациями узлов.
Внутри узла у нас есть стручок и контейнер.
Стручок и контейнер
Стручок в Куберане представляет собой коллекцию контейнеров. Большую часть времени POD будет содержать только один контейнер. Только на некоторых специальных сценариях вам может потребоваться создать несколько контейнеров в POD.
До сих пор у нас есть контейнер внутри стручка. Но как они общаются между контейнерами? Например, приложение NODEJS необходимо подключить с MongoDB для доступа к данным. Как это происходит в Кубернетах?
Приходит необходимость услуги в Куберане.
Оказание услуг
Сервис помогает нам с коммуникацией между контейнерами. Позвольте мне сказать вам одну вещь. Когда я читаю о услугах в Кубейнетах. У меня был этот вопрос «почему?» Почему нам нужны другие ресурсы для управления общением? Не может не разговаривать контейнер непосредственно с другим контейнером?
Затем я узнал реальную цель услуг в Куберане. Допустим, у вас есть контейнер A с iPaddress 192.16.3.2
И контейнер B связывается с контейнером A, используя эту iPaddress. Через некоторое время ваш контейнер умирает и кубернаны воссоздает новый контейнер для вас на узле. Теперь iPaddress будет отличаться для контейнера. Теперь, как контейнер может общаться с помощью IP-адреса отличается
Это главная цель наличия службы Кубернетиков.
Развертывание
Развертывание — это способ создания стручков и контейнеров в Куберане. Он прочитал файл конфигурации и потяните изображения Docker из концентратора и создайте из него контейнер.
Большую часть времени вы будете писать конфигурацию YAML для Оказание услуг и Развертывание Ресурсы * Отказ * Иногда вам может потребоваться создать некоторые другие ресурсы.
Бег Nodejs с Куберовщиками
Здесь у нас есть простое приложение Nodejs для развертывания использования Kubernetes. Создайте App.js и добавьте следующий код,
const express = require("express") const app = express() app.get("/", (req, res) => { res.send({ data: "Kubernetes is Awesome", }) }) const PORT = process.env.PORT || 8080 app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`) })
После этого создайте папку, чтобы написать конфигурацию Kubernetes. infra/app-deploy.yaml
--- apiVersion: v1 kind: Service metadata: name: my-node-app-service labels: app: my-node-app-service spec: ports: - port: 80 protocol: TCP targetPort: 8080 type: LoadBalancer selector: app: mynodeapp ---
Давайте сломаемся одним за другим. Для любых ресурсов, которые вы создаете для Kubernetes. Это всегда начинается с авивение
и Добрый
apiVersion: v1 kind: Service
Здесь мы упоминаем тот вид как Сервис
которые создают услугу для нас. Есть четыре типа Сервис
в Кубернетах.
- Clusterip — Он предоставляет услугу, доступ к доступу в кластере. Вы можете получить доступ к этой услуге с помощью iPaddress кластера.
- NodePort — NodePort помогает нам подключать стручки к внешнему IP-адресу. Он отображает порт узла с помощью POD-порта, который помогает получить доступ на POD внешне. Примечание: порт узлов колеблется от 30000 — 32767
- LoadBalancer — это похоже на NodePort, за исключением того, что он уравновешивает нагрузку с несколькими портами.
- Externname — это отображает сервис и стручки к Cname записывать
Здесь мы будем использовать сервис LoadBalancer, чтобы сопоставить NodePort с контейнерами.
Возвращение к конфигурации. Тогда у нас есть, метаданные
который помогает определить сервис.
metadata: name: my-node-app-service labels: app: my-node-app-service
После этого у нас есть основная часть конфигурации, которая является Спец
Отказ Здесь мы указываем тип службы вместе с портом и целевым портом
spec: ports: - port: 80 protocol: TCP targetPort: 8080 type: LoadBalancer selector: app: mynodeapp
Сервисный рабочий процесс
На вышеуказанной диаграмме нам нужно получить доступ к струнию из внешнего IP. Для этого мы настраиваем Сервис
который отображает порт между POD и NodePort.
Сервис отображает порт с целеполучением, и он отображает с NodePort, чтобы направить трафик в POD.
До сих пор мы видели, как настроить Оказание услуг
. ЛЕТ посмотрите, как создать стручки и контейнеры внутри него. Для этого нам нужно создать Развертывание
Ресурсы.
apiVersion: apps/v1 kind: Deployment metadata: name: app-deployment labels: app: mynodeapp spec: replicas: 2 selector: matchLabels: app: mynodeapp template: metadata: labels: app: mynodeapp spec: containers: - name: mynodeapp image: ganeshmani009/nodesample ports: - containerPort: 8080 imagePullPolicy: Always env: - name: PORT value: "8080" - name: MONGODB_URL value: mongodb://mongo:27017/sampledb
Кажется, это немного долго. правильно?. Попробуем сломать его и лучше понять. Как раньше, у нас есть основная информация о ресурсе,
# configuration apiVersion: apps/v1 kind: Deployment metadata: name: app-deployment labels: app: mynodeapp
После этого у нас есть Спец
С конфигурацией для Шаблон
и реплизет
# Configuration for the replica set replicas: 2 selector: matchLabels: app: mynodeapp
Затем у нас есть конфигурация для POD, которая вытягивает изображение из узла Docker и создает контейнер внутри стручка.
template: metadata: labels: app: mynodeapp spec: containers: - name: mynodeapp image: ganeshmani009/nodesample ports: - containerPort: 8080 imagePullPolicy: Always env: - name: PORT value: "8080" - name: MONGODB_URL value: mongodb://mongo:27017/sampledb
После завершения конфигурации запустите команду в терминале.
kubectl apply -f app-deploy.yaml
Вы можете проверить стручки, используя команду
kubectl get pods
С тех пор мы настроили реплиз
как 2. Это создает для нас два стручка. Чтобы проверить услугу.
kubectl get service
Заключение
Мы только что поцарапали поверхность в мире Кубернетика. В предстоящей статье мы увидим, как подключить MongoDB с приложением Nodejs в Kubernetes. Мы также увидим некоторые случаи использования о том, как Nodejs и Kubernetes используются в производстве. До этого, счастливого кодирования:-)
Оригинал: «https://dev.to/ganeshmani/kubernetes-for-nodejs-developers-12ao»