膜拜!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了

为什么要有Kubernetes(K8S)?

有了Docker、Docker-Compose,且Docker、Docker-Compose操作起来也不复杂,为什么还要来一个Kubernetes?

的确,有了Docker、Docker-Compose的确是方便了运维的部署,直接几条命令就可以启动起来一个环境了,在加个Volume修改对应的配置文件,就可以实现大部分的环境部署需求。

问题在于,如果此时服务器的性能不够用了,怎么办?

加硬件,在学过分布式思想时,都知道到了某种程度,加机器比在一台机器上堆硬件还要便宜,且堆硬件的问题还在于服务器的硬件接口够不够,如果插槽不够就更悲催了。
所以现在的主流方案都是采用加机器,横向扩展,在加了机器的情况下,这个时候要把应用的环境全部拷贝一份过去就算了,问题在于怎么去管理整个集群,或者说怎么去管理整个已经进行了容器化的集群,性能怎么去平衡?

有的可能会想既然拷贝过去了,那就前置一个Nginx,修改Nginx的配置文件,在加一台机器的配置信息就好了,流量就会平衡过去了。那么又有个问题,如果出现了资源倾斜了怎么办?

在以上的种种问题下,我们需要一个能够帮助我们去管理这个集群的工具,而且这个工具能够帮助我们去协调好各个机器的。

目前业界最火的就是Kubernetes。

在这里分享我偶然间得到的一份文档,该文档将K8S分为理论和实践两个部分进行讲解,双管齐下,事半功倍,让我们来看看文档内容

理论篇

理解集群控制器
统一入口
控制器管理器
控制器管理器
SharedInformer
ListWatcher
服务控制器
路由控制器
![]( https://img-blog.csdnimg.cn/20210623152607111.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)
![]( https://img-blog.csdnimg.cn/20210623153829211.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

集群网络详解

集群网络搭建:初始阶段 集群阶段 节点阶段 Pod阶段
通信
![]( https://img-blog.csdnimg.cn/20210623154422649.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210623154350666.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

集群伸缩原理

节点增加原理
手动添加已有节点
自动添加已有节点
!/bin/bash
集群扩容
自动伸缩
节点减少原理
![]( https://img-blog.csdnimg.cn/2021062315445411.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)
![]( https://img-blog.csdnimg.cn/2021062315480975.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

认证与调度

在这节中,我们以一个简单的容器化web程序为例,着重分析了客户端怎么样通过Kubernetes集群API Server认证,以及容器应用怎么样被分派到合适节点这两件事情。

“关在笼子里”的程序
双向数字证书验证
KubeConfig文件
Pod配置
![]( https://img-blog.csdnimg.cn/20210623154952265.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)
![]( https://img-blog.csdnimg.cn/20210623155005175.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

集群服务的三个要点和一种实现

以我的经验来讲,理解K8S集群服务的概念,是比较不容易的一件事情。尤其是当我们基于似是而非的理解,去排查服务相关问题的时候,会非常不顺利。

这体现在,对于新手来说,ping不通服务的IP地址这样基础的问题,都很难理解;而就算对经验很丰富的工程师来说,看懂服务相关的iptables配置,也是相当的挑战。

K8S集群服务的本质是什么
自带通信员
把服务照进现实
一种实现
用自定义链实现服务的反向代理
![]( https://img-blog.csdnimg.cn/20210623155238296.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)
![]( https://img-blog.csdnimg.cn/20210623155251567.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

镜像拉取这件小事

导读:相比 K8s 集群的其他功能,私有镜像的自动拉取,看起来可能是比较简单的。而镜像拉取失败,大多数情况下都和权限有关。所以,在处理相关问题的时候,我们往往会轻松的说:这问题很简单,肯定是权限问题。但实际的情况是,我们经常为一个问题,花了多个人的时间却找不到原因。这主要还是我们对镜像拉取,特别是私有镜像自动拉取的原理理解不深。这篇文章,作者将带领大家讨论下相关原理。

顺序上来说,私有镜像自动拉取会首先通过阿里云 Acr credential helper 组件,再经过 K8s 集群的 API Server 和 kubelet 组件,最后到 docker 容器运行时。但是我的叙述,会从后往前,从最基本的 docker 镜像拉取说起。

镜像拉取这件小事
理解 OAuth 2.0 协议
Docker 扮演的角色
K8s 实现的私有镜像自动拉取
阿里云实现的 Acr credential helper
![]( https://img-blog.csdnimg.cn/2021062315543363.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)
![]( https://img-blog.csdnimg.cn/20210623155444529.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

实践

读懂这一篇,集群节点不下线

需要知道的Kubernetes知识
什么是PLEG
容器runtime
Docker Daemon调用栈分析
Containerd调用栈分析
什么是Dbus
RunC请求Dbus
Systemd
Live Debugging
问题修复

![]( https://img-blog.csdnimg.cn/20210623155853236.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)
![]( https://img-blog.csdnimg.cn/20210623155906310.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

节点下线姊妹篇

问题现象
大逻辑
就绪三分钟
止步不前的 PLEG
无响应的 Terwayd

![]( https://img-blog.csdnimg.cn/20210623160117435.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

我们为什么会删除不了集群的命名空间?

Controller在做什么?
从集群入口开始
再次回到集群入口
节点与Pod之间的通信

Route Controller为什么不工作?
集群节点访问云资源
问题大图
![]( https://img-blog.csdnimg.cn/20210623160405448.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

阿里云ACK产品安全组配置管理

安全组在ACK产品中扮演的角色
安全组与ACK集群网络
怎么样管理ACK集群的安全组规则
IDC与集群互访
使用多个安全组管理集群节点
使用新的安全组管理节点
典型问题与解决方案
限制集群访问公网或者运营级NAT保留地址
容器组跨节点通信异常

![]( https://img-blog.csdnimg.cn/20210623160554490.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

二分之一活的微服务

二分之一活的微服务
绕不过去的大图
代理与代理的生命周期管理
就绪检查的实现
控制面和数据面
简单的原因

![]( https://img-blog.csdnimg.cn/20210623161854863.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

半夜两点Ca证书过期问题处理惨况总结

不断重启的Citadel
一般意义上的证书验证
Citadel证书体系

![]( https://img-blog.csdnimg.cn/20210623162010609.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70)

以上就是这份文档的概况,一次搞懂6个核心原理吃透基础理论,学会6个典型问题的华丽操作,不管是架构师还是开发者,又或是运维,都能够从中学到不少。

以上的文档已整理成册

最后:

我们身为技术人员,最怕的就是安于现状,一直在原地踏步,那么你可能在30岁就会迎来自己的职业危机,因为你工作这么久提升的只有自己的年龄,技术还是万年不变!

我知道,对于一些学历没有优势的人来说,外包是别无选择,但是未来的路究竟要怎么走,取决你的步子迈多开。每个人都有自己的选择,如果你喜欢稳定,那按部就班适合你,但你有想法,不甘平庸,那就别让外包埋没了你。

如果你想在未来能够自我突破,圆梦大厂,那或许以上这份学习资料,你需要阅读阅读,希望能够对你的职业发展有所帮助。

最后,希望未来的我发展顺利,早日拿下p7!同样,也祝愿你实现自己的人生理想,愿我们都越来越好,共勉!

获取方式: 只需你点赞+关注后,Java进阶交流群:714827309 哦-!

![]( https://img-blog.csdnimg.cn/20210526102426650.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phdmFfUGx1dG8=,size_16,color_FFFFFF,t_70#pic_center)
获取方式: 只需你点赞+关注后,Java进阶交流群:714827309 进群拿资料哦-!

posted on 2021-06-23 16:41  Java_cola  阅读(452)  评论(0)    收藏  举报

导航