专栏首页magicodes使用Kubectl部署应用

使用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已经部署完成。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 了解Kubernetes主体架构(二十七)

    接下来还会逐步完善本教程,比如Helm、ELK、Windows Server容器等等。

    雪雁-心莱科技
  • 在WIN SERVER 2016上安装DOCKER(带过坑)

    什么是Docker?Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,...

    雪雁-心莱科技
  • 构建自己的简单微服务架构(开源)

    本篇仅作引导,内容较多,如果阅读不方便,可以使用电脑打开我们的文档官网进行阅读。如下图所示:

    雪雁-心莱科技
  • 使用Kubectl部署应用

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

    心莱科技雪雁
  • Kubernetes--玩转Pod滚动更新123

    今天推荐一篇关于Kubernetes上服务滚动更新相关的配置选项的文章,文章列出了最常用的几个配置项,解释了他们是怎么影响调度器对服务进行滚动更新的,同时还带出...

    KevinYan
  • 轮廓检测论文解读 | 整体嵌套边缘检测HED | CVPR | 2015

    轮廓检测,对我这样的初学者而言,与语义分割类似。分割任务是什么我就不再赘述了,轮廓检测则是完成这样的一个任务:

    机器学习炼丹术
  • Vuejs --04 计算属性

    一、使用原因      1、模板中表达式很便利,但实际上只适用于简单的运算,不适宜放入太多逻辑运算,例如: <div id="example"> {{ mess...

    用户1148399
  • 函数内部的this指向

    这些 this 的指向,是当我们调用函数的时候确定的。调用方式的不同决定了this 的指向不同

    清出于兰
  • 07 . Kubernetes之Service

    **三种代理模式 1.1版本使用的userspace,性能低,因为用户请求先要到内核空间,然后到主机用户空间Kube-Proxy,由kube-proxy封装报...

    常见_youmen
  • 请查收:录取通知书中的微信校园卡

    2020年,是特殊的一年,在这特殊的一年,道阻且长,但同学们做出的每个努力都会获得收获。 经历了特殊时间的高考、志愿填报,同学们已经陆续收到了各高校的录取通知...

    鹅老师

扫码关注云+社区

领取腾讯云代金券