zoukankan      html  css  js  c++  java
  • 使用Kubectl部署应用

    目录

    使用Kubectl部署应用 

    • Kubectl部署流程 

    • 部署一个简单的Demo网站 


    一旦运行了Kubernetes集群,就可以在其上部署容器化应用程序。因此在开始之前,我们需要先确保集群已经准备就绪,无论是使用Minikube还是kubeadm创建的集群。

    接下来,我们讲述使用Deployment(部署)对象来部署一个简单网站。

    Kubectl部署流程

    使用Kubectl的部署流程如下所示:

     

    接下来我们根据这个流程部署一个简单的Demo网站。

     

    部署一个简单的Demo网站

    这里,我们可以通过创建Kubernetes Deployment对象来运行应用程序。那么我们需要编写一个YAML文件来定义Deployment对象。

     

    1.编写Deployment对象的配置文件

    在开始之前,我们需要对Deployment对象的配置有初步的了解。官方介绍文档如下所示:

    https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.15/#deployment-v1-apps

    根据官方标准,我们定义了一个简单的Deployment配置:

    apiVersion: apps/v1 #API对象版本,可通过“kubectl api-versions”命令查看

    kind: Deployment #资源类型,区分大小写,可通过“kubectl api-resources”命令查看,这里使用Deployment对象

    metadata: #标准的元数据

     name: demo-deployment  #当前Deployment对象名称,同一个命名空间下必须唯一

    spec: #部署规范(目标),Deployment控制器会根据此模板调整当前Pod到最终的期望状态

    replicas: 5  # Pod数量,这里指运行5个Pod
      selector: #选择器,其定义了Deployment控制器如何找到要管理的Pod
        matchLabels:  #匹配标签
          app: demo   #待匹配的标签键值对
      template:   # Pod模板定义
        metadata: #标准的元数据
          labels: #Pod标签
            app: demo #定义Pod标签,由键值对组成
        spec: #Pod规范
          containers: #容器列表,Pod中至少有一个容器
          - name: demo  #容器名称
            image: microsoft/dotnet-samples:aspnetapp #镜像地址
            ports:  #端口列表
            - containerPort: 80 #设置容器端口

    如上面定义所示,我们定义了一个简单的部署示例,它将使用创建一个ReplicaSet对象以利用复制控制器创建5个Pod来运行“dotnet-samples”。

     

    2.使用“kubectl create”执行资源创建

    YAML文件准备好了,接下来我们来执行创建:

    kubectl create -f deployment-demo.yaml

    结合配置,这里有几个重点说明一下:

    • 如上面配置所示,部署名称为“demo-deployment”。

    • 此部署对象将创建5个复制的Pod,由replicas字段决定。如上图所示该部署创建了5个Pod。

    • selector字段定义了Deployment控制器如何找到要管理的Pod,所以标签的键值对一定不能出错。

    • template字段则定义了Pod模板,其子字段labels定义了Pod 的标签,spec字段则定义了容器。

    执行创建部署之后,我们可以通过命令“kubectl get Deployment demo-deployment”来检查部署对象是否已经创建,部署是否已经完成:

    如上图所示,上述字段分别代表:

    • READY代表是否已就绪,左侧数字表示当前已运行的副本数,右侧表示所需的副本数。

    • UP-TO-DATE表示已更新已实现预期状态的副本数。

    • AVAILABLE则表示用户可以使用的应用程序副本数。

    • AGE表示应用已运行的时间。

    通用的,我们可以运行以下命令来查看副本集(ReplicaSet)对象:

    kubectl get ReplicaSets -lapp=demo

    通过上图可知,我们创建Deployment对象的过程实际上就是生成对应的副本集对象(Replica Set)并完成Pod副本的创建过程。

    值得注意的是,副本集的名称格式为[部署名称]-[随机字符串]。随机字符串是随机生成的,并使用pod-template-hash作为种子。如何查看pod-template-hash呢?使用如下命令即可:

    kubectl get pods -lapp=demo --show-labels

    如上图所示,5个Pod已经部署完成。

  • 相关阅读:
    怎样解决:未找到路径“……”的控制器或该控制器未实现 IController?
    错误:org.springframework.jdbc.support.SQLErrorCodesFactory
    springbean的生命周期
    注解到处excel
    nio读取文件,输出文件
    AtomicReference
    唯一id
    hashmap1.7的死锁模拟
    数组模拟stack
    环形队列
  • 原文地址:https://www.cnblogs.com/codelove/p/11497405.html
Copyright © 2011-2022 走看看