《Kubernetes权威指南》笔记2

有状态的集群

一开始用的是 StatefulSet,后来改用 K8s Operator。

Job

除了无状态集群(Deployment)和有状态集群(Statefulset),还有批处理应用。为了支持这类应用,Kubernetes 引入了新的资源对象——Job。

Jobs控制器提供了两个控制并发数的参数:completions 和 parallelism,completions表示需要运行任务数的总数,parallelism 表示并发运行的个数。

Job所控制的Pod副本是短暂运行的,可以将其视为一组容器,其中的每个容器都仅运行一次。

后来,Kubernetes 增加了 CronJob,可以周期性地执行某个任务。

ConfigMap

有多个副本部署在不同的机器上时,配置文件的分发就成为一个让人头疼的问题,所以很多分布式系统都有一个配置中心组件,来解决这个问题。但配置中心通常会引入新的API,从而导致应用的耦合和侵入。Kubernetes则采用了一种简单的方案来规避这个问题,如图1.13所示,具体做法如下:

  1. 用户将配置文件的内容保存到 ConfigMap 中。
  2. 在建模用户应用时,在Pod里将ConfigMap定义为特殊的Volume进行挂载。在Pod被调度到某个具体Node上时,ConfigMap里的配置文件会被自动还原到本地目录下,然后映射到Pod里指定的配置目录下,这样用户的程序就可以无感知地读取配置了。
  3. 在ConfigMap的内容发生修改后,Kubernetes会自动重新获取ConfigMap的内容,并在目标节点上更新对应的文件。

Secret

它解决的是对敏感信息的配置问题,比如数据库的用户名和密码、应用的数字证书、Token、SSH密钥及其他需要保密的敏感配置。在 Kubernetes 1.7 版本以后,Secret 中的数据才可以以加密的形式进行保存,之前是以BASE64编码格式存放的。

HPA(Horizontal Pod Autoscaler)

即自动控制Pod数量的增加或减少。通过追踪分析指定Deployment控制的所有目标Pod的负载变化情况,来确定是否需要有针对性地调整目标Pod的副本数量。

VPA

根据容器资源使用率自动推测并设置Pod合理的CPU和内存的需求指标,从而更加精确地调度Pod。VPA目前属于比较新的特性,也不能与HPA共同操控同一组目标Pod。

存储相关资源对象

静态存储(Volume)

Volume 是 Pod 中能够被多个容器访问的共享目录,与 Docker 的 Volume 并不太一样。

  1. emptyDir 用作临时目录或多容器共享目录
  2. hostPath 是在Pod上挂载宿主机上的文件或目录,用于永久储存或访问宿主机数据
  3. 公有云 Volume
  4. 其他,如 configmap 和 secret

动态存储

相关概念:Persistent Volume、StorageClass、PVC。

安全相关资源对象

只有通过认证的用户才能通过Kubernetes的API Server查询、创建及维护相应的资源对象。

Service Account 代表 Pod 应用的账号,Service Account是通过Secret来保存对应的用户(应用)身份凭证的,当Pod里的容器被创建时,Kubernetes会把对应的Secret对象中的身份信息(ca.crt、Token等)持久化保存到容器里固定位置的本地文件中,因此当容器里的用户进程通过Kubernetes提供的客户端API去访问API Server时,这些API会自动读取这些身份信息文件,并将其附加到HTTPS请求中传递给API Server以完成身份认证逻辑。

在身份认证通过以后,就涉及“访问授权”的问题,这就是RBAC(Role-Based Access Control)要解决的问题了。

猜你喜欢

转载自juejin.im/post/7031600162992717854