写点什么

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

  • 2023-05-12
    湖南
  • 本文字数:1650 字

    阅读完需:约 5 分钟

容器技术本身偏向运维,namespace 资源隔离、cgroups 资源限制等概念,对开发者来说,理解起来比较困难。这几年,在跟朋友探讨 k8s 落地时,也有一些问题被反反复复地提及,比如:

  • 为什么容器里只能跑“一个进程”?

  • 原先一直用的某个 JVM 参数,在容器里就不好使了?

  • 为什么 kubernetes 不能固定 IP 地址?容器网络连不通,该如何 debug?

  • k8s 中 statefulSet 和 operator 到底什么区别?pv 和 pvc 又该怎么用?


这些问题的答案和原理并不复杂。但对初学者来说,很难用一两句话就解释清楚。因为容器技术涉及操作系统、网络、存储、调度、分布式原理等等方方面面的知识,是个名副其实的全栈技术。


而其技术体系里那些“牵一发而动全身”的主线,比如 Linux 进程模型对容器本身的重要意义,“控制器”模式对整个 k8s 项目提纲挈领的作用等等,并不会详细展现在 docker 或 kubernetes 官方文档中,但偏偏就是它们,才是掌握容器技术体系的精髓所在


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


限于文章篇幅原因,只能以截图的形式展示出来,有需要的小伙伴 点击这里凭本文截图即可获取!

理论模块

理解集群控制器

基本上来说,K8S 集群的控制器,其实扮演着集群大脑的角色。有了控制器,K8S 集群才有机会摆脱机械和被动,变成一个自动、智能、有大用的系统。

  • 控制器原理

  • 统一入口

  • 控制器

  • 控制器管理器

  • SharedInformer

  • ListWatcher

  • 服务控制器

  • 路由控制器

集群网络详解

我们主要通过网络搭建和通信两个角度去分析 K8S 集群网络。其中网络搭建包括初始阶段,集群阶段,节点阶段以及 Pod 阶段,这么分类有助于我们理解这些复杂的配置。而理解了各个配置,集群通信原理就比较容易理解了。

  • 集群网络搭建

  • 通信

集群伸缩原理

总体上来说,K8S 集群节点的增加与减少,主要涉及四个组件,分别是 Cluster Autoscaler,ESS, 管控以及节点本身(准备或清理)。根据场景不同,我们需要排查不同的组件。其中 Cluster Autoscaler 是一个普通的 Pod,其日志的获取和其他 Pod 无异;ESS 弹性伸缩有其专门的控制台,我们可以在控制台排查其伸缩配置、伸缩规则等相关子实例日志和状态;而管控的日志,可以通过查看日志功能来查看;最后,对于节点的准备与清理,其实就是排查对应的脚本的执行过程。

  • 节点增加原理

  • 手动添加已有节点

  • 自动添加已有节点

  • 集群扩容

  • 自动伸缩

  • 节点减少原理

认证与调度

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

  • “关在笼子里”的程序

  • 双向数字证书验证

  • KubeConfig 文件

  • Pod 配置

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

  • K8S 集群服务的本质是什么

  • 自带通信员

  • 把服务照进现实

  • 过滤器框架

  • 节点网络

  • 升级过滤器框架

  • 用自定义链实现服务的反向代理

镜像拉取

  • 理解 OAuth2.0 协议

  • Docker 扮演的角色

  • K8s 实现的私有镜像自动拉取

  • 阿里云实现的 Acr credential helper

实践模块

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

  • 需要知道的 Kubernetes 知识

  • 什么是 PLEG

  • 容器 runtime

  • Docker Daemon 调用栈分析

  • Containerd 调用栈分析

  • 什么是 Dbus

  • RunC 请求 Dbus

  • Systemd

  • Live Debugging

  • 问题修复

节点下线姊妹篇

  • 问题现象

  • 止步不前的 PLEG

  • 无响应的 Terwayd

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

  • 从集群入口开始

  • Controller 在做什么?

  • API、Group、Version

  • Controller 为什么不能删除命名空间里的资源

  • 节点与 Pod 之间的通信

  • Route Controller 为什么不工作?

  • 集群节点访问云资源

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

  • 安全组在 ACK 产品中扮演的角色

  • 安全组与 ACK 集群网络

  • 怎么样管理 ACK 集群的安全组规则

  • 限制集群访问外网

  • IDC 与集群互访

  • 使用新的安全组管理节点

  • 典型问题与解决方案

  • 使用多个安全组管理集群节点

  • 限制集群访问公网或者运营级 NAT 保留地址

  • 容器组跨节点通信异常

二分之一活的微服务

  • 代理与代理的生命周期管理

  • 就绪检查的实现

  • 控制面和数据面

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

  • 不断重启的 Citadel

  • 一般意义上的证书验证

  • Citadel 证书体系

限于文章篇幅原因,就展示到这里了,有需要的小伙伴 点击这里凭本文截图即可获取!

用户头像

还未添加个人签名 2021-07-28 加入

公众号:该用户快成仙了

评论

发布
暂无评论
膜拜!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了_Java_做梦都在改BUG_InfoQ写作社区