Kubernetes之资源控制器🐻


Kubernetes之资源控制器

 文章作者: Escape  文章链接: https://www.escapelife.site/posts/9950cab.html

Kubernetes 资源控制器配置文件的编写是学习 K8S 的重中之重!

资源配额控制器确保了指定的资源对象始终不会超过配置的资源,能够有效的降低整个系统宕机的机率,增强系统的鲁棒性,对整个集群的稳定性有非常重要的作用。

Kubernetes的资源控制器 Kubernetes的资源控制器

1. Pod 控制器

需要我们重点掌握的知识点

什么是控制器呢?在 Kubernetes 中内建了很多控制器(controller),这些相当于一个状态机,用来控制 Pod 的具体状态和行为的,我们成为 Pod 控制器。咳咳咳,在 Kubernetes 中内建控制器有如下几种,它们的功能和特点各不相同。

  • ReplicationController
  • ReplicaSet
  • Deployment
  • DaemonSet
  • StateFulSet
  • Job
  • CronJob
  • Horizontal Pod Autoscaling
Kubernetes资源控制器的知识要点 Kubernetes资源控制器的知识要点

1.1 简单介绍

与所有其它 Kubernetes 配置一样,我们创建资源控制器的时候也是需要,如 apiVersionkind 和 metadata 等字段的,通过使用这些字段组成配置文件,来完成服务部署的。

  • Pod 模板
    • .spec.template

书写配置文件的时候,.spec.template 是一个 pod 模板,它的模式与 pod 完全相同,只是它是嵌套的,没有 apiVersion 或 kind 属性。

  • 设置标签
    • 优先级高 => .metadata.labels
    • 优先级低 => .spec.template.metadata.labels
    • 没有指定 .metadata.labels 则默认为 .spec.template.metadata.labels

控制器本身是可以设置标签的,用于做分类或者控制选择时使用。

  • Pod 选择器
    • .spec.selector
    • .spec.template.metadata.labels
    • 没有指定 .spec.selector 则默认为 .spec.template.metadata.labels

其中 .spec.selector 字段是一个标签选择器,所创建出来的标签用于选择则出匹配的 Pod。如果指定了 .spec.template.metadata.labels 字段,则必须和 .spec.selector 字段相同,否则在创建的时候将会被 API 拒绝。

  • 多个副本
    • .spec.replicas

可以通过设置 .spec.replicas 来指定应该同时运行多少个 Pod。在任何时候,处于运行状态的 Pod 个数都可能高于或者低于设定值。例如副本个数刚刚被增加或减少时,或者一个 pod 处于优雅终止过程中而其替代副本已经提前开始创建时。如果没有指定 .spec.replicas,那么它默认是 1 个。


1.2 资源类型

  • 下表列出的是 kubernetes 中所有支持的类型和缩写的别名。
资源类型缩写别名
clusters -
componentstatuses cs
configmaps cm
daemonsets ds
deployments deploy
endpoints ep
event ev
horizontalpodautoscalers hpa
ingresses ing
jobs -
limitranges limits
namespaces ns
networkpolicies -
nodes no
statefulsets -
persistentvolumeclaims pvc
persistentvolumes pv
pods po
podsecuritypolicies psp
podtemplates -
replicasets rs
replicationcontrollers rc
resourcequotas quota
cronjob -
secrets -
serviceaccount sa
services svc
storageclasses -
thirdpartyresources -

1.3 格式化输出

  • 要以特定的格式向终端窗口输出详细信息,可以在 kubectl 命令中添加 -o 或者 -output 标志。
输出格式描述
-o=custom-columns= 使用逗号分隔的自定义列列表打印表格
-o=custom-columns-file= 使用 文件中的自定义列模板打印表格
-o=json 输出 JSON 格式的 API 对象
-o=jsonpath=