Kubernetes学习总结②(了解Kubernetes资源之(1) Workloads APIs类别)
我没有参与过业务,但个人对容器技术很感兴趣,所以学习了Kubernetes,并将其总结在本文中。文章内容只是概述(上篇文章的续篇)。
由于Kubernetes的资源较多,我将其分成多篇文章进行介绍。
①Kubernetes的概述 ← 在之前的文章中提到
②Kubernetes可以做到的事情 ← 在之前的文章中提到
③了解Kubernetes的基本知識 ← 在之前的文章中提到
④了解Kubernetes的资源 ← 在本篇文章中提到
(1)Workloads API类别 ← 在本篇文章中提到
(2)Service API类别 ← 将在另一篇文章中提到
(3)Config & Storage APIs类别 ← 将在另一篇文章中提到
(4)Cluster API类别 ← 将在另一篇文章中提到
(5)Metadata API类别 ← 将在另一篇文章中提到
⑤了解Kubernetes的架构 ← 将在另一篇文章中提到
⑥Kubernetes总结 ← 将在另一篇文章中提到
了解Kubernetes资源
工作量API分类
豆荚 jiá)
Kubernetes资源的最小单位是Pod。Pod内包含一个或多个容器。一个Pod拥有一个网络接口(NIC),当Pod内存在多个容器时,每个容器共享该网络接口。除非有特殊理由,推荐每个Pod只包含一个容器。
复制集合
ReplicaSet是用于部署多个Pod的资源。它会调度并在节点上部署根据ReplicaSet定义的容器数量来进行调度。即使发生节点故障导致该节点上的容器消失,ReplicaSet会自动在另一个节点上进行自动恢复,以确保容器数量与ReplicaSet定义一致。
部署
部署资源负责管理多个副本集。部署资源用于滚动升级。以下是部署资源将旧的副本集A的Pod逐步升级到新的副本集B的Pod的步骤:
1. 创建新的副本集B。
2. 增加副本集B上的Pod数量一个。
3. 减少副本集A上的Pod数量一个。
4. 重复步骤2和步骤3。
5. 保持副本集A的Pod数量为0。
守护进程集
使用DaemonSet可以在每个Node上均匀地部署一个Pod。无法像Replicaset那样指定Pod的数量,并且不会根据资源进行调度来安排容器的部署。它主要用于执行诸如datadog agent等度量代理的任务,以及执行类似fluentd的日志收集守护程序时等。
有状态副本集 (StatefulSet)
这是用于部署和管理数据库等有状态应用程序的资源。为了给工作负载赋予持久性,有一种机制可以保持相同的Pod名称。当创建新的Pod时,命名方式为[Pod名称]-[编号]。例如,web-0,web-1,web-2等。
工作
使用容器来执行一次性处理的资源。Job和ReplicaSet之间的主要区别在于,它们是否被设计为假定启动的Pod会停止。基本上,ReplicaSet中的Pod停止是意外错误。而对于Job的情况,期望Pod停止是正常结束。例如,“与特定服务器的rsync”或“上传到S3等对象存储”等。由于ReplicaSet等并不计算正常结束的数量,因此在批处理场景中,应积极使用Job。
示例答案:
定时任务
这是一种用于在预定的时间创建Job的资源,类似于Cron。
CronJob负责管理Job,而Job负责管理Pod,形成了三层父子关系。
请原谅我对这个项目没有兴趣。
本文是参考以下信息撰写的。
Kubernetes官方文件
《Kubernetes完全指南》第2版