Deployment详解
Deployment详解
RC & RS
ReplicationController (复制控制器,RC)和ReplicaSet(复制集,RS)是两种简单部署pod的方式,因为在生产环境中,主要使用更高级的Deployment等方式部署、运行、管理pod,所以本节只对RC和RS部署进行简单介绍
**Deployment 管理Rs/RS 管理 Pod **
ReplicaSet
ReplicaSet是支持基于集合的标签选择器的下一代Replication Controller,它主要用作Deployment协调创建、删除和更新Pod,和Replication Controller唯一的区别是,ReplicaSet支持标签选择器。在实际应用中,虽然ReplicaSet可以单独使用,但是一般建议使用Deployment来自动管理ReplicaSet,除非自定义的Pod不需要更新或有其他编排等。
Replication Controller和ReplicaSet的创建删除和Pod并无太大区别,Replication Controller目前几乎已经不在生产环境中使用,ReplicaSet也很少单独被使用,都是使用更高级的资源Deployment、DaemonSet、StatefulSet进行管理Pod。
Deployment
Deployment概念:用于部署无状态的服务,这个最常用的控制器。一般用于管理维护企业内部无状态的微服务,比如configserver、zuul、springboot。他可以管理多个副本的Pod实现无缝迁移、自动扩容缩容、自动灾难恢复、一键回滚等功能。
虽然ReplicaSet可以确保在任何给定时间运行的Pod副本达到指定的数量,但是Deployment(部署)是一个更高级的概念,它管理ReplicaSet并为Pod和ReplicaSet提供声明性更新以及许多其他有用的功能,所以建议在实际使用中,使用Deployment代替ReplicaSet。
如果在Deployment对象中描述了所需的状态,Deployment控制器就会以可控制的速率将实际状态更改为期望状态。也可以在Deployment中创建新的ReplicaSet,或者删除现有的Deployment并使用新的Deployment部署所用的资源。
Deployment命令
kubectl get deployment #查看Deployment下Pod
kubectl create deployment nginx --image=nginx:1.19.0 --replicas=4
# 创建deployment pod
--replicas=4 #就是副本,4个副本
直接vim dc-nginx.yaml文件apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec :- name: nginximage: nginx:1.19.0ports:- containerPort: 80示例解析:
kind: Deployment 类型 deploymnt
nginx-deployment:Deployment的名称。
replicas: 创建Pod的副本数。
selector:定义Deployment如何找到要管理的Pod,与template的label(标签)对应。
template字段包含以下字段:
app: nginx使用label(标签)标记Pod
spec:表示Pod运行一个名字为nginx的容器。
image:运行此Pod使用的镜像
Port:容器用于发送和接收流量的端口
运行 deployment.yaml文件
kubectl create -f dc-nginx.yaml
也可以直接修改deployment,让yaml文件直接生效
kubectl edit deployment nginx-deployment #按SHIFT加ZZ退出
kubectl get deployment -o wide #更加详细的查看 deployment
NAME:集群中Deployment的名称。
READY: Pod的状态,已经ready的Pod个数,前边的1是准备好的pod数量,后边1是deployment中配置的pod副本数。
UP-TO-DATE:显示已达到期望状态的被更新的副本数。
AVAILABLE:显示用户可以使用的应用程序副本数,当前为1,因为部分Pod仍在创建过程中。
AGE:显示应用程序运行的时间。
CONTAINERS: 容器的名称
IMAGES: 镜像名称
SELECTOR: 管理的pod标签
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nQYAbzrz-1634901461639)(C:\Users\yyc\AppData\Roaming\Typora\typora-user-images\image-20210926180835599.png)]
更新 Doployment pod
一般对应用程序升级或者版本迭代时,会通过Deployment对Pod进行滚动更新。
当然也可以直接编辑Deployment,效果相同: 回滚也可以
kubectl edit deployment nginx-deployment
kubectl set image deployment nginx-deployment nginx=nginx:1.20.0 --record
--record # 保留更新的历史纪录
回滚 Doploymentpod
当新版本不稳定时,可以对其进行回滚操作,默认情况下,所有Deployment的rollout历史都保留在系统中,可以随时回滚。
kubectl rollout history deployment nginx-deployment #查看部署历史kubectl rollout undo deployment nginx-deployment --to-revision=1 #回滚--to-revision=1 # 使用--to-revision参数回到指定版本:
扩展Deployment pod
当公司访问量变大,三个Pod已无法支撑业务时,可以对其进行扩展。
扩容 kubectl scale deployment nginx --replicas=5--replicas=5 #副本数
缩容 kubectl scale deployment nginx --replicas=3
暂停和恢复Deployment pod 更新
Deployment支持暂停更新,用于对Deployment进行多次修改操作。
暂停更新 kubectl rollout pause deployment nginx-deployment恢复更新kubectl rollout resume deployment nginx-deployment暂停更新期间 对deployment 修改或更新等回复更新后继续执行。
Deployment 更新策略
清理策略
在默认情况下,revision保留10个旧的ReplicaSet,其余的将在后台进行垃圾回收,可以在.spec.revisionHistoryLimit设置保留ReplicaSet的个数。当设置为0时,不保留历史记录。
更新策略
.spec.strategy.type==Recreate,表示重建,先删掉旧的Pod再创建新的Pod。strategy: #Recreate: #maxSurge: 25% #maxUnavailable: 25% type: Recreate.spec.strategy.type==RollingUpdate,表示滚动更新,可以指定maxUnavailable和maxSurge来控制滚动更新过程。 .spec.strategy.rollingUpdate.maxUnavailable,指定在回滚更新时最大不可用的Pod数量,可选字段,默认为25%,可以设置为数字或百分比,如果maxSurge为0,则该值不能为0。 .spec.strategy.rollingUpdate.maxSurge可以超过期望值的最大Pod数,可选字段,默认为25%,可以设置成数字或百分比,如果maxUnavailable为0,则该值不能为0maxUnavailable 滚动更新期间最大多少个pod不可用maxSurge 一次可次超出期望值多少个pod
dnsPoilcy 策略
None(无策略)
清除 Pod 预设 DNS 配置,当 dnsPolicy 设置成为这个值之后, kubernetes 不会为 Pod 预先加载任何逻辑用于判定得到 DNS 的配置
默认预设 (Default)
Pod 里面的 DNS 配置继承了宿主机上的 DNS 配置。即,该 Pod 的 DNS 配置与宿主机完全一致。
集群优先 (ClusterFirst)
与 Default 相反,会预先使用 kube-dns (或 CoreDNS ) 的信息当预设置参数写入到该 Pod 内的DNS配置。如设置了 hostNetwork = true 时,ClusterFirst 会被强制转化为 Default
ClusterFirstWithHostNet (宿主机与 Kubernetes 共存 )
集群 DNS 优先,并伴随着使用宿主机网络
扩展
单词 Deployment 部署
Deployment详解相关推荐
- K8S控制器之Deployment详解及配置。
目录: 一,引入Deployment 二,Deployment支持的功能 三,Deployment资源清单文件详解 四,滚动更新及回滚实验 五,弹性伸缩实验 一,引入Deployment 对于kube ...
- Kubernetes(15):Pod控制器ReplicaSet和Deployment详解
文章目录 前言 第一节 Pod控制器 第二节 ReplicaSet(RS) 1. 概念和资源清单 2. 创建ReplicaSet 3. 扩缩容 3.1 方法一:直接编辑rs 3.2方法二 :命令扩缩容 ...
- k8s之Deployment详解
一.官方介绍 Deployments | Kubernetes Deployment为Pod和Replica Set提供声明式更新. 你只需要在 Deployment 中描述您想要的目标状态是什么,D ...
- K8S系列(四)Deployment 详解
背景 如果我们直接管理集群中所有的 Pod,应用 A.B.C 的 Pod,其实是散乱地分布在集群中.,现在有以下的问题: 首先,如何保证集群内可用 Pod 的数量?也就是说我们应用 A 四个 Pod ...
- Kubernetes K8S之资源控制器Job和CronJob详解
Kubernetes的资源控制器Job和CronJob详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2 ...
- Kubernetes K8S之资源控制器Daemonset详解
Kubernetes的资源控制器Daemonset详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C/ ...
- kubernetes运行应用2之DaemonSet详解
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- 容器编排技术 -- Kubernetes kubectl create deployment 命令详解
容器编排技术 -- Kubernetes kubectl create deployment 命令详解 1 kubectl create deployment 2 语法 3 示例 4 Flags ku ...
- k8s nodeport无法访问_k8s学习之service详解
1.概述 通过Deployment来创建一组Pod来提供具有高可用性的服务.每个Pod都会分配一个单独的Pod IP,却存在如下两问题: 1.pod ip仅仅集群内部可见的虚拟IP,外部无法访问 2. ...
最新文章
- 【转/TCP协议编程】 基于TCP的Socket 编程
- 首页优化加载(聊聊百度移动端首页前端优化)
- web前后台数据交互
- c语言排序系统代码怎么写,排序概述(c语言)(示例代码)
- 牛客题霸 [ 最长回文子串] C++题解/答案
- win10系统怎么写java_win10系统制作java文本的操作方法
- 每日英语:Is austerity good for your health?
- 信息安全系统设计基础实验三
- 音视频开发音频处理技术
- 湖北校园天翼飞young使用路由器上网
- PMP证书考试攻略:项目管理考试技巧篇(名师分享PPT)
- Spring JtaTransactionManager事务管理
- SVM + HOG实现图像分类
- 经济基础知识(中级)【6】
- 应用宝上架审核要求_腾讯应用宝开发者福利!2小时内审核
- Python实现的双目相机标定系统
- 大恒相机-水星(MERCURY)系列 | 软件启动
- 1202 -- 童年生活二三事
- 如何做好网站优化推广
- R包bs4Dash控件效果对照图
热门文章
- vector 作为dll 接口参数_DLL中传递STL参数,vector对象作为dll参数传递等问题(转)...
- go语言支持继承吗_Go语言的结构体嵌入为什么不算继承?
- ilm 和dlm差异_电力通信系统--加密芯片.pdf
- 查看linux中的sh指向哪,什么是Linux的Shell脚本和怎么执行脚本?
- Spring MVC中处理Request和Response的策略
- 皮一皮:不能太自信。。。
- 一个关于hashCode的追问!
- 皮一皮:这不叫分手...叫裁员...
- 如何用 Java 实现简单的区块链
- Spring 中策略模式的 2 个经典应用