pod

pod 概念:Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。

Pod (就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。

  • 自主性pod
  • 控制器pod

pod 里边可以封装很多容器;只要有pod生成,就会有 pause 容器启动。

Replicationcontroller & Replicaset & Deployment

Replication Controller 用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的 Pod 来替代;而如果异常多出来的容器也会自动回收。在新版本的 Kubernetes 中建议使用 Replicaset 来取代 Replication Controlle

Replicaset 跟 Replication Controller 没有本质的不同,只是名字不一样,并且 Replicaset 支持集合式的 selector

虽然 Replicaset 可以独立使用,但一般还是建议使用 Deployment 来自动管理 Replicaset,这样就无需担心跟其他机制的不兼容问题(比如 Replicaset 不支持 rolling-update 但 Deployment 支持)

HPA (Horizontalpodautoscale)

Horizontal Pod Autoscaling 仅适用于 Deployment 和 Replicaset,在 v1 版本中仅支持根据 Pod 的 CPU 利用率扩所容,在 v1a1pha 版本中,支持根据内存和用户自定义的 metric 扩缩容

Statefulset

Stateful Set 是为了解决有状态服务的问题(对应 Deployments 和 Replicasets 是为无状态服务而设计),其应用场景包括:

  • 稳定的持久化存储,即 Pod 重新调度后还是能访问到相同的持久化数据,基于 PVC 来实现
  • 稳定的网络标志,即 Pod 重新调度后其 Podname 和 Hostname 不变,基于 Headless Service(即没有 Cluster IP 的 Service)来实现
  • 有序部署,有序扩展,即 Pod 是有顺序的,在部署或者扩展的时候要依据定义的顺序依次依次进行(即从 0 到 N1, 在下一个 Pod 运行之前所有之前的 Pod 必须都是 Running 和 Ready 状态),基于 Init containers 来实现
  • 有序收缩,有序删除(即从 N1 到 0)

Daemon Set

Daemonset 确保全部(或者一些)Node 上运行一个 Pod 的副本。当有 Node 加入集群时,也会为他们新增一个 Pod。当有 Node 从集群移除时,这些 Pod 也会被回收。删除 Daemon Set 将会删除它创建所有 Pod

使用 Daemonset 的一些典型用法:

  • 运行集群存储 daemon,例如在每个 Node 上运行 cluster、ceph
  • 在每个 Node 上运行日志收集 daemon,例如 fluentd、logstash
  • 在每个 Node 上运行监控 daemon,例如 Prometheus Node Exporter

Job, Cronjob

Job 负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个 Pod 成功结束

Cron Job 管理基于时间的 Job,即:

  • 在给定时间点只运行一次
  • 周期性地在给定时间点运行
posted @ 2021-09-09 16:14  Star-Hitian  阅读(67)  评论(0)    收藏  举报