深入浅出 Kubernetes:浅谈 Deployment 和 ReplicaSet
深入浅出 Kubernetes:浅谈 Deployment 和 ReplicaSet
一 背景
Deployment 和 ReplicaSet 是 Kubernetes 中两个比较重要的对象,本文简单地讨论了他们之间的一些区别与联系。
二 Deployment
apiVersion: apps/v1 kind: Deployment metadata: name: deployment-gysl spec: replicas: 2 selector: matchLabels: app-1: nginx app-2: busybox template: metadata: labels: app-1: nginx app-2: busybox spec: containers: - name: app-1 image: nginx:1.16.0 imagePullPolicy: Always ports: - containerPort: 80 - containerPort: 8080 - name: app-2 image: busybox imagePullPolicy: Never command: ['/bin/sh', '-c'] args: - while :;do sleep 20;done
这是一个编排得非常简单的 Deployment,确保携带 app-1=nginx 和 app-2=busybox 标签的 Pod 的个数等于 spec.replicas 指定的总数 2 个。也就是说在这个 Deployment 的 Pod 数量大等于2时,就会有 Pod 被删除,反之则会有 Pod 被创建。
这个 Deployment 由2个部分构成,例子中的 yaml 第1-10行定义了 Deployment 控制器,第10行以后的内容则定义了被控制的 Pod ,template 后面这一部分我们会发现跟之前的 Pod 定义大同小异。
此处顺便提一条命令(更新 Deployment 的镜像):
kubectl set image deployment/deployment-gysl app-1=nginx:latest
这个命令还可以更新以下对象:
env Update environment variables on a pod template image 更新一个 pod template 的镜像 resources 在对象的 pod templates 上更新资源的 requests/limits selector 设置 resource 的 selector serviceaccount Update ServiceAccount of a resource subject Update User, Group or ServiceAccount in a RoleBinding/ClusterRoleBinding
三 ReplicaSet
apiVersion: apps/v1 kind: ReplicaSet metadata: name: replica-set-gysl spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: nginx:latest
一个 ReplicaSet 对象就是由副本数目的定义和一个 Pod 模板组成的, 它的定义就是 Deployment 的一个子集。Deployment 控制器实际操纵的是 ReplicaSet 对象,而不是 Pod 对象。
ReplicaSet 负责通过“控制器模式”,保证系统中 Pod 的个数永远等于指定的个数(比如,3 个)。这也正是 Deployment 只允许容器的 restartPolicy=Always 的主要原因:只有在容器能保证自己始终是 Running 状态的前提下,ReplicaSet 调整 Pod 的个数才有意义。
Deployment 通过“控制器模式”,来操作 ReplicaSet 的个数和属性,进而实现“水平扩展 / 收缩”和“滚动更新”这两个编排动作。
四 其他
在之前的文章中已经讨论过 Kubernetes 中的滚动更新,这是 Deployment 控制器与 ReplicaSet 的最大不同之处,也是 Deployment 被广泛使用的最主要原因。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
交易平台钱包管理服务原理与实现代码
交易所钱包服务是加密货币交易所系统中的重要组成部分,它负责与各种不同的区块链的交互,实现用户地址生成、充值与提现等功能。本文以对接以太坊区块链的钱包服务为例,介绍交易所系统平台中钱包管理服务的设计与实现。 交易所系统中钱包服务是一个非常重要的组件,它的主要功能包括: 生成以太坊充值地址 当监听地址发生新交易时获取通知 广播签名交易 处理ERC20代币的充值 在区块链中部署新的合约并操作合约方法 如果希望快速掌握区块链应用的开发,推荐汇智网的区块链应用开发系列教程, 内容涵盖比特币、以太坊、eos、超级账本fabric和tendermint等多种区块链,以及 java、go、nodejs、python、php、dart等多种开发语言。 1、开发与运行环境概述 在我们继续之前,首先要满足以下环境要求: Docker: Docker已经成为新应用开发的必备工具,它使得应用的构建、分享与部署都极其简单。 Docker Compose:我们使用Docker Compose来管理所有的服务,以便轻松地进行扩展。 其他的需求都由Docker镜像来满足,我们不需要安装其他任何东西了,只需要写一个简单的...
- 下一篇
阿里云最新优惠活动汇总------适合新老客户企业级的选择
最近阿里云又出了活动,很多朋友都给我说这么多活动都不知道哪个活动有哪些优惠了,今天就给大家整理下阿里云最新的优惠活动,需要的朋友还请收藏关注下,该活动汇总会实时跟进的,让大家优惠上云。 阿里云2000元代金券条件:仅限新用户领取 云上爆款!条件:新老用户均可参与,新用户更优惠时间:2019年7月1日至2020年3月31日3年最优惠 8月主机爆款限量抢 限时2折 全网云主机爆款特惠,新用户限时享低至2折优惠 Hi拼团条件:新老用户均可开团,爆款产品低至2折,每人限购1台,手慢无!时间:2019年5月14日至2020年3月31日TIM_20190802110909 企业级云服务器4折特惠条件:限首次购买ECS用户参与,限购1单,限购3台时间:长期图片价格为3年的价格 全民云计算条件:实名认证 后新老用户首次购买ECS,均可享受1-3年价格优惠,每人限购1单,限量3台时间:长期2年与3年时间价格相同 88物联网狂欢节热门物联网软硬一体应用,下单返现2019年8月8日至2019年8月18日 阿里云新用户云通信专享8折 爆款短信套餐包产品仅0.032元/条
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,CentOS7官方镜像安装Oracle11G
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)