Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
董宗磊 committed Apr 24, 2019
2 parents e074e3f + 6ecf7ca commit 4744a3c
Show file tree
Hide file tree
Showing 24 changed files with 334 additions and 52 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ build:

.PHONY: lint
lint:
htmlproofer --url-ignore "/localhost/,/172.17.8.101/,/172.20.0.113/,/slideshare.net/,/grpc.io/,/kiali.io/,/condiut.io/,/twitter.com/,/facebook.com/,/medium.com/,/google.com/,/jimmysong.io/,/openfaas.com/,/linkerd.io/,/layer5.io/,/thenewstack.io/,/blog.envoyproxy.io/,/blog.openebs.io/,/k8smeetup.github.io/,/blog.heptio.com/,/apigee.com/,/speakerdeck.com/,/download.svcat.sh/,/blog.fabric8.io/,/blog.heptio.com/,/blog.containership.io/,/blog.mobyproject.org/,/blog.spinnaker.io/,/coscale.com/,/zh.wikipedia.org/" $(BOOK_OUTPUT)
htmlproofer --url-ignore "/localhost/,/172.17.8.101/,/172.20.0.113/,/slideshare.net/,/grpc.io/,/kiali.io/,/condiut.io/,/twitter.com/,/facebook.com/,/medium.com/,/google.com/,/jimmysong.io/,/openfaas.com/,/linkerd.io/,/layer5.io/,/thenewstack.io/,/blog.envoyproxy.io/,/blog.openebs.io/,/k8smeetup.github.io/,/blog.heptio.com/,/apigee.com/,/speakerdeck.com/,/download.svcat.sh/,/blog.fabric8.io/,/blog.heptio.com/,/blog.containership.io/,/blog.mobyproject.org/,/blog.spinnaker.io/,/coscale.com/,/zh.wikipedia.org/,/labs.play-with-k8s.com/,/cilium.readthedocs.io/,/azure.microsoft.com/,/storageos.com/,/openid.net/,/prometheus.io/,/coreos.com/,/openwhisk.incubator.apache.org/" $(BOOK_OUTPUT)

.PHONY: serve
serve:
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kubernetes Handbook——Kubernetes中文指南/云原生应用架构实践手册

[Kubernetes](http://kubernetes.io)是Google基于[Borg](https://research.google.com/pubs/pub43438.html)开源的容器编排调度引擎,作为[CNCF](http://cncf.io)(Cloud Native Computing Foundation)最重要的组件之一,它的目标不仅仅是一个编排系统,而是提供一个规范,可以让你来描述集群的架构,定义服务的最终状态,Kubernetes可以帮你将系统自动地达到和维持在这个状态。Kubernetes作为云原生应用的基石,相当于一个云操作系统,其重要性不言而喻。
[Kubernetes](http://kubernetes.io)是Google基于[Borg](https://research.google.com/pubs/pub43438.html)开源的容器编排调度引擎,作为[CNCF](https://cncf.io)(Cloud Native Computing Foundation)最重要的组件之一,它的目标不仅仅是一个编排系统,而是提供一个规范,可以让你来描述集群的架构,定义服务的最终状态,Kubernetes可以帮你将系统自动地达到和维持在这个状态。Kubernetes作为云原生应用的基石,相当于一个云操作系统,其重要性不言而喻。

## 关于本书

Expand Down Expand Up @@ -43,7 +43,7 @@
- 按照[说明](https://github.com/rootsongjc/kubernetes-handbook/blob/master/CODE_OF_CONDUCT.md)自行编译成离线版本
- Fork 一份添加你自己的笔记自行维护,有余力者可以一起参与进来

**注意:本书中的 Service Mesh 相关内容已不再维护,请转至 [istio-handbook](https://jimmysong.io/istio-handbook) 浏览。**
**注意:本书中的 Service Mesh 相关内容已不再维护,请转至 [istio-handbook](http://www.servicemesher.com/istio-handbook) 浏览。**

## 快速开始

Expand All @@ -63,10 +63,10 @@

## 社区&读者交流

- **微信群**:K8S&Cloud Native实战,扫描我的微信二维码,[Jimmy Song](http://jimmysong.io/about)或直接搜索微信号*jimmysong*后拉您入群,请增加备注(姓名-公司/学校/博客/社区/研究所/机构等
- **微信群**:K8S&Cloud Native实战,扫描我的微信二维码,[Jimmy Song](http://jimmysong.io/about)添加时请备注姓名-公司/学校/组织/机构等。
- **Slack**:全球中文用户可以加入[Kubernetes官方Slack](http://slack.k8s.io)中文频道**cn-users channel**
- **知乎专栏**[云原生应用架构](https://zhuanlan.zhihu.com/cloud-native)
- **微信公众号**:扫描下面的二维码关注Jimmy Song 的<u>个人微信公众号</u>CloudNativeGo(云原生应用架构)
- **与我联系**:扫描下面的二维码关注Jimmy Song 的<u>个人微信公众号</u>CloudNativeGo(云原生应用架构)

<p align="center">
<img src="https://github.com/rootsongjc/kubernetes-handbook/blob/master/images/cloud-native-go-wechat-qr-code.jpg?raw=true" alt="云原生应用架构微信公众号二维码"/>
Expand Down
10 changes: 8 additions & 2 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@
## 云原生

* [云原生(Cloud Native)的定义](cloud-native/cloud-native-definition.md)
* [CNCF - 云原生计算基金会简介](cloud-native/cncf.md)
* [CNCF章程](cloud-native/cncf-charter.md)
* [云原生的设计哲学](cloud-native/cloud-native-philosophy.md)
* [Play with Kubernetes](cloud-native/play-with-kubernetes.md)
* [快速部署一个云原生本地实验环境](cloud-native/cloud-native-local-quick-start.md)
Expand Down Expand Up @@ -254,6 +252,14 @@
* [社区贡献](develop/contribute.md)
* [Minikube](develop/minikube.md)

## CNCF(云原生计算基金会)

* [CNCF - 云原生计算基金会简介](cloud-native/cncf.md)
* [CNCF章程](cloud-native/cncf-charter.md)
* [CNCF特别兴趣小组(SIG)说明](cloud-native/cncf-sig.md)
* [开源项目加入CNCF Sandbox的要求](cloud-native/cncf-sandbox-criteria.md)
* [CNCF中的项目治理](cloud-native/cncf-project-governing.md)

## 附录

* [附录说明](appendix/index.md)
Expand Down
2 changes: 1 addition & 1 deletion appendix/kubernetes-1.7-changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,6 @@

**弃用**

- 第三方资源(TPR)已被自定义资源定义(Custom Resource Definitions,CRD)取代,后者提供了一个更清晰的API,并解决了TPR测试期间引发的问题和案例。如果您使用TPR测试版功能,则建议您[迁移](https://kubernetes.io/docs/tasks/access-kubernetes-api/migrate-third-party-resource/),因为它将在Kubernetes 1.8中被移除。
- 第三方资源(TPR)已被自定义资源定义(Custom Resource Definitions,CRD)取代,后者提供了一个更清晰的API,并解决了TPR测试期间引发的问题和案例。如果您使用TPR测试版功能,则建议您迁移,因为它将在Kubernetes 1.8中被移除。

以上是Kubernetes1.7中的主要新特性,详细更新文档请查看[Changelog](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.7.md)
2 changes: 1 addition & 1 deletion appendix/kubernetes-1.9-changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

## Workloads API GA

[apps/v1 Workloads API](https://kubernetes.io/docs/reference/workloads-18-19/)成为GA(General Availability),且默认启用。 Apps Workloads API将**DaemonSet****Deployment****ReplicaSet****StatefulSet** API组合在一起,作为Kubernetes中长时间运行的无状态和有状态工作负载的基础。
apps/v1 Workloads API成为GA(General Availability),且默认启用。 Apps Workloads API将**DaemonSet****Deployment****ReplicaSet****StatefulSet** API组合在一起,作为Kubernetes中长时间运行的无状态和有状态工作负载的基础。

Deployment和ReplicaSet是Kubernetes中最常用的两个对象,经过一年多的实际使用和反馈后,现在已经趋于稳定。[SIG apps](https://github.com/kubernetes/community/tree/master/sig-apps)同时将这些经验应用到另外的两个对象上,使得DaemonSet和StatefulSet也能顺利毕业走向成熟。v1(GA)意味着已经生产可用,并保证长期的向后兼容。

Expand Down
1 change: 0 additions & 1 deletion appendix/material-share.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ Kubernetes和Cloud Native相关网站、专栏、博客等。
### 网站与专栏

- [thenewstack.io](https://thenewstack.io/)
- [k8sport.org](http://k8sport.org/)
- [giantswarm blog](https://blog.giantswarm.io/)
- [k8smeetup.com](http://www.k8smeetup.com)
- [dockone.io](http://www.dockone.io)
Expand Down
101 changes: 101 additions & 0 deletions cloud-native/cncf-project-governing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
## CNCF中的项目治理

CNCF 根据“[鸿沟理论](https://www.jianshu.com/p/a305fa93580b)”将其托管的项目分成三个成熟阶段,并设置了项目晋级到更高阶段的标准。

> [鸿沟理论](https://www.jianshu.com/p/a305fa93580b)”是由Geoffrey A. Moore提出的高科技产品的市场营销理论。新技术要想跨越鸿沟,必须能够实现一些跨越式的发展,**拥有某一些以前不可能实现的功能**,具有某种内在价值并能够**赢得非技术人员的**青睐。
![CNCF 项目的成熟度分类](https://ws1.sinaimg.cn/large/006tNc79ly1g1yzc5xre6j30o20a8q3t.jpg)

目前处于沙箱、孵化中、已毕业项目的数量比例为5:16:13,详见 <https://cncf.io/projects>。其中沙箱(sandbox)项目因为其处于早期阶段并没有直接在上面的链接页面中列出,而是一个单独的 [Sandbox](https://www.cncf.io/sandbox-projects/) 页面,因为 CNCF 为 sandbox 阶段的项目会谨慎背书。

## 纳入CNCF开源版图的项目需要符合其对云原生的定义

CNCF 中托管的开源项目要符合云原生定义:

- 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。**云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API**
- 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
- 云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。

## 项目运作流程

下图演示了开源项目加入 CNCF 后的整个运作流程。

![CNCF中的项目运作](https://ws4.sinaimg.cn/large/006tNc79ly1g1yz80ag98j31cs0n2gr7.jpg)

## 开源项目如何加入 CNCF

1. 开源项目所支持的公司成为 CNCF 会员
2. 开源项目满足 CNCF 的要求(见后文)
3. 在 GitHub 上提交[proposal](https://github.com/cncf/toc/issues/113)(GitHub Issue)列举项目介绍、现状、目标、license、用户与社区等
4. 由 Chris Aniszczyk 安排该项目在某个TOC双月会议上介绍给 TOC 成员
5. 1.TOC 会将开源项目指定到某个 [SIG](cncf-sig.md)
6. 项目获得两个TOC成员的赞成可进入[sandbox](https://github.com/cncf/toc/blob/master/process/sandbox.md)(也可以直接获得2/3多数TOC 投票进入Incubating状态)
7. 知识产权转移给 CNCF
8. CNCF 安排博客撰写、PR等
9. 每年一次评审,晋升到 incubating需要2/3的 TOC 成员投票赞成;至少3家用户成功在生产上使用;通过TOC的尽职调查;贡献者数量健康稳定
10. Sandbox 中的项目没有时效性质,可能永远都无法进入incubating 状态,被CNCF谨慎宣传

## CNCF 开源项目成熟度演进

CNCF 的开源项目遵循如下图所示的成熟度演进。

![CNCF项目成熟度级别](../images/cncf-graduation-criteria-v2.jpg)

- 加入Sandbox只需要2个TOC成员赞成
- 成熟一点的项目可以直接进入incubating阶段,但是 CNCF 会控制不同阶段的项目比例
- 晋级到Incubating或Graduated 需要至少2/3的 TOC成员(6名或以上)投票赞成
- 每年将评审一次

## 开源项目加入 CNCF 的最低要求(Sandbox)

一个开源项目要想加入 CNCF 必须满足以下要求:

- 项目名称必须在 CNCF 中唯一

- 项目描述(用途、价值、起源、历史)

- 与 CNCF 章程一致的声明

- 来自 TOC 的 sponsor(项目辅导)

- license(默认为 Apache 2)

- 源码控制(Github)

- 网站(英文)

- 外部依赖(包括 license)

- 成熟度模型评估(参考 [开源项目加入CNCF Sandbox的要求](cncf-sandbox-criteria.md)
- 创始 committer(贡献项目的时长)
- 基础设施需求(CI/CNCF集群)
- 沟通渠道(slack、irc、邮件列表)
- issue 追踪(GitHub)
- 发布方法和机制
- 社交媒体账号
- 社区规模和已有的赞助商
- svg 格式的项目 logo

## 由 Sandbox 升级到 Incubating 的要求

- 通过 TOC 的[尽职调查](https://github.com/cncf/toc/blob/master/process/due-diligence-guidelines.md)
- 至少有 3 个独立的终端用户在在生产上使用该项目:一般在项目的官网列举实际用户
- 足够健康数量的贡献者:项目的 GitHub 上有明确的 committer 权限划分、职责说明及成员列表,TOC 将根据项目大小来确认多少committer才算健康
- **展示项目在持续进行、良好的发布节奏、贡献频率十分重要**


## 由Incubating升级到Graduated的要求

- 满足 Sandbox 和 Incubating 的所有要求
- **至少有来自两个组织的贡献者**
- 明确定义的项目治理及 committer 身份、权限管理
- 接受 CNCF 的[行为准则](https://github.com/cncf/foundation/blob/master/code-of-conduct.md),参考[Prometheus](https://bestpractices.coreinfrastructure.org/en/projects/486)
- 获得CII 最佳实践徽章
- 在项目主库或项目官网有公开的采用者的 logo

参考归档的 Review:https://github.com/cncf/toc/tree/master/reviews

## 参考

- [鸿沟理论 - jianshu.com](https://www.jianshu.com/p/a305fa93580b)
- [CNCF Graduation Criteria v1.2 - github.com](https://github.com/cncf/toc/blob/master/process/graduation_criteria.adoc)
30 changes: 30 additions & 0 deletions cloud-native/cncf-sandbox-criteria.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
## 开源项目加入CNCF Sandbox的要求

[CNCF Project Proposal Process v1.2][CNCF Project Proposal Process v1.2]中指出开源项目要想加入 CNCF 必须满足以下条件:

1. 项目名称必须在 CNCF 中唯一
2. 项目描述(用途、价值、起源、历史)
3. 与 CNCF 章程一致的声明
4. 来自 TOC 的 sponsor(项目辅导)
5. 成熟度模型评估(参考 [CNCF Graduation Criteria](https://github.com/cncf/toc/blob/master/process/project_proposals.adoc)
6. license(默认为 Apache 2)
7. 源码控制(Github)
8. 外部依赖(包括 license)
9. 创始 committer(贡献项目的时长)
10. 基础设施需求(CI/CNCF集群)
11. 沟通渠道(slack、irc、邮件列表)
12. issue 追踪(GitHub)
13. 网站
14. 发布方法和机制
15. 社交媒体账号
16. 社区规模和已有的赞助商
17. svg 格式的项目 logo

### 项目接纳过程

1. 在 TOC 会议上展示提议
2. 项目获得 TOC 2/3 多数投票同意

## 参考

- [CNCF Project Proposal Process v1.2 - github.com](https://github.com/cncf/toc/blob/master/process/project_proposals.adoc)
Loading

0 comments on commit 4744a3c

Please sign in to comment.