成为k8s大佬,从这个操作开始(伪) - 程序员学点xx 42 k8s
目录

Kubernetes -2-
这是yann的第97篇分享
本日状态:
饿着肚子写公众号的 yann 同学。
第 1 部分 反省
昨天的内容被熊哥批评了。
熊哥说,「你光想着自己爽,一句我认为如何如何,洋洋洒洒半屏幕结论,完全不考虑别人能不能看得懂。」
yann 一想好像是这么回事,一激动全讲出来了。所以,今天会稍微再细致的给大家解说一下昨天的概念。
第 2 部分 知识
Deployment
昨天提到的 Deployment 其实相当于订单或需求清单。比如说,yann 需要建立一个集群,里面有3个容器副本,就可以用 Deployment 来建立。
当然,这么定义是不严谨的。但是暂时可以这样理解:Deployment 包含了一个任务中的容器数量及所用的镜像,还有的其他一些属性。
yann 觉得先有概念,在逐步完善是一个很好的学习过程。yann 很不喜欢接受新事物的开始,就背负一堆负担。正常的学习路线应该是先搞懂原理,了解主要组件,然后再细化实践。而不是精雕细琢,记住每一个细碎知识点。结果半年以后还停在第1章,那就已经凉凉了。
演示
下面通过视频的方式给大家演示,通过 Deployment 创建一个集群的过程。大家只要有个概念:什么样的操作会产生什么样的结果就好了, 不必深究细节。
微信里的视频拿不出来,麻烦跳转观看.
视频有一分半, 中间电脑有点卡了,所以画面停顿,请多等一下。
看完视频只要体会了以下两个知识点就可以了:
- Deployment 类型的配置文件就像资源清单一样,yann 在里面定义需要3个 nginx 容器
- 通过 kubectl 命令 + 配置文件, 可以创造出容器集群
其实视频里面还定义了服务,并检验了容器和服务的可用性。不过这些目前不是很重要, 不了解也罢。
不过要注意,Deployment 并不是一份死板的资源清单,而是对资源动态的保证,例如一个 节点 node 宕机了, Deployment 的控制器只要发现定义数量不满足了,就要在存活节点上重新发起新的需求,以保证满足设定。
CRD
既然搞清楚了 Deployment 的用途,那 CRD 也就很容易说明了。Deployment 是一种资源定义清单, 定义了容器的副本数和数量。而CRD就是用户自己去自定义某些资源清单。
那这样就会有人问了,「我没事自己定义个资源清单干嘛? 」。这个问题问的好,昨天 yann 也说过,光是资源的定义没有任何意义,要配合控制器 controller 来处理这个清单。所以我们自定义了一个清单。自然也要自定义控制器去处理这个清单。而在控制器中,可以附加各种业务逻辑来完成相应的控制,这就是我们的目的。
搞清楚了前因后果,我们再来看一下 CRD 项目的具体的操作方式。昨天 yann 演示了一个 CRD 的一个配置文件,其实这只是第1步。后续还要补充另外一些文件,来构造成一个特定的工程。
然后我们会安装代码生成器,代码生成器检测工程文件的结构,来生成一些通用代码和组件,在此基础上我们再来编写控制器。最后把编译好的二进制控制器文件放到 k8s 服务器上, 再加上权限,指定配置文件就可以使用了。
为什么会这样操作?是因为k8s的处理过程还是相对复杂,厂商为了方便用户会自动生成一部分代码,只有部分比较灵活的代码由用户来完成。
第 3 部分 总结
下一篇,yann 会带领大家理清需要补充的文件和代码,再尝试使用代码生成器,产生相应的代码出来。为编写 controller 做好准备。
把复杂、困难的东西,讲的简洁明了, 确实挺困难的。yann 会尽量放慢速度,并辅以图表和视频。尽量展现出其中的原理。学习不能贪图爽快,一定要搞清楚原理。不然很容易陷入一个脚本跑起来, 各种问题都奇怪的状况。
运维开发时间
关注我们
关注我们就可以看到其他不一定好看的文章
网站其他文章
深度科普 (CNCF→) 毕业项目 | 生态 | Ansible | Chef | Puppet | VMware | OpenStack | registry | Harbor| Docker | Containerd | RKT | ROOK | Calico | Flannel | Open vSwitch | Kubernetes | Zookeeper | Consul | Etcd | GRPC | thrift | MySQL | Spark | Storm | RocketMQ | kafka| RabbitMQ | Helm | Docker Composer | Packer | Jenkins | Bamboo | (Prometheus→) 构建 | DBA | 系统 | Grafana | Zabbix | Fluentd | ElasticSearch | Logstash | Jaeger | Go语言 (go web)网站 | Request | Response| 模板| 数据存储 | 处理 JSON (go docker)冒烟| 限制资源| Python 期末总结 | ELK 任务 | 部署ES | 最小模式 | 集群 | Logstash | 中转 | 输出 | kafka | 消息定制 | 过滤 | geoip | grok | kibana | es head | 使用 | CURD | 指引 Redis 集群 | 脚本 |迁移 | 加固 | 持久化 | 性能 | 缓存思考 | Kafka 集群 | 故障排查 | 命令行 | 术语 | 集群原理 | 近期文章 寂寞的时候, Siri在帮我数羊 - 100期纪念
本文由博客一文多发平台 OpenWrite 发布!
发布在平台的文章, 和原文存在格式差异, 阅读不便请见谅
最新内容欢迎关注公众号:
成为k8s大佬,从这个操作开始(伪) - 程序员学点xx 42 k8s的更多相关文章
- 构建CRD工程 - 程序员学点xx 43 k8s
目录 Kubernetes -3- 这是yann的第98篇分享 本日状态: 帮同事排了一天bug. Kubernetes -3- 这是yann的第98篇分享 第 1 部分 承前 昨天用视屏的方式演 ...
- Android程序员学WEB前端(7)-CSS(2)-伪类字体文本背景边框-Sublime
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/76618373 觉得博文有用,请点赞,请评论,请关注,谢谢!~ 伪类: <!DOC ...
- python(三)一个文件读写操作的小程序
我们要实现一个文件读写操作的小程序 首先我们有一个文件 我们要以"============"为界限,每一个角色分割成一个独立的txt文件,按照分割线走的话是分成 xiaoNa_1. ...
- 【转帖】远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)
远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm) https://zhuanlan.zhihu.com/p/310 ...
- IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架
每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换 ...
- 你是否听说过 HashMap 在多线程环境下操作可能会导致程序死循环?
作者:炸鸡可乐 原文出处:www.pzblog.cn 一.问题描述 经常有些面试官会问,是否了解过 HashMap 在多线程环境下使用时可能会发生死循环,导致服务器 cpu 100% 的线上故障? 关 ...
- 『与善仁』Appium基础 — 30、操作微信小程序
目录 1.测试微信小程序前提 2.获取微信小程序的进程 3.代码示例 4.补充:(了解) 微信小程序和微信公众号的测试方式基本上是一样的. 微信的小程序越来越多了,随之带来的问题是:小程序如何做自动化 ...
- 【性能测试实战】jmeter + k8s + 微服务 + skywalking + efk,测试都在学的热门技术
原文持续更新完善:https://www.cnblogs.com/uncleyong/p/15475614.html 前言:当前的热门主流技术是哪些?测开为啥那么火?90%以上的测试对测开认识不准确 ...
- 在C#中使用 SendMessage 实现操作外部其他程序上的控件教程
一.C#代码实现 本案例使用的是c# winform .NET Framework 4.7.2 首先我们声明一个寻找窗体的函数 [DllImport("User32.dll", E ...
随机推荐
- zabbix监控A主机到B主机的网络质量
采用zabbix自带的icmp ping即可进行监控: 1.安装fping 2.将fping安装后链接到/usr/sbin/fping下,设置组为zabbix; 3.增加监控项:icmpping[ip ...
- NOIP模拟赛(by hzwer) T2 小奇的序列
[题目背景] 小奇总是在数学课上思考奇怪的问题. [问题描述] 给定一个长度为 n 的数列,以及 m 次询问,每次给出三个数 l,r 和 P, 询问 (a[l'] + a[l'+1] + ... + ...
- qt学习(一)qt三个文件函数的框架
学到点什么, 而不是复制着什么, 每天敲着别人给的代码,苦涩得改完bug, 就这样一天天的过去, 实质上并没有学到什么, 别人的思想只是拿来借鉴, 你的思想是好是坏都是你的, 不用急着抛弃自己. 从q ...
- rk3288-cc上编写一个hello world
一.编写一个hello world驱动 懒,不写了 二.编写Kconfig和Makefile 我们在kernel/driver目录下创建一个hello目录 然后创建一个Kconfig文件: confi ...
- sh_07_买苹果增强版
sh_07_买苹果增强版 # 1. 输入苹果的单价 price_str = input("苹果的单价:") # 2. 输入苹果的重量 weight_str = input(&quo ...
- .net api 和java平台对接技术总结
这两天 一直和京东对接接口,我们用.net api 提供接口,对方用java调用,本来没什么问题,但是对方对数据安全要求特别严,要验签,于是噩梦开始了. 1.在传输的时候,约定传输格式: HttpWe ...
- CF1012F Passports
http://codeforces.com/problemset/problem/1012/F 题解 考虑\(p=1\)的情况. 我们可以把题意理解成平面上有一些线段,你需要给每条线段分配一个长度给定 ...
- Nginx 在 Linux 下安装与搭建集群
搭建集群图例 集群搭建图如下,为了简单一点,使用一个Nginx服务器+两个Tomcat服务器,省略数据库部分: 环境说明 Linux 为 CentOS 7.2 发行版 + Java jdk 1.8 + ...
- react-native modal
1.属性 animationType(动画类型) PropTypes.oneOf([‘none’, ‘slide’, ‘fade’]) none:没有动画 slide:从底部滑入 fade:淡入视野 ...
- CentOS7 安装Kafka
关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service 安装JDK yum install -y http ...
