Kubernetes 应用管理

2022-04-05 11:48:25   最后更新: 2022-04-05 11:48:25   访问数量:91




 

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

 

Kubernetes 集群的搭建

 

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

 

 

 

 

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

 

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 的对象,这在此前的文章中已经介绍过:

 

容器集群管理 -- Docker Swarm vs Kubernetes

 

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 配置项,表示哪些容器内的目录需要被挂载。

 

 

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

 

$ kubectl apply -f nginx_deployment.yaml

 

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

 

$ kubectl delete -f nginx_deployment.yaml

 

 

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

 

$ kubectl get pods -l app=nginx

 

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

 

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

 

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

 

 

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

 

$ kubectl apply -f nginx_deployment.yaml

 

 

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

 

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

 

 

欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,只有全部原创,只有干货没有鸡汤

 

linux 使用及配置相关






linux      技术贴      docker      虚拟化      沙盒      kubernetes      k8s     


京ICP备2021035038号