K8S之控制器类型

本文介绍了Kubernetes中的控制器,包括Deployment、StatefulSet、DaemonSet、Job和CronJob。Deployment用于无状态服务的管理,支持滚动更新和版本回滚;StatefulSet适用于有状态应用,确保持久化存储和有序部署;DaemonSet确保每个Node上运行一个Pod;Job处理一次性任务,CronJob则管理周期性任务。
摘要由CSDN通过智能技术生成

K8S之控制器类型

什么是控制器

Kubernetes 中内建了很多 controller(控制器),这些相当于一个状态机,用来控制 Pod 的具体状态和行为

常见的控制类型

Pod控制器:又称之为工作负载,由master的kube-contriller-manager组件提供,常见的有:

  • ReplicationController
  • ReplicaSet
  • Deployment
  • Statefulset
  • Daemonset
  • Job
  • Cronjob

Pod对象的管理通常是有某种控制器的特定对象来实现的,包括其创建、删除及重新调度等。

有状态、无状态服务区别

在k8s中首先应该搞清楚什么是有状态服务?什么是无状态服务?搞清楚这一点,才能仔细体会到控制器之间的区别

无状态:

  • deployment 认为所有的pod都是一样的
  • 不用考虑顺序的要求
  • 不用考虑在哪个node节点上运行
  • 可以随意扩容和缩容

有状态:

  • 实例之间有差别,每个实例都有自己的独特性,元数据不同,例如etcd
  • 实例之间不对等的关系,以及依靠外部存储的应用

Deployment控制器

Deployment控制器和ReplicationController控制器以及ReplicaSet控制器都有很深的联系

ReplicationController(RC):维持集群pod的期望值,有伸缩功能,RC的标签和Pod模板标签必须一一对应

ReplicaSet(RS):RS和RC基本相同,区别在于RS有label selector功能,RS 支持集合式的 selector

Deployment:Deployment是通过管理RS的方式对pod来进行管理的

Deployment 为 Pod 和 ReplicaSet 提供了一个声明式定义(declarative)方法,用来替代以前的RC方便的管理应用。

在k8s中死亡的容器,会自动回收,不需要手动删除

注意:如果创建pod时不指定控制器类型,默认是deployment

定义方式:

声明式定义:可以实时更改命令的执行状态,改变命令的执行方式和结果(在命令或任务的执行过程中随时根据指令进行调整)

apply命令就是专门为声明式开发的命令

kubectl apply -f  a.yaml  # 声明式创建,能够后期更改,对于使用是特别方便的

举例;

[root@master ~]#kubectl apply -f a.yaml  # 使用声明式创建deployment类型的控制器
[root@master ~]#vim a.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx-1  # 修改了一下nginx容器的名称
        image: 10.0.0.136:9090/library/nginx:v1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值