k8s工作负载

本文深入介绍了Kubernetes中用于管理应用工作负载的各种控制器,包括Deployment(用于无状态应用,提供声明式更新)、ReplicaSet(维护指定数量的Pod副本)、DaemonSet(确保每个节点运行一个Pod)、Job(执行一次性任务)和CronJob(执行定时任务)。详细讲述了它们的工作原理、使用场景和创建方法。
摘要由CSDN通过智能技术生成

k8s工作负载型控制器

工作负载是在kubernetes上运行的应用程序。
无论你的负载是单一组件还是由多个一同工作的组件构成,在Kubernetes中你可以在一组Pods中运行它。在Kuberneres中,pod代表的是集群上处于运行状态的一组容器。

Kubernetes Pods有确定的生命周期。例如,当某Pod在你的集群中运行时,Pod运行所在的节点出现致命错误时,所有该节点上的Pods都会失败。Kubernetes将这类失败视为最终状态:即使该节点后来恢复正常运行,你也需要创建新的Pod来恢复应用。

不过,为了让用户的日子略微好过一点,你并不需要直接管理每个Pod。相反,你可以使用负载资源来替你管理一组Pods。这些资源配置控制器来确保合适类型的、处于运行状态的Pod个数是正确的,与你所指定的状态相一致。

常用的工作负载控制器:

  • Deployment:无状态应用部署

  • StatefulSet:有状态应用部署

  • DaemonSet:确保所有Node运行同一个Pod

  • Job:一次性任务

  • CronJob:定时任务
    控制器的作用:

  • 管理Pod对象

  • 使用标签与Pod关联

  • 控制器实现了Pod的运维,例如滚动更新、伸缩、副本管理、维护Pod状态等
    请添加图片描述

Deployment

一个Deployment为Pods和ReplicaSets提供声明式的更新能力。

你负责描述Deployment中的目标状态,而Deployment控制器以受控速率更改实际状态,使其变为期望状态。你可以定义Deployment以创建新的ReplicaSet,或删除现有Deployment,并通过新的Deployment收养其资源。

Deployment很适合用来管理你的集群上的无状态应用,Deployment中的所有pod都是相互等价的,并且在需要的时候被换掉。

  • 管理Pod和ReplicaSet
  • 具有上线部署、副本设定、滚动升级、回滚等功能
  • 提供声明式更新,例如只更新一个新的Image
    创建Deployment
[root@master kubenetres]# vim deploy.yml
[root@master kubenetres]# cat deploy.yml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy
  labels:
    app: nginx
spec: 
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template: 
    metadata: 
      labels:
        app: nginx
    spec: 
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

[root@master kubenetres]# kubectl apply -f deploy.yml 
deployment.apps/deploy created
[root@master kubenetres]# kubectl get pod
NAME                      READY   STATUS    RESTARTS      AGE
deploy-8d545c96d-6vmnd    1/1     Running   0             49s
deploy-8d545c96d-l4kx4    1/1     Running   0             49s
deploy-8d545c96d-nk25r    1/1     Running   0             49s      

在该例中:

  • 创建了名为deploy(由.metadata.name字段标明)的deployment
  • 该deployment创建三个(由replicas字段标明)pod副本
  • selector 字段定义 Deployment 如何查找要管理的 Pods。 在这里,你选择在 Pod 模板中定义的标签(app: nginx)。 不过,更复杂的选择规则是也可能的,只要 Pod 模板本身满足所给规则即可。
  • template字段包含以下子字段:
    • Pod 被使用 labels 字段打上 app: nginx 标签。
    • Pod 模板规约(即 .template.spec 字段)指示 Pods 运行一个 nginx 容器, 该容器运行版本为 1.14.2 的 nginx Docker Hub镜像。
    • 创建一个容器并使用 name<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值