一、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. 第二章 单表查询 T-SQL语言基础(3)

    单表查询(3) 2.6 处理字符数据 字符数据的查询处理,内容包括:类型,排序规则,运算符和函数,以及模式匹配. 2.6.1 数据类型 SQL Server支持两种字符数据类型----普通字符和Uni ...

  2. @RequestMapping-占位符映射

    占位符映射

  3. O008、LVM类型的Storage Pool

    参考https://www.cnblogs.com/CloudMan6/p/5277927.html   LVM类型的Storage Pool   不仅一个文件可以分配给客户机作为虚拟磁盘,宿主机上  ...

  4. PostMan测试Web Service

    1.设置URL 2.设置请求模式:Post 3.设置Header:添加 Content-Type ,值为 text/xml;charset=utf-8 4.设置Body:勾选raw 5.输入Body内 ...

  5. vue路由(基于VScode开发)

    index.js如果在router目录下,代表这个js文件只是路由使用 main.js中为全局,需要引入使用到的组件,一般vue中不用写东西vue中el挂载哪个就哪个组件为根目录,传值数据绑定的时候在 ...

  6. SpringBoot:spring boot使用Druid和监控配置

    Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能. Spring Boot默认的数据源是:org.apache.tomcat.jdbc.pool.DataSource 业 ...

  7. golang 方法

    方法: 在函数声明时,在其名字之前放上一个变量,即是一个方法.这个附加的参数会将该函数附 加到这种类型上,即相当于为这种类型定义了一个独占的方法. package main import " ...

  8. 华为服务器XH628配置软RAID

    1.       硬RAID 1.1.       配置准备 本机型号为华为XH628,配有两块400GSSD,12块1.2TSAS盘.其中2块SSD做RAID1为系统盘,12块SAS盘做RAID5, ...

  9. docker 安装 mxnet

    1.根据自己的需求安装mxnet:https://hub.docker.com/u/mxnet 2.拉取镜像: nvidia-docker pull mxnet/python:1.5.0_gpu_cu ...

  10. 牛客练习赛47 E DongDong数颜色 (树上启发式合并)

    链接:https://ac.nowcoder.com/acm/contest/904/E 来源:牛客网 DongDong数颜色 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 5242 ...