前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes 应用的部署与管理

Kubernetes 应用的部署与管理

作者头像
用户3147702
发布2022-06-27 17:01:53
1.1K0
发布2022-06-27 17:01:53
举报
文章被收录于专栏:小脑斧科技博客

1. 引言

上一篇文章中,我们从零搭建了一个 Kubernetes 集群:

Kubernetes 集群搭建

集群已经搭建好,下一步就是要在集群中部署应用了。

2 配置应用

要在集群中部署应用,首先需要编写应用的配置文件,例如下面的 nginx_deployment.yaml:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
        matchLabels:
            app: nginx
replicas: 2
template:
        metadata:
            app: nginx
        spec:
            containters:
            - name: nginx
              image: nginx:1.7.9
              ports:
              - containerPort: 80
              volumMounts:
              - mountPath: "/usr/share/nginx/html"
                name: nginx-vol
            volumes:
            - name: nginx-vol
              emptyDir: {}

在这个配置文件中,主要分为三个部分:

1. 基础信息

配置文件前两行,我们配置了这个应用的版本和类型。

类型 Deployment 是一个定义多副本 Pod 的对象,这在此前的文章中已经介绍过:

<a id="10183737"></a>

2. 元信息 metadata

metadata 中配置了这个 API 对象的元数据,也就是这个 API 对象的标识。它是我们从 Kubernetes 中找到这个对象的主要依据。

除了上面配置的 name 外,还通过键值对的方式为这个 API 对象打上标签。

例如,在第 12 行,定义这个 Deployment 对象实际包含的 Pod 对象时,为这个 Pod 对象打上的“app: nginx”标签。

3. 对象属性定义 spec

不同类型的 API 对象,他们在基础信息和元信息的定义格式和字段上基本上都是相同的。但不同类型的 API 对象却有着不同的 spec 格式,因为它是用来详细描述这个对象要表达的功能的独有定义。

再上面的例子中,由于 Deployment 对象是若干 Pod 对象的组合,所以,Deployment 的 Spec 包含了以下三方面的信息:

  1. 如何选取需要的 Pod -- selector。
  2. 每个 Pod 需要几个副本 -- replicas。
  3. Pod 列表 -- template。

而在这个 Deployment 的 template 配置中,又是一个 pod 的定义,它的 spec 则包含了两个信息:

  1. Pod 的容器列表 -- containers。
  2. 要为这个 Pod 添加的 Volume 列表 -- volumes。

在这个例子中,我们声明了一个名为 nginx-vol,类型是 emptyDir 的 Volume,所谓的 emptyDir,就是不显式声明宿主机目录的 Volume,而是在宿主机上创建一个临时目录,挂载到容器所声明的 Volume 目录上。

所以,在容器声明中,包含了 volumeMounts 配置项,表示哪些容器内的目录需要被挂载。

3. 启动和删除应用

要启动应用,只需要执行 kubectl 的创建命令即可:

$ kubectl apply -f nginx_deployment.yaml

如果要删除已经启动的引用,只需要执行删除命令即可:

$ kubectl delete -f nginx_deployment.yaml

4. 应用的状态

通过 kubectl get 命令可以查看当前全部 API 对象的运行状态:

$ kubectl get pods -l app=nginx

通过 kubectl describe 命令可以查看一个 API 对象的细节:

$ kubectl describe pod nginx-deploment-675914928bf6-9devr

describe 命令除了返回 Pod 的详细信息,还包含所有针对这个 API 对象的重要操作,这些重要操作被显示在 Events 一项中,这对于我们的问题排查十分重要。

5. 更新应用

如果想要更新应用,首先,我们需要编辑应用的 yaml 配置文件。然后通过 kubectl apply 应用更新:

$ kubectl apply -f nginx_deployment.yaml

6. 让应用容器执行指令

和 Docker 类似,kubectl 也提供了 exec 指令用来执行指令,最常用的便是直接进入容器:

$ kubectl exec -it nginx-deployment-675914928bf6-9devr -- /bin/bash

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小脑斧科技博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 引言
  • 2 配置应用
    • 1. 基础信息
      • 2. 元信息 metadata
        • 3. 对象属性定义 spec
        • 3. 启动和删除应用
        • 4. 应用的状态
        • 5. 更新应用
        • 6. 让应用容器执行指令
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档