注:本文已发布超过一年,请注意您所使用工具的相关版本是否适用
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。
Kubernetes 可以做什么:

Kubernetes 是一个典型的主从架构,对于用户而言其实都是在和 Kubernetes Master 的 API 打交道,无论大家是通过 kubectl 这种 cli 工具,还是说通过 Kubernetes Dashboard 等 UI 界面,还是通过 client-go sdk 进行开发都是一样
1 | |
apiVersion 对象的版本
kind 对象类型
metadata 对象元数据
namespace 对象的命名空间
name 对象的名字,对象的名字在一个 namespace 内是唯一的,我们可以通过 namespace + name 获取到一个具体的对象
labels 标签
kubectl 时快速的通过 labels 筛选对象 kubectl get pods -l a=blabelSelector) 关联对象,例如 Deployment 就是通过标签选择器关联了对应的 Podspec 对象的规格(Spec)描述了某一个实体的期望状态
status 对象的状态信息描述了当前对象的所处的状态
Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。
Pod 是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。
除了应用容器,Pod 还可以包含在 Pod 启动期间运行的 Init 容器
如下图所示,Pod 可以共享网络和存储,所以一个 Pod 内的多个容器可以直接通过 127.0.0.1 互相访问

Pod YAML 简要说明
1 | |
以我们的 api-svc 服务为例
1 | |
Deployment 常用于管理无状态的服务,例如常见的 web 后端服务几乎都是无状态的,Deployment 启动 pod 时没有特别顺序,每个 pod 的 name 也是随机的
1 | |
StatefulSet 是用来管理有状态应用的工作负载 API 对象,StatefulSet 为它们的每个 Pod 维护了一个有粘性的 ID。
StatefulSet YAML 和 Deployment 区别不是很大
1 | |
Job 会创建一个或者多个 Pod,并将继续重试 Pod 的执行,直到指定数量的 Pod 成功终止。 随着 Pod 成功结束,Job 跟踪记录成功完成的 Pod 个数。 当数量达到指定的成功个数阈值时,任务(即 Job)结束。 删除 Job 的操作会清除所创建的全部 Pod。 挂起 Job 的操作会删除 Job 的所有活跃 Pod,直到 Job 被再次恢复执行。
Job 一般常用于一些一次性的任务,例如对战任务等等等等
Job YAML
1 | |
我们在部署一个 kubernetes 应用的时候往往会涉及到很多的对象,在很多个应用部署的时候往往只有有限的字段需要修改,如果所有的部署都采用 yaml 的方式,会导致有大量的重复字段,以及带来十分低效的维护方式。
helm 就是其中一种解决方式,它可以用来管理 chart,chart 是易用 k8s 应用包管理方式,主要就是很多的 yaml 模板文件再加上一个 values.yaml 文件用于定义输入字段
chart 的基本结构
1 | |
通过 helm install 命令我们可以安装 chart 到 k8s 集群内,安装的时候可以通过指定 values.yaml 文件替换默认的参数,安装后应用在 helm 叫做 release
注:本文已发布超过一年,请注意您所使用工具的相关版本是否适用
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。
Kubernetes 可以做什么:

Kubernetes 是一个典型的主从架构,对于用户而言其实都是在和 Kubernetes Master 的 API 打交道,无论大家是通过 kubectl 这种 cli 工具,还是说通过 Kubernetes Dashboard 等 UI 界面,还是通过 client-go sdk 进行开发都是一样
1 | |
apiVersion 对象的版本
kind 对象类型
metadata 对象元数据
namespace 对象的命名空间
name 对象的名字,对象的名字在一个 namespace 内是唯一的,我们可以通过 namespace + name 获取到一个具体的对象
labels 标签
kubectl 时快速的通过 labels 筛选对象 kubectl get pods -l a=blabelSelector) 关联对象,例如 Deployment 就是通过标签选择器关联了对应的 Podspec 对象的规格(Spec)描述了某一个实体的期望状态
status 对象的状态信息描述了当前对象的所处的状态
Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。
Pod 是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。
除了应用容器,Pod 还可以包含在 Pod 启动期间运行的 Init 容器
如下图所示,Pod 可以共享网络和存储,所以一个 Pod 内的多个容器可以直接通过 127.0.0.1 互相访问

Pod YAML 简要说明
1 | |
以我们的 api-svc 服务为例
1 | |
Deployment 常用于管理无状态的服务,例如常见的 web 后端服务几乎都是无状态的,Deployment 启动 pod 时没有特别顺序,每个 pod 的 name 也是随机的
1 | |
StatefulSet 是用来管理有状态应用的工作负载 API 对象,StatefulSet 为它们的每个 Pod 维护了一个有粘性的 ID。
StatefulSet YAML 和 Deployment 区别不是很大
1 | |
Job 会创建一个或者多个 Pod,并将继续重试 Pod 的执行,直到指定数量的 Pod 成功终止。 随着 Pod 成功结束,Job 跟踪记录成功完成的 Pod 个数。 当数量达到指定的成功个数阈值时,任务(即 Job)结束。 删除 Job 的操作会清除所创建的全部 Pod。 挂起 Job 的操作会删除 Job 的所有活跃 Pod,直到 Job 被再次恢复执行。
Job 一般常用于一些一次性的任务,例如对战任务等等等等
Job YAML
1 | |
我们在部署一个 kubernetes 应用的时候往往会涉及到很多的对象,在很多个应用部署的时候往往只有有限的字段需要修改,如果所有的部署都采用 yaml 的方式,会导致有大量的重复字段,以及带来十分低效的维护方式。
helm 就是其中一种解决方式,它可以用来管理 chart,chart 是易用 k8s 应用包管理方式,主要就是很多的 yaml 模板文件再加上一个 values.yaml 文件用于定义输入字段
chart 的基本结构
1 | |
通过 helm install 命令我们可以安装 chart 到 k8s 集群内,安装的时候可以通过指定 values.yaml 文件替换默认的参数,安装后应用在 helm 叫做 release