pull/437/head
Jimmy Song 2021-03-28 18:44:33 +08:00
parent adf9a667dc
commit 9777d82996
No known key found for this signature in database
GPG Key ID: CBA666E6EF8B2C3A
8 changed files with 94 additions and 63 deletions

View File

@ -8,6 +8,7 @@
* [云原生Cloud Native的定义](cloud-native/cloud-native-definition.md) * [云原生Cloud Native的定义](cloud-native/cloud-native-definition.md)
* [云原生的设计哲学](cloud-native/cloud-native-philosophy.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/kubernetes-and-cloud-native-app-overview.md)
* [云原生应用之路 —— 从 Kubernetes 到 Cloud Native](cloud-native/from-kubernetes-to-cloud-native.md) * [云原生应用之路 —— 从 Kubernetes 到 Cloud Native](cloud-native/from-kubernetes-to-cloud-native.md)
* [定义云原生应用](cloud-native/define-cloud-native-app.md) * [定义云原生应用](cloud-native/define-cloud-native-app.md)
@ -102,7 +103,7 @@
## 用户指南 ## 用户指南
* [用户指南](guide/index.md) * [用户指南概览](guide/index.md)
* [资源对象配置](guide/resource-configuration.md) * [资源对象配置](guide/resource-configuration.md)
* [配置 Pod 的 liveness 和 readiness 探针](guide/configure-liveness-readiness-probes.md) * [配置 Pod 的 liveness 和 readiness 探针](guide/configure-liveness-readiness-probes.md)
* [配置 Pod 的 Service Account](guide/configure-pod-service-account.md) * [配置 Pod 的 Service Account](guide/configure-pod-service-account.md)
@ -272,6 +273,9 @@
* [CNCF 中的项目治理](cloud-native/cncf-project-governing.md) * [CNCF 中的项目治理](cloud-native/cncf-project-governing.md)
* [CNCF Ambassador](cloud-native/cncf-ambassador.md) * [CNCF Ambassador](cloud-native/cncf-ambassador.md)
* [云原生社区](cloud-native/cnc.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 年度报告解读](appendix/cncf-annual-report.md)
* [CNCF 2018 年年度报告解读](appendix/cncf-annual-report-2018.md) * [CNCF 2018 年年度报告解读](appendix/cncf-annual-report-2018.md)
* [CNCF 2020 年年度报告解读](appendix/cncf-annual-report-2020.md) * [CNCF 2020 年年度报告解读](appendix/cncf-annual-report-2020.md)
* [Kubernetes 认证服务提供商KCSP说明](appendix/about-kcsp.md)
* [认证 Kubernetes 管理员CKA说明](appendix/about-cka-candidate.md)

View File

@ -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 Final Exam
ps 个人觉得这个课程可以不用学, 直接看文档就行了 。 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 个人觉得这个课程太贵了,为了省点钱 仔细研究下文档就行了 。 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) ![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/)

View File

@ -1,4 +1,4 @@
# Kubernetes认证服务提供商KCSP说明 # 认证Kubernetes服务提供商KCSP说明
云原生计算基金会CNCF负责维护并整合Kubernetes和Prometheus之类的开源技术今天它在开源峰会上宣布了22多家Kubernetes认证服务提供商KCSP的创始成员名单。KCSP是通过初审的企业组织它们在帮助企业成功地采用Kubernetes方面有着丰富经验。此外专业人员个人现在可以注册报名新的认证Kubernetes管理员CKA计划和[考试](https://www.cncf.io/certification/expert/)。 云原生计算基金会CNCF负责维护并整合Kubernetes和Prometheus之类的开源技术今天它在开源峰会上宣布了22多家Kubernetes认证服务提供商KCSP的创始成员名单。KCSP是通过初审的企业组织它们在帮助企业成功地采用Kubernetes方面有着丰富经验。此外专业人员个人现在可以注册报名新的认证Kubernetes管理员CKA计划和[考试](https://www.cncf.io/certification/expert/)。
@ -22,7 +22,7 @@ KCSP的创始成员包括CNCF和Linux基金会的下列成员
- 三星SDS - 三星SDS
- Stackpointcloud - Stackpointcloud
- Supergiant - Supergiant
- Treasure Data - Treasure Data
KCSP计划的适用对象是通过初审的服务提供商它们为踏上Kubernetes之旅的公司企业提供Kubernetes支持、咨询、专业服务和培训。KCSP计划确保企业得到它们在寻求的支持从而比以前更迅速、更高效地部署新的应用程序同时确保有一家值得信赖、经过审查的合作伙伴可以支持其生产和运营方面的要求。 KCSP计划的适用对象是通过初审的服务提供商它们为踏上Kubernetes之旅的公司企业提供Kubernetes支持、咨询、专业服务和培训。KCSP计划确保企业得到它们在寻求的支持从而比以前更迅速、更高效地部署新的应用程序同时确保有一家值得信赖、经过审查的合作伙伴可以支持其生产和运营方面的要求。
想成为KCSP**需要至少三名工程师通过认证Kubernetes管理员** [CKA](https://www.cncf.io/certification/expert/) 考试能够证明在Kubernetes社区从事活动包括积极贡献代码以及支持企业最终用户的商业模式包括将工程师派驻客户现场。 想成为KCSP**需要至少三名工程师通过认证Kubernetes管理员** [CKA](https://www.cncf.io/certification/expert/) 考试能够证明在Kubernetes社区从事活动包括积极贡献代码以及支持企业最终用户的商业模式包括将工程师派驻客户现场。

View File

@ -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-compose创建应用](https://jimmysong.io/docker-handbook/docs/docker_compose)
## 集群管理## ## 集群管理
我们使用docker内置的swarm来管理docker集群。 我们使用docker内置的swarm来管理docker集群。

View File

@ -0,0 +1,3 @@
# 认证及培训
随着云原生生态的不断发展壮大,业界缺乏相应的人才储备及知识积累,各种认证及培训则如雨后春笋般出现。

View File

@ -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)

View File

@ -1,87 +1,85 @@
# Kubernetes架构 # Kubernetes 架构
Kubernetes最初源于谷歌内部的Borg提供了面向应用的容器集群部署和管理系统。Kubernetes的目标旨在消除编排物理/虚拟计算网络和存储基础设施的负担并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础平台用于构建定制化的workflows 和更高级的自动化任务。 Kubernetes 最初源于谷歌内部的 Borg提供了面向应用的容器集群部署和管理系统。Kubernetes 的目标旨在消除编排物理 / 虚拟计算网络和存储基础设施的负担并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的 workflows 和更高级的自动化任务。
Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。 Kubernetes 具备完善的集群管理能力包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。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存储中 * BorgMaster 是整个集群的大脑,负责维护整个集群的状态,并将数据持久化到 Paxos 存储中;
* Scheduer负责任务的调度根据应用的特点将其调度到具体的机器上去 * Scheduer 负责任务的调度,根据应用的特点将其调度到具体的机器上去;
* Borglet负责真正运行任务在容器中 * Borglet 负责真正运行任务(在容器中);
* borgcfg是Borg的命令行工具用于跟Borg系统交互一般通过一个配置文件来提交任务。 * 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保存了整个集群的状态 - etcd 保存了整个集群的状态;
- apiserver提供了资源操作的唯一入口并提供认证、授权、访问控制、API注册和发现等机制 - apiserver 提供了资源操作的唯一入口并提供认证、授权、访问控制、API 注册和发现等机制;
- controller manager负责维护集群的状态比如故障检测、自动扩展、滚动更新等 - controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
- scheduler负责资源的调度按照预定的调度策略将Pod调度到相应的机器上 - scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;
- kubelet负责维护容器的生命周期同时也负责VolumeCSI和网络CNI的管理 - kubelet 负责维护容器的生命周期,同时也负责 VolumeCSI和网络CNI的管理
- Container runtime负责镜像管理以及Pod和容器的真正运行CRI - Container runtime 负责镜像管理以及 Pod 和容器的真正运行CRI
- kube-proxy负责为Service提供cluster内部的服务发现和负载均衡 - kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡;
除了核心组件还有一些推荐的插件其中有的已经成为CNCF中的托管项目 除了核心组件,还有一些推荐的插件,其中有的已经成为 CNCF 中的托管项目:
- CoreDNS负责为整个集群提供DNS服务 - CoreDNS 负责为整个集群提供 DNS 服务
- Ingress Controller为服务提供外网入口 - Ingress Controller 为服务提供外网入口
- Prometheus提供资源监控 - Prometheus 提供资源监控
- Dashboard提供GUI - Dashboard 提供 GUI
- Federation提供跨可用区的集群 - 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构建高层的应用对内提供插件式应用执行环境 * 核心层Kubernetes 最核心的功能,对外提供 API 构建高层的应用,对内提供插件式应用执行环境
* 应用层部署无状态应用、有状态应用、批处理任务、集群应用等和路由服务发现、DNS解析等、Service Mesh部分位于应用层 * 应用层部署无状态应用、有状态应用、批处理任务、集群应用等和路由服务发现、DNS 解析等、Service Mesh部分位于应用层
* 管理层系统度量如基础设施、容器和网络的度量自动化如自动扩展、动态Provision等以及策略管理RBAC、Quota、PSP、NetworkPolicy等、Service Mesh部分位于管理层 * 管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态 Provision 以及策略管理RBAC、Quota、PSP、NetworkPolicy 、Service Mesh部分位于管理层
* 接口层kubectl命令行工具、客户端SDK以及集群联邦 * 接口层kubectl 命令行工具、客户端 SDK 以及集群联邦
* 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴 * 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴
* Kubernetes外部日志、监控、配置管理、CI/CD、Workflow、FaaS、OTS应用、ChatOps、GitOps、SecOps等 * Kubernetes 外部日志、监控、配置管理、CI/CD、Workflow、FaaS、OTS 应用、ChatOps、GitOps、SecOps
* Kubernetes内部[CRI](cri.md)、[CNI](cni.md)、[CSI](csi.md)、镜像仓库、Cloud Provider、集群自身的配置和管理等 * 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) - [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) - [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: 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)

View File

@ -1,8 +1,14 @@
# 用户指南 # 用户指南概览
该章节主要记录 Kubernetes 使用过程中的一些配置技巧和操作,包括:
- Kubernetes 中基本资源对象的配置
- 命令行工具的使用
- 集群安全性管理
- 如何访问 Kubernetes 集群
- 如何在 Kubernetes 中开发部署应用
该章节主要记录kubernetes使用过程中的一些配置技巧和操作。
- [配置Pod的liveness和readiness探针](configure-liveness-readiness-probes.md)
- [管理集群中的TLS](managing-tls-in-a-cluster.md)