博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
k8s之pod管理(控制器)
阅读量:4160 次
发布时间:2019-05-26

本文共 4068 字,大约阅读时间需要 13 分钟。

参考网站:

在这里插入图片描述

1 Pod 的分类

  • 自主式 Pod:Pod 退出后不会被创建
  • 控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目

2 控制器类型

  • Replication Controller和ReplicaSet
  • Deployment
  • DaemonSet
  • StatefulSet
  • Job
  • CronJob
  • HPA全称Horizontal Pod Autoscaler

3 Replication Controller和ReplicaSet

  • ReplicaSet 是下一代的 Replication Controller,官方推荐使用ReplicaSet。
  • ReplicaSet 和 Replication Controller 的唯一区别是选择器的支持,ReplicaSet 支持新的基于集合的选择器需求。
  • ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行。
  • 虽然 ReplicaSets 可以独立使用,但今天它主要被Deployments 用作协调 Pod 创建、删除和更新的机制。

ReplicaSet控制器示例

[root@server2 ~]# vim rs.yml apiVersion: apps/v1kind: ReplicaSetmetadata:   name: replicaset-examplespec:  replicas: 3  selector:    matchLabels:      app: nginx  template:    metadata:      labels:        app: nginx    spec:      containers:      - name: nginx        image: myapp:v1

创建了3个rs控制器

在这里插入图片描述

4 Deployment

Deployment 为 Pod 和 ReplicaSet 提供了一个申明式的定义方法。

典型的应用场景:

  • 用来创建Pod和ReplicaSet
  • 滚动更新和回滚
  • 扩容和缩容
  • 暂停与恢复

Deployment控制器示例

[root@server2 ~]# vim dm.yml apiVersion: apps/v1kind: Deploymentmetadata:  name: deployment-nginxspec:  replicas: 3  selector:    matchLabels:      app: nginx  template:    metadata:      labels:        app: nginx    spec:      containers:      - name: nginx        image: myapp:v1
[root@server2 ~]# kubectl apply -f dm.yml[root@server2 ~]# kubectl get pod

在这里插入图片描述

根据标签控制,始终要满足三个副本

kubectl get pod --show-labelskubectl label pod deployment-6d4f5bf58f-mbswv app=myapp --overwrite

在这里插入图片描述

由原来的三个变成了四个,由于原来的标签被改变,为了满足三个副本,又重新创建了一个副本。其中myapp标签的不属于控制器控制的副本。
在这里插入图片描述

5 DaemonSet

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

DaemonSet 的典型用法:

  • 在每个节点上运行集群存储 DaemonSet,例如 glusterd、ceph。
  • 在每个节点上运行日志收集 DaemonSet,例如 fluentd、logstash。
  • 在每个节点上运行监控 DaemonSet,例如 Prometheus Node Exporter、zabbix agent等

一个简单的用法是在所有的节点上都启动一个 DaemonSet,将被作为每种类型的 daemon 使用。

一个稍微复杂的用法是单独对每种 daemon 类型使用多个 DaemonSet,但具有不同的标志, 并且对不同硬件类型具有不同的内存、CPU 要求。

手动拉取zabbix-agent镜像并上传到自己的私有仓库

[root@server1 harbor]# docker pull zabbix/zabbix-agent[root@server1 harbor]# docker tag zabbix/zabbix-agent:latest reg.westos.org/library/zabbix-agent:latest[root@server1 harbor]# docker push reg.westos.org/library/zabbix-agent:latest
[root@server2 ~]# vim daemonset.ymlapiVersion: apps/v1kind: DaemonSetmetadata:  name: daemonset-example  labels:    k8s-app: zabbix-agentspec:  selector:    matchLabels:      name: zabbix-agent  template:    metadata:      labels:        name: zabbix-agent    spec:      containers:      - name: zabbix-agent        image: zabbix-agent
[root@server2 ~]# kubectl apply -f daemonset.yml daemonset.apps/daemonset-example created[root@server2 ~]# kubectl get pod -o wide

在这里插入图片描述

6 StatefulSet

StatefulSet 是用来管理有状态应用的工作负载 API 对象。实例之间有不对等关系,以及实例对外部数据有依赖关系的应用,称为“有状态应用”

StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提供序号和唯一性保证

StatefulSets 对于需要满足以下一个或多个需求的应用程序很有价值:

  • 稳定的、唯一的网络标识符。
  • 稳定的、持久的存储。
  • 有序的、优雅的部署和缩放。
  • 有序的、自动的滚动更新。

7 Job

执行批处理任务,仅执行一次任务,保证任务的一个或多个Pod成功结束。

手动拉取perl圆周率镜像,然后上传至本地仓库

[root@server1 harbor]# docker pull perl[root@server1 harbor]# docker tag perl:latest reg.westos.org/library/perl:latest[root@server1 harbor]# docker push reg.westos.org/library/perl:latest

编写yml文件

[root@server2 ~]# vim job.ymlapiVersion: batch/v1kind: Jobmetadata:  name: pispec:  template:    spec:      containers:      - name: pi        image: perl        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]      restartPolicy: Never  backoffLimit: 4

执行

[root@server2 ~]# kubectl create -f job.yml [root@server2 ~]# kubectl get pod[root@server2 ~]# kubectl logs pi-fj6v5

在这里插入图片描述

8 CronJob

Cron Job 创建基于时间调度的 Jobs。

一个 CronJob 对象就像 crontab (cron table) 文件中的一行,它用 Cron 格式进行编写,并周期性地在给定的调度时间执行 Job。

[root@server2 ~]# vim cronjob.yml apiVersion: batch/v1beta1kind: CronJobmetadata:  name: hellospec:  schedule: "*/1 * * * *"  jobTemplate:    spec:      template:        spec:          containers:          - name: hello            image: busyboxplus            imagePullPolicy: IfNotPresent            args:            - /bin/sh            - -c            - date; echo Hello from the Kubernetes cluster          restartPolicy: OnFailure

在这里插入图片描述

9 HPA

根据资源利用率自动调整service中Pod数量,实现Pod水平自动缩放。

转载地址:http://ahjxi.baihongyu.com/

你可能感兴趣的文章
checkio-house password
查看>>
checkio-moore neighbourhood
查看>>
checkio-the most wanted letter
查看>>
Redis可视化工具
查看>>
大牛手把手带你!2021新一波程序员跳槽季,全套教学资料
查看>>
Guava Collections API学习之AbstractMapBasedMultimap
查看>>
jQuery1.9(动画效果)学习之——.queue()
查看>>
HTML5学习之——概念篇
查看>>
HTML5学习之——HTML 5 视频
查看>>
HTML5学习之——HTML 5 Video + DOM
查看>>
HTML5学习之——HTML 5 音频
查看>>
HTML5学习之——HTML 5 拖放
查看>>
HTML5学习之——HTML 5 Canvas vs. SVG
查看>>
HTML5学习之——HTML 5 应用程序缓存
查看>>
HTML5学习之——HTML 5 Web Workers
查看>>
HTML5学习之——HTML 5 Canvas
查看>>
HTML5学习之——HTML5 内联 SVG
查看>>
HTML5学习之——HTML 5 服务器发送事件
查看>>
SVG学习之——HTML 页面中的 SVG
查看>>
SVG 形状学习之——SVG 矩形<rect>
查看>>