Kubernetes中Pod管理对象
pod的管理主要有RC(RS)、Deployment、StatefulSet、DaemonSet和Job(CronJob)等
Replication Controller
Replication Controller简称RC,简单来说,RC可以保证在任意时间运行Pod的副本数量,能够保证Pod总是可用的。总维持pod是指定的副本数量运行。
Replication Set
Replication Set简称RS,随着Kubernetes的发展,RS在RC的基础上做了一些扩展,官方已经推荐使用RS和Deployment来代替RC了。
apiVersion: v1
kind: ReplicationController/Replication Set
metadata:
name: rc-test
labels:
name: rc
spec:
replicas: 3
selector:
name: rc
...................................
Deployment
主要职责和RC一样的都是保证Pod的数量和健康,二者大部分功能都是完全一致的,可以看成是一个升级版的RC控制器。比如一些官方组件kube-dns、kube-proxy也都是使用的Deployment来管理的.
新特性如下:
RS的全部功能:Deployment具备上面描述的RC的全部功能
事件和状态查看:可以查看Deployment的升级详细进度和状态
回滚:当升级Pod的时候如果出现问题,可以使用回滚操作回滚到之前的任一版本
版本记录:每一次对Deployment的操作,都能够保存下来,这也是保证可以回滚到任一版本的基础
暂停和启动:对于每一次升级都能够随时暂停和启动
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: test
labels:
k8s-app: test
spec:
replicas: 3
template:
metadata:
labels:
app: mysql
....................................
DaemonSet
DaemonSet适用于在每个Node都需要运行一个Pod的时候使用,比如:每一个Node上运行一个日志采集、性能监控的Pod,可以通过DaemonSet来实现
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-ds-test
spec:
selector:
matchLabels:
name: node-ds-test
template:
metadata:
labels:
...........................
StatefulSet
StatefulSet是Kubernetes提供的管理有状态应用的负载管理控制器API。在Pods管理的基础上,保证Pods的顺序和一致性。与Deployment一样,StatefulSet也是使用容器的Spec来创建Pod,与之不同StatefulSet创建的Pods在生命周期中会保持持久的标记
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
serviceName: "nginx"
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
...........................
Job/CronJob
K8S中,通常用Job来创建一个任务,注意job是执行一个的任务。如需要任务定时周期的去执行。CronJob就出场了,CronJob其实就是在Job的基础上加上了任务调度。
apiVersion: batch/v1
kind: Job/CronJob
metadata:
name: job-test
spec:
template:
metadata:
name: job-test
spec:
restartPolicy: Never
......................
上面是K8S的pod管理的简单介绍:详情请参照:https://kubernetes.io/zh/docs/home/