k8s 的一些官方/权威学习资料

55038137449

最近在整理一些kubernetes的官方/权威资料,在这里做个记录。

官方

培训

博客

文章

  • 《Site Reliability Engineering: How Google Runs Production Systems》
  • 《BGP in the Data Center (O’Reilly 2017)》
  • 《数据中心网络:Spine- Leaf 架构设计综述(2016)》

链接

  1. Kubernetes 架构路线图

    整个 设计理念: design-proposals 文档已经被抛弃了,转到 KEP 去了,许多文件都是历史文件,可能已过时或未实施。历史文章可以学习。

    Kubernetes Architecture Current and Future - PPT

  2. Kubernetes KEPs

  3. kubernetes 设计理念归档

  4. Kubernetes 增强提案流程

  5. Kubernetes 开发指南

    1. k8s贡献:

    2. 开发:

      • 开发指南( development.md ):设置开发环境。
      • 测试( testing.md ):如何在开发沙箱中运行单元、集成和端到端测试。
      • 一致性测试( conformance-tests.md ) 什么是一致性测试以及如何创建/管理它们。
      • 随机失败测试 flaky-tests.md :目标 99.9% Flaky Tests。
      • 日志约定logging.md):klog 级别。
      • 分析 Kubernetes ( profiling.md ):如何将 go pprof 分析器插入 Kubernetes。
      • 新 metric ( instrumentation.md ):如何向 Kubernetes 代码库添加新的指标。
      • 编码约定coding-conventions.md):为贡献者提供的编码风格建议。
      • 文档约定Kubernetes 文档)为贡献者提供的文档风格建议。
      • 在本地运行集群running-locally.md):用于开发的快速轻量级本地集群部署。
    3. 针对 Kubernetes API 进行开发:

      • REST API文档: 介绍了REST API通过API服务器暴露。
      • 注释Annotations):用于将任意非标识元数据附加到对象。自动化 Kubernetes 对象的程序可能会使用注解来存储少量的状态。
      • API 约定( api-conventions.md ):定义 Kubernetes API 中使用的动词和资源。
      • API 客户端库( Client Libraries ):现有客户端库的列表,包括受支持的和用户贡献的。
    4. 编写插件:

      • 身份验证Authentication):身份验证令牌的当前和计划状态。
      • 授权插件Authorization):授权适用于主 apiserver 端口上的所有 HTTP 请求。本文档解释了可用的授权实现。
      • 准入控制插件admission_control
    5. 构建发布:

      参阅kubernetes/release存储库。

    6. SIG 开发人员相关

  6. Kubernetes 里程碑管理

  7. kubernetes issue

k8s设计思路

来自Kubernetes 架构路线图

  1. 核心,标准化的 API 和执行机制。包括

    • REST 机制
    • 安全性
    • Pod
    • 容器
    • cni
    • csi

    基本稳定,变动不大。

  2. 应用管理层,部署和路由部分,就是编排和服务网络相关的内容。包括

    • 健康检查/自恢复
    • 伸缩
    • 服务发现
    • 负载均衡
    • 路由

    k8s默认提供了实现,但允许开发者替换成另一套完整的方案。

  3. 治理层,提供更高级别的自动化和策略执行,包括

    • 多租户
    • 监控指标
    • 自动伸缩
    • provisioning
    • 授权方案
    • 配额quota方案
    • 网络方案
    • 存储方案
  4. 接口层,用于与 Kubernetes API 交互的常用库、工具、UI 和系统。

  5. 生态系统,不属于k8s“真正的一部分”。大部分的开发工作都在这一部分:

    • CI/CD
    • 中间件
    • 日志记录
    • 监控
    • 数据处理
    • PaaS
    • serverless/FaaS
    • 工作流
    • 容器运行时
    • 镜像管理
    • 节点管理
    • 云提供商管理

arch-roadmap-1

k8s学习路径

来自https://caicloud.io/blog/5d42b1fb0b15e4002bdd6cf6

  1. 第一阶段 炼气期

    • Kubernetes 的背景
    • 安装 Kubernetes 环境
    • Kubernetes 基本概念和使用方法

    不要尝试学习过多的资源类型。学会熟练使用以下常用资源并熟记它们的概念:Pod、Node、Label、Event、Service、Configmap & Secret、Deployment、Namespace。

  2. 第二阶段 筑基期

    • Kubernetes 的基本架构
    • Kubernetes 容器调度的基本流程

    学习文章,请不要死记硬背 Kubernetes 架构,要开动大脑去理解其背后设计的原因。

  3. 第三阶段 金丹期

    • Kubernetes API 结构
    • 熟悉 Kubernetes 各个子系统
    • 熟悉 Kubernetes 排错相关内容

    学习文章:

  4. 第四阶段 元婴期

    • 加深对各个资源的理解
    • 学习更多 Kubernetes 概念和知识
    • 计算/存储/网络/安全/调度
  5. 第五阶段 化神期

    • 学习更多 Kubernetes 集群层面的功能
    • 更加深入学习 Kubernetes 架构和组件能力

    各种参数的学习。保持两个基本点不动摇:

    • 一是懂 Kubernetes 架构和最核心的能力
    • 二是懂得怎么快速定位我们需要的能力
  6. 第六阶段 练虚期

    • 对 Kubernetes 的扩展机制了如指掌
    • 可以编写 Kubernetes 控制器,能够基于扩展机制灵活地二次开发

    开发:

    • 常见工具
      • kubebuilder:来自 Kubernetes 官方的 API 扩展项目
      • sample-controller:来自 Kubernetes 官方的一个样例
      • operator-sdk:来自红帽的一个 operator 库
      • shell-operator:适合运维开发使用的 shell operator 库
      • meta-controller:来自 Google 的一个更加”傻瓜”式编写控制器的库
    • API 资源扩展能力
      • Annotation:保存少量非结构化第三方数据
      • Finalizer:资源删除时,用户调用外部系统的钩子
      • CustomResourceDefinition:自定义 Kubernetes API
      • API Aggregation:多个 API Server 聚合,适用于较大量的 API 定制
    • API 访问扩展能力
    • 调度器扩展能力
    • 网络扩展能力
    • 存储扩展能力
    • 运行时扩展能力
    • 特殊硬件或资源扩展能力
      • 扩展资源 Extended Resource:通过 Kubernetes 原生 API 方式支持添加自定义资源
      • 设备插件 Device Plugin:使用 Device Plugin 插件,可以对接任何我们需要的硬件
    • 监控扩展能力

    推荐实现一个端到端的 Kubernetes 控制器,可以对整个 Kubernetes 的二次开发有更加深入的了解。此外,针对所有的扩展能力,建议先建立一个全面的认识,再根据需要深入某一项能力。

    除了通过用户手册来学习上面的技术,也可多参考 Kubernetes 的花式设计文档,主要是 Design Proposals、KEPs。

  7. 第七阶段 大乘期

    • 了解 Kubernetes 生态项目
    • 跟踪 Kubernetes 社区发展
    • 跟踪 CNCF 社区发展

Mac 开启 ssh 服务 树莓派容器构建备忘