Рубрики
Uncategorized

Кубернаны для разработчиков Nodejs

Вы продолжаете услышать слово Kubernetes в Tech Community, и вы не могли понять, что, почему … Теги с узлом, DevOps, WebDev, Showdev.

Вы продолжаете услышать слово «Кубернаны в техническом сообществе», и вы не могли понять, что, почему, а также как кубернаны?. Ну, вы в нужном месте, мой друг. Мне было так, когда люди вокруг меня разговаривают о Кубернетах и не могли понять, о чем говорят. Итак, в этой статье давайте понять 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

Здесь мы упоминаем тот вид как Сервис которые создают услугу для нас. Есть четыре типа Сервис в Кубернетах.

  1. Clusterip — Он предоставляет услугу, доступ к доступу в кластере. Вы можете получить доступ к этой услуге с помощью iPaddress кластера.
  2. NodePort — NodePort помогает нам подключать стручки к внешнему IP-адресу. Он отображает порт узла с помощью POD-порта, который помогает получить доступ на POD внешне. Примечание: порт узлов колеблется от 30000 — 32767
  3. LoadBalancer — это похоже на NodePort, за исключением того, что он уравновешивает нагрузку с несколькими портами.
  4. 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»