Kubernetes 笔记 08 Deployment 副本管理 重新招一个员工来填坑
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。
Hi,大家好,欢迎大家和我一起学习 K8S。
Deployment 是 K8S v1.2 引入的概念,与之一起引入还有 ReplicaSet。这两个概念是等同的,准确说是 Deployment 内部调用 ReplicaSet 来实现。
之前这个概念是由 Replication Controller 来实现的,但由于和 K8S 代码中的模块重名,所以就改成 Deployment + ReplicaSet 的组合。
Deployment 实现了 Pod 的副本管理,使得应用的表现形态和用户期望的状态保持一致。比如用户期望应用部署为 3 副本,如果在运行过程中有一个副本挂了,那么 Deployment 会自动拉起一个副本。
Deployment 对于应用的编排、自动扩容和缩容、升级回滚等功能都是至关重要的。
下面我们通过一个例子来看看 Deployment 是如何工作的。
定义一个 nginx.yaml
文件(对 yaml 文件不熟悉的可以查阅这篇文章):
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
template:
metadata:
labels:
app: web-server
spec:
containers:
- name: nginx
image: nginx:1.12.1
ports:
- containerPort: 80
这个文件定义了一个 nginx 容器应用,两个 Pod 副本。也就是每个 Pod 中会跑一个 nginx 应用。
执行kubectl create -f nginx.yaml
创建 Deployment 对象,在执行 kubectl get deploy
查看创建的 Deployment。
可以看到,其中两个参数 desired
(期待副本数)和 current
(当前副本数)都为 2,保持一致,我们再执行 kubectl get pod -o wide
查看当前 Pod 的情况:
可以看到,创建了两个 Pod 自动调度到了 Node1 和 Node2 上。这说明每个 Pod 副本是由 Deployment 统一创建并维护的。
为了一探究竟,我们继续深挖 Deployment。
执行 kubectl describe deployment nginx-deployment
查看该 Deployment 的详细信息。
图中圈住的地方告诉我们,这里创建了一个 ReplicaSet,也就是说 Deployment 内部是调用 ReplicaSet 来完成 Pod 副本的创建的。是否是这样,我们继续验证。
执行 kubeclt get replicaset
显示创建的 ReplicaSet 对象:
可以看到这里的 ReplicaSet 名称和上面 Deployment 信息里显示的是一样的,同样,执行 kubectl describe replicaset xxx
显示该 ReplicaSet 的详细信息。
图中,有两处地方值得注意。一处是 Controlled By
,表明 ReplicaSet 是由谁创建并控制的,显然这里显示是 Deployment。第二处是 Events
,Events 记录了 K8S 中每一种对象的日志信息,这里的信息有助于排错查问题。我们可以看到这里记录了两个 Pod 副本的创建,Pod 的名称和我们在上面执行 kubectl get pod
看到的结果是一样的。
继续执行 kubectl describe pod xxx
查看其中一个 Pod 的详细信息:
可以看到这个 Pod 是由 ReplicaSet 创建的。
到此,我们不难得出下面这幅图:
用户通过 kubeclt 创建 Deployment,Deployment 又创建 ReplicaSet,最终由 ReplicaSet 创建 Pod。
从命名上我们也可以看出,子对象的名字 = 父对象的名字 + 随机字符串。
总结
本文我们从实践上剖析了 Deployment 创建 Pod,实际上经过 ReplicaSet 进行创建。Deployment 最主要是对 Pod 进行副本管理,这样可以进行很多自动化管理的复杂操作,后面我们逐步从实践上去剖析 Pod 的各种操作。
我的公众号 「Linux云计算网络」(id: cloud_dev) ,号内有 10T 书籍和视频资源,后台回复 「1024」 即可领取,分享的内容包括但不限于 Linux、网络、云计算虚拟化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++编程技术等内容,欢迎大家关注。
Kubernetes 笔记 08 Deployment 副本管理 重新招一个员工来填坑的更多相关文章
- 即将上线的Spark服务器面临的一系列填坑笔记
即将上线的Spark服务器面临的一系列填坑笔记 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 把kafka和flume倒腾玩了,以为可以轻松一段时间了,没想到使用CDH部署的spa ...
- Kubernetes笔记(六):了解控制器 —— Deployment
Pod(容器组)是 Kubernetes 中最小的调度单元,可以通过 yaml 定义文件直接创建一个 Pod.但 Pod 本身并不具备自我恢复(self-healing)功能.如果一个 Pod 所在的 ...
- Kubernetes笔记(二):了解k8s的基本组件与概念
前文 Kubernetes笔记(一):十分钟部署一套K8s环境 介绍了如何快速搭建一个k8s系统.为了继续使用k8s来部署我们的应用,需要先对k8s中的一些基本组件与概念有个了解. Kubernete ...
- Kubernetes笔记(四):详解Namespace与资源限制ResourceQuota,LimitRange
前面我们对K8s的基本组件与概念有了个大致的印象,并且基于K8s实现了一个初步的CI/CD流程,但对里面涉及的各个对象(如Namespace, Pod, Deployment, Service, In ...
- Kubernetes 笔记 09 DaemonSet 我是一只看门狗
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...
- Kubernetes 笔记 06 豌豆荚之旅(一)
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...
- Kubernetes 笔记 03 扫清概念
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...
- Kubernetes概念之deployment
一整天一整天的坐在办公室,真的很~~~,懵圈中....,求解救. 本文通过<Kubernetes权威指南>的概念部分学习总结 Deployment作用 Deployment与RC的作用其实 ...
- Kubernetes 控制器之 Deployment 介绍(六)
一.Deployment.ReplicaSet.Pod之间的关系 我们接着前面的文章说,如果不清楚的请查看之前的博文:http://blog.51cto.com/wzlinux/2322616 前面我 ...
随机推荐
- 多线程统计次数问题:即count++
场景:日志需要统计每天数据上传的次数和上传的数据量. 如果是单线程可以使用简单的int count = 0:count++,但很多情况都是多线程环境所以就不能单纯的使用count++了!!! 多线程环 ...
- app后端设计(2)--xmpp的使用(2014.01.14更新)
在app中有时候是需要添加聊天服务,在这里谈谈曾经开发聊天服务的经验: (1)聊天服务端选的openfire,这是一个基于xmpp协议的聊天服务器(XMPP是一种基于XML的协议,它继承了在XML环境 ...
- 记一次logback传输日志到logstash根据自定义设置动态创建ElasticSearch索引
先说背景,由于本人工作需要创建很多小应用程序,而且在微服务的大环境下,服务越来越多,然后就导致日志四分五裂,到处都有,然后就有的elk,那么问题来了 不能每个小应用都配置一个 logstash 服务来 ...
- AMBA总线协议AHB、APB
一.什么是AMBA总线 AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus).ASB (Advanced ...
- Android性能优化-内存泄漏的8个Case
1为什么要做性能优化? 手机性能越来越好,不用纠结这些细微的性能? Android每一个应用都是运行的独立的Dalivk虚拟机,根据不同的手机分配的可用内存可能只有(32M.64M等),所谓的4GB. ...
- windows 7安装Fiddler抓HTTPS请求的解决办法
一.下载安装Fiddler,网上随意一搜就可找到安装软件 二.打开已经安装的fiddler,本人的安装目录:D:\AutoTest\fiddle\Fiddler2 三.打开的页面如图: 三.点击too ...
- json与javabean之间的转化
接着上一个http://www.cnblogs.com/ya-qiang/p/9009134.html随笔,继续介绍json与java对象之间的转化 一.java普通对象和json字符串的互转 jav ...
- SAP GUI个性化设置
大概从GUI730开始,GUI品牌化一直不被默认支持,在GUI设置选项里处于灰色状态,如下图: 不过用户还是可以修改注册表的方式来进行修改,让它可以设置! 首先运行Regedit,在目录:HKEY_L ...
- Python中collections模块
目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque ChainMap Python中collections ...
- python——对图像进行卷积操作,使用多个滤波器
线性滤波可以说是图像处理最基本的方法,它可以允许我们对图像进行处理,产生很多不同的效果.做法很简单.首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核)和一个要处理的二维图像.然后,对于图像的 ...