一、Pod控制器的类别

  • ReplicationController:早期唯一的控制器,已废弃

  • ReplicaSet:控制Pod满足用户期望副本;标签选择器选择由自己管理的Pod副本;Pod资源模板完成Pod资源的新建。主要用于管理无状态的Pod,不建议直接使用此控制器

  • Deployment:基于ReplicaSet控制器;建议使用此控制器,支持滚动更新和回滚,管理无状态应用

  • DaemonSet:守护进程类的控制器,例如每台node都启动一个Pod一直持续下去

  • Job:执行一次性的任务,完成后就退出,如果没有完成则重新构建一个Pod运行

  • Cronjob:周期性运行的任务

  • StatefulSet:管理有状态的应用,每个Pod都是单独管理

二、ReplicaSet控制器

  • kubectl explain rs:获取帮助手册
# cat rs-damo.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata: #ReplicaSet的metadata
name: myapp-rs
namespace: default
spec: #ReplicaSet的spec
replicas: 2
selector:
matchLabels: #标签选择器,用于控制器选择控制符合条件的pod
app: myapp
release: canary
template:
metadata:
name: myapp-pod #此处pod名会被控制器的名字代替
labels: #此处为Pod的标签,必须符合控制器的标签选择器定义的条件
app: myapp
release: canary
spec:
containers:
- name: myapp-container
image: dongfeimg/myapp:v1
ports:
- name: http
containerPort: 80
# kubectl get rs
# kubectl get pods
  • 扩容/缩容
# kubectl edit rs myapp-rs
spec:
replicas: 10 #将此值改
  • 升级/回滚
# kubectl edit rs myapp-rs
spec:
containers:
- image: dongfeimg/myapp:v2 #修改此值不能立即更新,原有pod删除后重建会升级到v2版本

三、Deployment控制器

  • kubectl explain deploy
# cat deploy-damo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deploy
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: myapp
release: canary
template:
metadata:
labels:
app: myapp
release: canary
spec:
containers:
- name: myapp-container
image: dongfeimg/myapp:v1
ports:
- name: http
containerPort: 80
# kubectl apply -f deploy-damo.yaml #声明式创建
# kubectl get deploy #deploy控制rs
# kubectl get rs #rs控制pod
# kubectl get pods
  • 使用修改清单文件的方式扩容、缩容、更新和回滚等操作
# vim deploy-damo.yaml
spec:
replicas: 3 #将副本扩容至3个
# kubectl apply -f deploy-damo.yaml # vim deploy-damo.yaml
spec:
containers:
- name: myapp-container
image: dongfeimg/myapp:v2 #将版本更新为v2
# kubectl apply -f deploy-damo.yaml
# kubectl rollout history deployment myapp-deploy #查看升级的历史信息
  • 使用kubectl patch的方式扩容、缩容、更新和回滚等操作
# kubectl patch deployment myapp-deploy -p '{"spec":{"replicas":5}}'  #传入json格式的数组来实现扩容
# kubectl patch deployment myapp-deploy -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":1,"maxUnavailable":0}}}}' #"maxSurge":1 最大在更新pod数,"maxUnavailable":0 允许最大不可用的pod
# kubectl describe deployment myapp-deploy |grep RollingUpdateStrategy #验证
  • kubectl set image和kubectl rollout pause
# kubectl set image deployment myapp-deploy myapp-container=dongfeimg/myapp:v3 \  #将容器版本更新至v3
&& kubectl rollout pause deployment myapp-deploy #在更新第一个的时候暂停,金丝雀发布
# kubectl rollout resume deployment myapp-deploy #继续此前的更新
  • kubectl rollout undo:回滚
# kubectl rollout history deployment myapp-deploy
# kubectl rollout undo deployment myapp-deploy --to-revision=1 #回滚至v1

四、DaemonSet控制器

  • 在集群中符合选择器的node上一个pod,例如在每个节点上运行一个filebeat来收集日志
  • kubectl explain ds
# cat ds-damo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: redis
role: logstor
template:
metadata:
labels:
app: redis
role: logstor
spec:
containers:
- name: redis
image: redis:4.0
ports:
- name: redis
containerPort: 6379
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: filebeat-ds
namespace: default
spec:
selector:
matchLabels:
app: filebeat
release: stable
template:
metadata:
labels:
app: filebeat
release: stable
spec:
containers:
- name: filebeat-container
image: dongfeimg/filebeat:5.6.5-alpine
env:
- name: REDIS_HOST
value: redis.default.svc.cluster.local #redis-server的主机名(svc)
- name: REDIS_LOG_LEVEL
value: info
# kubectl expose deployment redis --port=6379

6、kubernetes资源清单之Pod控制器190714的更多相关文章

  1. kubernetes资源清单之pod

    什么是pod? Pod是一组一个或多个容器(例如Docker容器),具有共享的存储/网络,以及有关如何运行这些容器的规范. Pod的内容始终位于同一地点,并在同一时间安排,并在共享上下文中运行. Po ...

  2. 5、kubernetes资源清单之Pod应用190709

    一.Pod镜像及端口 获取帮助文档 # kubectl explain pod.spec.containers spec.containers <[]object> pod.spec.co ...

  3. Kubernetes中资源清单与Pod的生命周期(二)

    一.资源清单 1,定义: 在k8s中一般使用yaml格式的文件来创建符合我们预期的资源,这样的yaml被称为资源清单. 使用资源清单创建Pod: kubectl apply -f nginx.yaml ...

  4. kubernetes 资源清单定义入门

    k8s中的资源 什么叫资源? k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象 在k8s中有哪些资源? 工作负载型资源(workload): Pod ReplicaSet Deploymen ...

  5. Kubernetes 学习5 kubernetes资源清单定义入门

    一.kubernetes是有一个restful风格的 API,把各种操作对象都一律当做资源来管理.并且可通过标准的HTTP请求的方法 GET,PUT,DELETE,POST,等方法来完成操作,不过是通 ...

  6. kubernetes系列06—kubernetes资源清单定义入门

    本文收录在容器技术学习系列文章总目录 1.认识kubernetes资源 1.1 常用资源/对象 workload工作负载型资源:pod,ReplicaSet,Deployment,StatefulSe ...

  7. 【04】Kubernets:资源清单(pod)

    写在前面的话 前面我们提到过,纯手敲 K8S 名称管理 K8S 服务只是作为我们了解 K8S 的一种方案,而我们最终管理 K8S 的方法还是通过接下来的资源清单的方式进行管理. 所以从本章节开始,将会 ...

  8. (四)Kubernetes 资源清单定义

    Kubernetes常用资源对象 依据资源的主要功能作为分类标准,Kubernetes的API对象大体可分为五个类别,如下: 类型 名称 工作负载(Workload) Pod.ReplicaSet.D ...

  9. 4、kubernetes资源清单快速入门190625

    一.资源清单概念 资源/对象的类型 工作负载型资源:Pod, ReplicaSet, Deployment, StatefulSet, DaemonSet, Job, Cronjob, ... 服务发 ...

随机推荐

  1. python 装饰器,生成器,迭代器

    装饰器 作用:当我们想要增强原来已有函数的功能,但不想(无法)修改原函数,可以使用装饰器解决 使用: 先写一个装饰器,就是一个函数,该函数接受一个函数作为参数,返回一个闭包,而且闭包中执行传递进来的函 ...

  2. MySQL之数据库优化

    Mysql数据库的优化技术 对mysql优化是一个综合性的技术,主要包括 •表的设计合理化(符合3NF) •添加适当索引(index) [四种: 普通索引.主键索引.唯一索引unique.全文索引] ...

  3. 查看jar包依赖树

    在eclipse执行如下命令: 可以在控制台上查看层级依赖关系

  4. SQL SERVER 2012安装配置说明(多图详解)

    1. 优先安装软件 1. net framework3.5. 2. 在安装SQL SERVER 2012前需要3.5的支持.在WIN 2012系统可以在系统管理的添加角色和功能中安装,如下将[.NET ...

  5. PAT Basic 1003 我要通过! (20 分)

    “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: ...

  6. 阿里云(ecs服务器)使用3-安装mysql数据库以及远程部署

    1.安装 1.下载rpm包,下载地址 http://dev.mysql.com/downloads/mysql/,选择Linux-Generic版本 .新建 /usr/local/mysql 文件夹, ...

  7. 第07课:【实战】调试Redis准备工作

    7.1 Redis源码下载与编译 Redis源码下载与编译在前面已经说过了,同学们可以去第04课:GDB常用命令详解(上)学习. 编译成功后,会在src目录下生成多个可执行程序,其中redis-ser ...

  8. zabbix的简单操作(proxy代理分布式监控)

    分布式监控 作用:分担压力,减轻负载,多机房监控 通过zabbix proxy的搭建,zabbix server可以远程从proxy获取到数据,这里的环境相当于zabbix server具有一个公网i ...

  9. JS 转Boolean的两张方法

    // 1.Boolean() console.log(Boolean(123)); // true console.log(Boolean(undefined)); // false console. ...

  10. BZOJ1306 [CQOI2009]match循环赛/BZOJ3139 [Hnoi2013]比赛[dfs剪枝+细节题]

    地址 看数据范围很明显的搜索题,暴力dfs是枚举按顺序每一场比赛的胜败情况到底,合法就累计.$O(3^{n*(n-1)/2})$.n到10的时候比较大,考虑剪枝. 本人比较菜所以关键性的剪枝没想出来, ...