k8s 的一些官方/权威学习资料
2020-03-07 tech kubernetes 14 mins 1 图 5026 字
最近在整理一些kubernetes的官方/权威资料,在这里做个记录。
官方
- kubernetes入门 https://kubernetes.io/zh/docs/home/
- 在线运行 kubernetes 命令 https://kubernetes.io/docs/tutorials/hello-minikube/
- kubernetes 社区 https://github.com/kubernetes/community
培训
- 阿里CNCF云原生技术公开课 https://edu.aliyun.com/roadmap/cloudnative
- 华为kubernetes系列 CKA培训 https://bbs.huaweicloud.com/forum/thread-11064-1-1.html
- 华为的“IP基础快速入门”系列课程 https://support.huawei.com/onlinetoolweb/ptmngsys/Web/OnlineCourse_NE/zh/mooc_ip_basic.html
博客
- 阿里云系统组技术博客https://kernel.taobao.org/
- 腾讯云容器团队https://tencentcloudcontainerteam.github.io/
- 美团技术博客 https://tech.meituan.com/
文章
- 《Site Reliability Engineering: How Google Runs Production Systems》
- 《BGP in the Data Center (O’Reilly 2017)》
- 《数据中心网络:Spine- Leaf 架构设计综述(2016)》
链接
-
整个 设计理念: design-proposals 文档已经被抛弃了,转到 KEP 去了,许多文件都是历史文件,可能已过时或未实施。历史文章可以学习。
-
-
k8s贡献:
-
开发:
- 开发指南( 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):用于开发的快速轻量级本地集群部署。
-
针对 Kubernetes API 进行开发:
- REST API文档: 介绍了REST API通过API服务器暴露。
- 注释(Annotations):用于将任意非标识元数据附加到对象。自动化 Kubernetes 对象的程序可能会使用注解来存储少量的状态。
- API 约定( api-conventions.md ):定义 Kubernetes API 中使用的动词和资源。
- API 客户端库( Client Libraries ):现有客户端库的列表,包括受支持的和用户贡献的。
-
编写插件:
- 身份验证(Authentication):身份验证令牌的当前和计划状态。
- 授权插件(Authorization):授权适用于主 apiserver 端口上的所有 HTTP 请求。本文档解释了可用的授权实现。
- 准入控制插件(admission_control)
-
构建发布:
参阅kubernetes/release存储库。
-
SIG 开发人员相关
-
k8s设计思路
-
核心,标准化的 API 和执行机制。包括
- REST 机制
- 安全性
- Pod
- 容器
- cni
- csi
基本稳定,变动不大。
-
应用管理层,部署和路由部分,就是编排和服务网络相关的内容。包括
- 健康检查/自恢复
- 伸缩
- 服务发现
- 负载均衡
- 路由
k8s默认提供了实现,但允许开发者替换成另一套完整的方案。
-
治理层,提供更高级别的自动化和策略执行,包括
- 多租户
- 监控指标
- 自动伸缩
- provisioning
- 授权方案
- 配额quota方案
- 网络方案
- 存储方案
-
接口层,用于与 Kubernetes API 交互的常用库、工具、UI 和系统。
-
生态系统,不属于k8s“真正的一部分”。大部分的开发工作都在这一部分:
- CI/CD
- 中间件
- 日志记录
- 监控
- 数据处理
- PaaS
- serverless/FaaS
- 工作流
- 容器运行时
- 镜像管理
- 节点管理
- 云提供商管理
k8s学习路径
来自https://caicloud.io/blog/5d42b1fb0b15e4002bdd6cf6
-
第一阶段 炼气期
- Kubernetes 的背景
- 安装 Kubernetes 环境
- Kubernetes 基本概念和使用方法
不要尝试学习过多的资源类型。学会熟练使用以下常用资源并熟记它们的概念:Pod、Node、Label、Event、Service、Configmap & Secret、Deployment、Namespace。
-
第二阶段 筑基期
- Kubernetes 的基本架构
- Kubernetes 容器调度的基本流程
学习文章,请不要死记硬背 Kubernetes 架构,要开动大脑去理解其背后设计的原因。
-
第三阶段 金丹期
- Kubernetes API 结构
- 熟悉 Kubernetes 各个子系统
- 熟悉 Kubernetes 排错相关内容
学习文章:
-
第四阶段 元婴期
- 加深对各个资源的理解
- 学习更多 Kubernetes 概念和知识
- 计算/存储/网络/安全/调度
-
第五阶段 化神期
- 学习更多 Kubernetes 集群层面的功能
- 更加深入学习 Kubernetes 架构和组件能力
各种参数的学习。保持两个基本点不动摇:
- 一是懂 Kubernetes 架构和最核心的能力
- 二是懂得怎么快速定位我们需要的能力
-
第六阶段 练虚期
- 对 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。
-
第七阶段 大乘期
- 了解 Kubernetes 生态项目
- 跟踪 Kubernetes 社区发展
- 跟踪 CNCF 社区发展