diff --git a/SUMMARY.md b/SUMMARY.md index d03690067..fc5c18404 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -8,6 +8,7 @@ * [云原生(Cloud Native)的定义](cloud-native/cloud-native-definition.md) * [云原生的设计哲学](cloud-native/cloud-native-philosophy.md) +* [Kubernetes 的诞生](cloud-native/kubernetes-history.md) * [Kubernetes 与云原生应用概览](cloud-native/kubernetes-and-cloud-native-app-overview.md) * [云原生应用之路 —— 从 Kubernetes 到 Cloud Native](cloud-native/from-kubernetes-to-cloud-native.md) * [定义云原生应用](cloud-native/define-cloud-native-app.md) @@ -102,7 +103,7 @@ ## 用户指南 -* [用户指南](guide/index.md) +* [用户指南概览](guide/index.md) * [资源对象配置](guide/resource-configuration.md) * [配置 Pod 的 liveness 和 readiness 探针](guide/configure-liveness-readiness-probes.md) * [配置 Pod 的 Service Account](guide/configure-pod-service-account.md) @@ -272,6 +273,9 @@ * [CNCF 中的项目治理](cloud-native/cncf-project-governing.md) * [CNCF Ambassador](cloud-native/cncf-ambassador.md) * [云原生社区](cloud-native/cnc.md) +* [认证及培训](cloud-native/certification.md) + * [认证 Kubernetes 服务提供商(KCSP)说明](appendix/about-kcsp.md) + * [认证 Kubernetes 管理员(CKA)说明](appendix/about-cka-candidate.md) ## 附录 @@ -288,6 +292,5 @@ * [CNCF 年度报告解读](appendix/cncf-annual-report.md) * [CNCF 2018 年年度报告解读](appendix/cncf-annual-report-2018.md) * [CNCF 2020 年年度报告解读](appendix/cncf-annual-report-2020.md) -* [Kubernetes 认证服务提供商(KCSP)说明](appendix/about-kcsp.md) -* [认证 Kubernetes 管理员(CKA)说明](appendix/about-cka-candidate.md) + diff --git a/appendix/about-cka-candidate.md b/appendix/about-cka-candidate.md index 63b10d682..b13fff662 100644 --- a/appendix/about-cka-candidate.md +++ b/appendix/about-cka-candidate.md @@ -1,6 +1,6 @@ -# 认证Kubernetes管理员(CKA) +# 认证 Kubernetes 管理员(CKA) -这是CNCF的官方认证,详情请看[官方介绍](https://www.cncf.io/certification/expert/ )。 +这是 CNCF 的官方认证,详情请看[官方介绍](https://www.cncf.io/certification/CKA/ )。 ## 认证详情 @@ -170,7 +170,7 @@ Kubernetes Community Final Exam ps: 个人觉得这个课程可以不用学, 直接看文档就行了 。 ``` -还有一个[收费的课程](https://training.linuxfoundation.org/linux-courses/system-administration-training/kubernetes-fundamentals) ($299) +还有一个[收费的课程](https://training.linuxfoundation.org/linux-courses/system-administration-training/kubernetes-fundamentals) ($299)。 该课程的课程大纲: @@ -195,8 +195,11 @@ Chapter 16. Security ps: 个人觉得这个课程太贵了,为了省点钱 , 仔细研究下文档就行了 。 ``` -[培训体系](https://www.mindmeister.com/zh/920845833/kubernauts-training-pla) +[培训体系](https://www.mindmeister.com/zh/920845833/kubernauts-training-pla)如下图所示。 ![CKA mindmap](../images/cka-mindmap.png) -From: [Github_hackstoic](https://github.com/hackstoic/kubernetes_practice/blob/master/%E5%85%B3%E4%BA%8EK8S%E7%9B%B8%E5%85%B3%E8%AE%A4%E8%AF%81%E7%9A%84%E8%AF%B4%E6%98%8E.md) +## 参考 + +- [Kubernetes认证服务提供商(KCSP) - github.com](https://github.com/hackstoic/kubernetes_practice/blob/master/%E5%85%B3%E4%BA%8EK8S%E7%9B%B8%E5%85%B3%E8%AE%A4%E8%AF%81%E7%9A%84%E8%AF%B4%E6%98%8E.md) +- [Certified Kubernetes Administrator (CKA) - cncf.io](https://www.cncf.io/certification/CKA/) \ No newline at end of file diff --git a/appendix/about-kcsp.md b/appendix/about-kcsp.md index f2575a520..a47f44b5f 100644 --- a/appendix/about-kcsp.md +++ b/appendix/about-kcsp.md @@ -1,4 +1,4 @@ -# Kubernetes认证服务提供商(KCSP)说明 +# 认证Kubernetes服务提供商(KCSP)说明 云原生计算基金会(CNCF)负责维护并整合Kubernetes和Prometheus之类的开源技术,今天它在开源峰会上宣布了22多家Kubernetes认证服务提供商(KCSP)的创始成员名单。KCSP是通过初审的企业组织,它们在帮助企业成功地采用Kubernetes方面有着丰富经验。此外,专业人员个人现在可以注册报名新的认证Kubernetes管理员(CKA)计划和[考试](https://www.cncf.io/certification/expert/)。 @@ -22,7 +22,7 @@ KCSP的创始成员包括CNCF和Linux基金会的下列成员: - 三星SDS - Stackpointcloud - Supergiant -- Treasure Data。 +- Treasure Data KCSP计划的适用对象是通过初审的服务提供商,它们为踏上Kubernetes之旅的公司企业提供Kubernetes支持、咨询、专业服务和培训。KCSP计划确保企业得到它们在寻求的支持,从而比以前更迅速、更高效地部署新的应用程序,同时确保有一家值得信赖、经过审查的合作伙伴可以支持其生产和运营方面的要求。 想成为KCSP,**需要至少三名工程师通过认证Kubernetes管理员** [CKA](https://www.cncf.io/certification/expert/) 考试,能够证明在Kubernetes社区从事活动(包括积极贡献代码),以及支持企业最终用户的商业模式,包括将工程师派驻客户现场。 diff --git a/appendix/docker-best-practice.md b/appendix/docker-best-practice.md index 597eaeaa5..c0a81528e 100644 --- a/appendix/docker-best-practice.md +++ b/appendix/docker-best-practice.md @@ -46,7 +46,7 @@ Docker提供了一系列[log drivers](https://docs.docker.com/engine/admin/loggi - [使用docker-compose创建应用](https://jimmysong.io/docker-handbook/docs/docker_compose) -## 集群管理## +## 集群管理 我们使用docker内置的swarm来管理docker集群。 diff --git a/cloud-native/certification.md b/cloud-native/certification.md new file mode 100644 index 000000000..cf8974ec8 --- /dev/null +++ b/cloud-native/certification.md @@ -0,0 +1,3 @@ +# 认证及培训 + +随着云原生生态的不断发展壮大,业界缺乏相应的人才储备及知识积累,各种认证及培训则如雨后春笋般出现。 \ No newline at end of file diff --git a/cloud-native/kubernetes-history.md b/cloud-native/kubernetes-history.md new file mode 100644 index 000000000..a9da85b56 --- /dev/null +++ b/cloud-native/kubernetes-history.md @@ -0,0 +1,18 @@ +# Kubernetes 的诞生 + +众所周知,[Kubernetes](http://kubernetes.io) 是 Google 于 2014 年 6 月基于其内部使用的 [Borg](https://research.google.com/pubs/pub43438.html) 系统开源出来的容器编排调度引擎。其实从 2000 年开始,Google 就开始基于容器研发三个容器管理系统,分别是 Borg、Omega 和 Kubernetes。这篇由 Google 工程师 Brendan Burns、Brian Grant、David Oppenheimer、Eric Brewer 和 John Wilkes 几人在 2016 年发表的[《Borg, Omega, and Kubernetes》](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf)论文里,阐述了 Google 从 Borg 到 Kubernetes 这个旅程中所获得知识和经验教训。 + +## Borg、Omega 和 Kubernetes + +Google 从 2000 年初就开始使用容器(Linux 容器)系统,Google 开发出来的第一个统一的容器管理系统在内部称之为 “Borg”,用来管理长时间运行的生产服务和批处理服务。由于 Borg 的规模、功能的广泛性和超高的稳定性,一直到现在 Borg 在 Google 内部依然是主要的容器管理系统。 + +Google 的第二套容器管理系统叫做 Omega,作为 Borg 的延伸,它的出现是出于提升 Borg 生态系统软件工程的愿望。Omega 应用到了很多在 Borg 内已经被认证的成功的模式,但是是从头开始来搭建以期更为一致的构架。由于越来越多的应用被开发并运行在 Borg 上,Google 开发了一个广泛的工具和服务的生态系统。它被应用到了很多在 Borg 内已经被认证的成功的模式,但是是从头开始来搭建以期更为一致的构架。这些系统提供了配置和更新 job 的机制,能够预测资源需求,动态地对在运行中的程序推送配置文件、服务发现、负载均衡、自动扩容、机器生命周期管理、额度管理等。许多 Omega 的创新(包括多个调度器)都被收录进了 Borg。 + +Google 的第三套容器管理系统就是我们所熟知的 Kubernetes,它是针对在 Google 外部的对 Linux 容器感兴趣的开发者以及 Google 在公有云底层商业增长的考虑而研发的。和 Borg、Omega 完全是谷歌内部系统相比,Kubernetes 是开源的。像 Omega 一样,Kubernetes 在其核心有一个被分享的持久存储,有组件来检测相关 object 的变化。跟 Omega 不同的是,Omega 把存储直接暴露给信任的控制平面的组件,而在 Kubernete 中,提供了完全由特定领域更高层面的版本控制、认证、语义、策略的 REST API 接口,以服务更多的用户。更重要的是,Kubernetes 是由一群底层开发能力更强的开发者开发的,他们主要的设计目标是用更容易的方法去部署和管理复杂的分布式系统,同时仍能从容器提升的效率中受益。 + +2014 年 Kubernetes 正式开源,2015 年被作为初创项目贡献给了云原生计算基金会(CNCF),从此开启了 Kubernetes 及云原生化的大潮。 + +## 参考 + +- [Borg, Omega, and Kubernetes: Lessons learned from three container-management systems over a decade - queue.acm.org](https://queue.acm.org/detail.cfm?id=2898444) +- [Borg、Omega 和 Kubernetes:谷歌十几年来从这三个容器管理系统中得到的经验教训 - dockone.io](http://dockone.io/article/1153) \ No newline at end of file diff --git a/concepts/index.md b/concepts/index.md index 70857275b..57811974c 100644 --- a/concepts/index.md +++ b/concepts/index.md @@ -1,87 +1,85 @@ -# Kubernetes架构 +# Kubernetes 架构 -Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的workflows 和更高级的自动化任务。 -Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。 -Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。 +Kubernetes 最初源于谷歌内部的 Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes 的目标旨在消除编排物理 / 虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的 workflows 和更高级的自动化任务。 +Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。 -## Borg简介 +## Borg 简介 -Borg是谷歌内部的大规模集群管理系统,负责对谷歌内部很多核心服务的调度和管理。Borg的目的是让用户能够不必操心资源管理的问题,让他们专注于自己的核心业务,并且做到跨多个数据中心的资源利用率最大化。 +Borg 是谷歌内部的大规模集群管理系统,负责对谷歌内部很多核心服务的调度和管理。Borg 的目的是让用户能够不必操心资源管理的问题,让他们专注于自己的核心业务,并且做到跨多个数据中心的资源利用率最大化。 -Borg主要由BorgMaster、Borglet、borgcfg和Scheduler组成,如下图所示 +Borg 主要由 BorgMaster、Borglet、borgcfg 和 Scheduler 组成,如下图所示 -![Borg架构](../images/borg.png) +![Borg 架构](../images/borg.png) -* BorgMaster是整个集群的大脑,负责维护整个集群的状态,并将数据持久化到Paxos存储中; -* Scheduer负责任务的调度,根据应用的特点将其调度到具体的机器上去; -* Borglet负责真正运行任务(在容器中); -* borgcfg是Borg的命令行工具,用于跟Borg系统交互,一般通过一个配置文件来提交任务。 +* BorgMaster 是整个集群的大脑,负责维护整个集群的状态,并将数据持久化到 Paxos 存储中; +* Scheduer 负责任务的调度,根据应用的特点将其调度到具体的机器上去; +* Borglet 负责真正运行任务(在容器中); +* borgcfg 是 Borg 的命令行工具,用于跟 Borg 系统交互,一般通过一个配置文件来提交任务。 -## Kubernetes架构 +## Kubernetes 架构 -Kubernetes借鉴了Borg的设计理念,比如Pod、Service、Label和单Pod单IP等。Kubernetes的整体架构跟Borg非常像,如下图所示。 +Kubernetes 借鉴了 Borg 的设计理念,比如 Pod、Service、Label 和单 Pod 单 IP 等。Kubernetes 的整体架构跟 Borg 非常像,如下图所示。 -![Kubernetes架构](../images/architecture.png) +![Kubernetes 架构](../images/architecture.png) -Kubernetes主要由以下几个核心组件组成: +Kubernetes 主要由以下几个核心组件组成: -- etcd保存了整个集群的状态; -- apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制; -- controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; -- scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上; -- kubelet负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理; -- Container runtime负责镜像管理以及Pod和容器的真正运行(CRI); -- kube-proxy负责为Service提供cluster内部的服务发现和负载均衡; +- etcd 保存了整个集群的状态; +- apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制; +- controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; +- scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上; +- kubelet 负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI)的管理; +- Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI); +- kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡; -除了核心组件,还有一些推荐的插件,其中有的已经成为CNCF中的托管项目: +除了核心组件,还有一些推荐的插件,其中有的已经成为 CNCF 中的托管项目: -- CoreDNS负责为整个集群提供DNS服务 -- Ingress Controller为服务提供外网入口 -- Prometheus提供资源监控 -- Dashboard提供GUI -- Federation提供跨可用区的集群 +- CoreDNS 负责为整个集群提供 DNS 服务 +- Ingress Controller 为服务提供外网入口 +- Prometheus 提供资源监控 +- Dashboard 提供 GUI +- Federation 提供跨可用区的集群 -## Kubernetes架构示意图 +## Kubernetes 架构示意图 ### 整体架构 -下图清晰表明了Kubernetes的架构设计以及组件之间的通信协议。 +下图清晰表明了 Kubernetes 的架构设计以及组件之间的通信协议。 -![Kuberentes架构(图片来自于网络)](../images/kubernetes-high-level-component-archtecture.jpg) +![Kuberentes 架构(图片来自于网络)](../images/kubernetes-high-level-component-archtecture.jpg) 下面是更抽象的一个视图: -![kubernetes整体架构示意图](../images/kubernetes-whole-arch.png) +![kubernetes 整体架构示意图](../images/kubernetes-whole-arch.png) -### Master架构 +### Master 架构 -![Kubernetes master架构示意图](../images/kubernetes-master-arch.png) +![Kubernetes master 架构示意图](../images/kubernetes-master-arch.png) -### Node架构 +### Node 架构 -![kubernetes node架构示意图](../images/kubernetes-node-arch.png) +![kubernetes node 架构示意图](../images/kubernetes-node-arch.png) ### 分层架构 -Kubernetes设计理念和功能其实就是一个类似Linux的分层架构,如下图所示。 +Kubernetes 设计理念和功能其实就是一个类似 Linux 的分层架构,如下图所示。 -![Kubernetes分层架构示意图](../images/kubernetes-layers-arch.png) +![Kubernetes 分层架构示意图](../images/kubernetes-layers-arch.png) -* 核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境 -* 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)、Service Mesh(部分位于应用层) -* 管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)、Service Mesh(部分位于管理层) -* 接口层:kubectl命令行工具、客户端SDK以及集群联邦 +* 核心层:Kubernetes 最核心的功能,对外提供 API 构建高层的应用,对内提供插件式应用执行环境 +* 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS 解析等)、Service Mesh(部分位于应用层) +* 管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态 Provision 等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy 等)、Service Mesh(部分位于管理层) +* 接口层:kubectl 命令行工具、客户端 SDK 以及集群联邦 * 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴 - * Kubernetes外部:日志、监控、配置管理、CI/CD、Workflow、FaaS、OTS应用、ChatOps、GitOps、SecOps等 - * Kubernetes内部:[CRI](cri.md)、[CNI](cni.md)、[CSI](csi.md)、镜像仓库、Cloud Provider、集群自身的配置和管理等 + * Kubernetes 外部:日志、监控、配置管理、CI/CD、Workflow、FaaS、OTS 应用、ChatOps、GitOps、SecOps 等 + * Kubernetes 内部:[CRI](cri.md)、[CNI](cni.md)、[CSI](csi.md)、镜像仓库、Cloud Provider、集群自身的配置和管理等 -> 关于分层架构,可以关注下Kubernetes社区正在推进的[Kubernetes architectual roadmap](https://docs.google.com/document/d/1XkjVm4bOeiVkj-Xt1LgoGiqWsBfNozJ51dyI-ljzt1o)和[slide](https://docs.google.com/presentation/d/1GpELyzXOGEPY0Y1ft26yMNV19ROKt8eMN67vDSSHglk/edit)。 +> 关于分层架构,可以关注下 Kubernetes 社区正在推进的 [Kubernetes architectual roadmap](https://docs.google.com/document/d/1XkjVm4bOeiVkj-Xt1LgoGiqWsBfNozJ51dyI-ljzt1o) 和 [slide](https://docs.google.com/presentation/d/1GpELyzXOGEPY0Y1ft26yMNV19ROKt8eMN67vDSSHglk/edit)。 ## 参考文档 - [Borg, Omega, and Kubernetes - Lessons learned from three container-management systems over a decade](http://queue.acm.org/detail.cfm?id=2898444) - [Paper - Large-scale cluster management at Google with Borg](http://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/43438.pdf) - [KUBERNETES: AN OVERVIEW](http://thenewstack.io/kubernetes-an-overview) -- [Kubernetes architectual roadmap](https://docs.google.com/document/d/1XkjVm4bOeiVkj-Xt1LgoGiqWsBfNozJ51dyI-ljzt1o)和[slide](https://docs.google.com/presentation/d/1GpELyzXOGEPY0Y1ft26yMNV19ROKt8eMN67vDSSHglk/edit) - +- [Kubernetes architectual roadmap](https://docs.google.com/document/d/1XkjVm4bOeiVkj-Xt1LgoGiqWsBfNozJ51dyI-ljzt1o) 和 [slide](https://docs.google.com/presentation/d/1GpELyzXOGEPY0Y1ft26yMNV19ROKt8eMN67vDSSHglk/edit) \ No newline at end of file diff --git a/guide/index.md b/guide/index.md index 04ec4e4c8..5f3e94514 100644 --- a/guide/index.md +++ b/guide/index.md @@ -1,8 +1,14 @@ -# 用户指南 +# 用户指南概览 + +该章节主要记录 Kubernetes 使用过程中的一些配置技巧和操作,包括: + +- Kubernetes 中基本资源对象的配置 +- 命令行工具的使用 +- 集群安全性管理 +- 如何访问 Kubernetes 集群 +- 如何在 Kubernetes 中开发部署应用 + -该章节主要记录kubernetes使用过程中的一些配置技巧和操作。 -- [配置Pod的liveness和readiness探针](configure-liveness-readiness-probes.md) -- [管理集群中的TLS](managing-tls-in-a-cluster.md)