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

成为k8s大佬,从这个操作开始(伪) - 程序员学点xx 42 k8s_第1张图片

Kubernetes -2-

这是yann的第97篇分享

文章目录


本日状态:

​ 饿着肚子写公众号的 yann 同学。

第 1 部分 反省

昨天的内容被熊哥批评了。

熊哥说,「你光想着自己爽,一句我认为如何如何,洋洋洒洒半屏幕结论,完全不考虑别人能不能看得懂。」

yann 一想好像是这么回事,一激动全讲出来了。所以,今天会稍微再细致的给大家解说一下昨天的概念。

第 2 部分 知识

Deployment

昨天提到的 Deployment 其实相当于订单或需求清单。比如说,yann 需要建立一个集群,里面有3个容器副本,就可以用 Deployment 来建立。

当然,这么定义是不严谨的。但是暂时可以这样理解:Deployment 包含了一个任务中的容器数量及所用的镜像,还有的其他一些属性。

yann 觉得先有概念,在逐步完善是一个很好的学习过程。yann 很不喜欢接受新事物的开始,就背负一堆负担。正常的学习路线应该是先搞懂原理,了解主要组件,然后再细化实践。而不是精雕细琢,记住每一个细碎知识点。结果半年以后还停在第1章,那就已经凉凉了。

演示

下面通过视频的方式给大家演示,通过 Deployment 创建一个集群的过程。大家只要有个概念:什么样的操作会产生什么样的结果就好了, 不必深究细节。

视频

微信里的视频拿不出来,麻烦跳转观看.

视频有一分半, 中间电脑有点卡了,所以画面停顿,请多等一下。

看完视频只要体会了以下两个知识点就可以了:

  1. Deployment 类型的配置文件就像资源清单一样,yann 在里面定义需要3个 nginx 容器
  2. 通过 kubectl 命令 配置文件, 可以创造出容器集群

其实视频里面还定义了服务,并检验了容器和服务的可用性。不过这些目前不是很重要, 不了解也罢。

不过要注意,Deployment 并不是一份死板的资源清单,而是对资源动态的保证,例如一个 节点 node 宕机了, Deployment 的控制器只要发现定义数量不满足了,就要在存活节点上重新发起新的需求,以保证满足设定。

CRD

既然搞清楚了 Deployment 的用途,那 CRD 也就很容易说明了。Deployment 是一种资源定义清单, 定义了容器的副本数和数量。而CRD就是用户自己去自定义某些资源清单。

那这样就会有人问了,「我没事自己定义个资源清单干嘛? 」。这个问题问的好,昨天 yann 也说过,光是资源的定义没有任何意义,要配合控制器 controller 来处理这个清单。所以我们自定义了一个清单。自然也要自定义控制器去处理这个清单。而在控制器中,可以附加各种业务逻辑来完成相应的控制,这就是我们的目的。

搞清楚了前因后果,我们再来看一下 CRD 项目的具体的操作方式。昨天 yann 演示了一个 CRD 的一个配置文件,其实这只是第1步。后续还要补充另外一些文件,来构造成一个特定的工程。

然后我们会安装代码生成器,代码生成器检测工程文件的结构,来生成一些通用代码和组件,在此基础上我们再来编写控制器。最后把编译好的二进制控制器文件放到 k8s 服务器上, 再加上权限,指定配置文件就可以使用了。

为什么会这样操作?是因为k8s的处理过程还是相对复杂,厂商为了方便用户会自动生成一部分代码,只有部分比较灵活的代码由用户来完成。

第 3 部分 总结

下一篇,yann 会带领大家理清需要补充的文件和代码,再尝试使用代码生成器,产生相应的代码出来。为编写 controller 做好准备。

把复杂、困难的东西,讲的简洁明了, 确实挺困难的。yann 会尽量放慢速度,并辅以图表和视频。尽量展现出其中的原理。学习不能贪图爽快,一定要搞清楚原理。不然很容易陷入一个脚本跑起来, 各种问题都奇怪的状况。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yJlUajya-1576144057057)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

运维开发时间
关注我们
关注我们就可以看到其他不一定好看的文章

这最近不方便?
那还可以分享我们的文章嘛~~

网站其他文章

深度科普 (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_第2张图片

你可能感兴趣的:(成为k8s大佬,从这个操作开始(伪) - 程序员学点xx 42 k8s)