使用Kubernetes设置MonorePo应用程序
#node #docker #microservices #kubernetes

Kubernetes是一种功能强大的容器编排工具,可以帮助您管理和部署MonorePo应用程序。在此博客中,我们将介绍Kubernetes的基础知识以及如何使用它来部署您的应用程序。在此博客结束时,您应该对Kubernetes有很好的了解,并能够使用Kubernetes部署自己的应用程序。

简介:
可以使用开源平台Kubernetes轻松地管理和缩放容器的应用程序。通过在多个主机上自动化部署,扩展和管理,基础架构变得更加有效和可靠。它确保容器应在该容器应在哪里并维护所需的应用状态。

kubernetes创建了一个节点群,主节点控制和管理整个群集。主节点决定部署,缩放和调度容器。

K8S支持自动缩放,负载平衡和自我修复,Kubernetes有效地管理了多个容器和服务。在Kubernetes中,开发人员可以专注于构建和交付应用程序,而平台则管理容器。

现在,让我们深入研究Kubernetes架构。

K8s architecture

pod:
Kubernetes的最小成分是POD。 POD包含一个带有一些内部Kubernetes过程的Docker容器。 Pod是Kubernetes中Docker容器的包装纸。它代表集群中运行过程的一个实例。豆荚被设计为短期,可以根据需要创建,销毁和更换。

节点:
在群集中,将有多个在称为“节点”的空间中部署的POD,或者也称为“ Worker Node”。节点只能存储有限量的POD,因为它取决于其存储容量和内存分配。

节点组:
多个节点将创建一个节点组,并且该节点组通常在群集部署中使用,以根据特定标准(例如硬件规格,可用性区域,区域或任何其他所需属性)组织和管理工人节点。

服务:
如果您对同一应用程序容器有多个POD,则该服务将用于路由来自节点外部的流量。在Kubernetes中,该服务充当内部负载平衡器,并在该服务一部分的多个POD上分发网络流量。

Kubernetes中有不同类型的服务:

  1. nodeport:在这种类型的中,在群集中每个选定节点的配置中定义的特定端口中,公开了这类服务。它将创建一个端口范围,并将其暴露于节点,该节点以后将流量转发到服务。

  2. clusterip:它在内部群集IP地址上公开服务,并且只能在群集中访问。它是默认服务类型。

  3. LOADBALANCER:此服务类型创建外部负载平衡器并分配唯一的IP地址。创建后,它会自动路由流量并分发负载。

入口:
它将管理外部流量(来自集群外部的流量),它将提供一种基于定义规则处理服务的路由的方法。入口是从传入流量进入集群的切入点。入学本身无法管理负载平衡。它依赖于入口控制器,该入口控制器在集群中连续监视资源。这是一项外部服务,具有处理群集中的外部流量的功能。为了进一步了解,请查看下图。

Ingress architecture

部署:
部署是一个API对象,可提供声明性YAML配置指定参数,例如所需的副本数量,用于使用的容器映像,环境变量,资源限制等,允许您部署和管理应用程序的生命周期。为了增加相同容器的副本,用键“副本”更改值。它将创建一个同一容器的另一个豆荚。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: server-deployment
  labels:
    app: server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: server
  template:
    metadata:
      labels:
        app: server
    spec:
      containers:
        - name: server
          image: starter_server:latest
          imagePullPolicy: Never
          ports:
            - containerPort: 3000
          resources:
            limits:
              memory: "256Mi"
              cpu: "1000m"
          envFrom:
            - secretRef:
                name: secret

除了部署YAML文件外,还有一种标准方法可以使用秘密,格式存储变量来管理环境变量。有关更多信息,请查看此page

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: secret
data:
  NODE_ENV: ZGV2ZWxvcG1lbnQ=
  PORT: MzAwMA==

和用于部署应用程序的服务文件。为了使其正常工作,请确保将相同的元数据和选择器名称附加到部署文件中,该文件与主节点使用以识别应用程序的资源。

apiVersion: v1
kind: Service
metadata:
  name: starter-service
spec:
  selector:
    app: server
  type: NodePort
  ports:
    - protocol: TCP
      port: 3000
      targetPort: 3000
      nodePort: 31110

结论:
Kubernetes提供了水平可扩展性,可让您轻松添加或删除POD来扩展应用程序。它通过通过服务在多个节点上分配多个节点来维护应用程序的可用性,并通过在节点失败时提供滚动升级,自动重新安排和替换来支持最小停机时间。

在下一个博客中,我们将看到Helm图表的使用及其在微服务应用程序中的使用。

感谢您阅读本文。如果您有任何疑问,请随时通过harsh.make1998@gmail.com

直到下次!