From 6c8ebc16e257b9627f1af7f025d3f27c1d34b772 Mon Sep 17 00:00:00 2001 From: Jimmy Song Date: Wed, 11 Oct 2017 23:44:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dyaml=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 18 +++++++++--------- concepts/objects.md | 16 +++++++++++++--- practice/app-log-collection.md | 2 +- practice/dashboard-addon-installation.md | 2 +- practice/efk-addon-installation.md | 2 +- practice/heapster-addon-installation.md | 2 +- practice/kubedns-addon-installation.md | 2 +- practice/monitor.md | 2 +- practice/service-rolling-update.md | 2 +- practice/traefik-ingress-installation.md | 2 +- practice/using-ceph-for-persistent-storage.md | 2 +- .../using-glusterfs-for-persistent-storage.md | 2 +- ...prometheus-to-monitor-kuberentes-cluster.md | 2 +- 13 files changed, 33 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index e6c0e61bc..261a91cfc 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,24 @@ # Kubernetes Handbook -[Kubernetes](http://kubernetes.io) 是 Google 基于 [Borg](https://research.google.com/pubs/pub43438.html) 开源的容器编排调度引擎,作为 [CNCF](http://cncf.io)(Cloud Native Computing Foundation)最重要的组件之一,它的目标不仅仅是一个编排系统,而是提供一个规范,可以让你来描述集群的架构,定义服务的最终状态,它将自动得将系统达到和维持在这个状态。 +[Kubernetes](http://kubernetes.io)是Google基于[Borg](https://research.google.com/pubs/pub43438.html)开源的容器编排调度引擎,作为[CNCF](http://cncf.io)(Cloud Native Computing Foundation)最重要的组件之一,它的目标不仅仅是一个编排系统,而是提供一个规范,可以让你来描述集群的架构,定义服务的最终状态,kubernetes可以帮你将系统自动得达到和维持在这个状态。 -本书记录了本人从零开始学习和使用 Kubernetes 的心路历程,着重于经验分享和总结,同时也会有相关的概念解析,希望能够帮助大家少踩坑,少走弯路。 +本书记录了本人从零开始学习和使用Kubernetes的心路历程,着重于经验分享和总结,同时也会有相关的概念解析,希望能够帮助大家少踩坑,少走弯路。 -在写作本书时,安装的所有组件、所用示例和操作等皆基于 **Kubernetes1.6.0** 版本。 +在写作本书时,安装的所有组件、所用示例和操作等皆基于**Kubernetes1.6.0** 版本。 [文章目录](SUMMARY.md) GitHub 地址:https://github.com/rootsongjc/kubernetes-handbook -Gitbook 在线浏览:http://jimmysong.io/kubernetes-handbook/ +Gitbook 在线浏览:https://jimmysong.io/kubernetes-handbook/ ## 如何使用本书 **在线浏览** -访问 http://jimmysong.io/kubernetes-handbook/ +访问 https://jimmysong.io/kubernetes-handbook/ -**注意:文中涉及的配置文件和代码链接在网页中将无法访问,请下载 github 源码后,在 Markdown 编辑器中打开,点击链接将跳转到你的本地目录,推荐使用 [typora](www.typorai.o),或者直接登录 [github](https://github.com/rootsongjc/kubernetes-handbook) 查看。** +**注意:文中涉及的配置文件和代码链接在网页中将无法访问,请下载GitHub源码后,在Markdown编辑器中打开,点击链接将跳转到你的本地目录,推荐使用[typora](www.typorai.o),或者直接登录[github](https://github.com/rootsongjc/kubernetes-handbook) 查看。** **本地查看** @@ -30,7 +30,7 @@ Gitbook 在线浏览:http://jimmysong.io/kubernetes-handbook/ **下载 PDF/ePub/Mobi 格式文档本地查看** -访问 [gitbook](https://www.gitbook.com/book/rootsongjc/kubernetes-handbook/details) 可以看到下载地址,可以下载根据最新文档生成的 **PDF/ePub/Mobi** 格式文档(文档的注脚中注明了更新时间),同时也可以直接在 gitbook 中阅读,不过 gitbook 不太稳定打开速度较慢,建议大家直接在 http://jimmysong.io/kubernetes-handbook/ 浏览。 +访问 [gitbook](https://www.gitbook.com/book/rootsongjc/kubernetes-handbook/details) 可以看到下载地址,可以下载根据最新文档生成的 **PDF/ePub/Mobi** 格式文档(文档的注脚中注明了更新时间),同时也可以直接在 gitbook 中阅读,不过 gitbook 不太稳定打开速度较慢,建议大家直接在 https://jimmysong.io/kubernetes-handbook/ 浏览。 **生成 pdf** @@ -70,11 +70,11 @@ pandoc --latex-engine=xelatex --template=pm-template input.md -o output.pdf ### 提 issue -如果你发现文档中的错误,或者有好的建议,不要犹豫,欢迎 [提交issue](https://github.com/rootsongjc/kubernetes-handbook/issues/new)。 +如果你发现文档中的错误,或者有好的建议、不明白的问题、不要犹豫,欢迎[提交issue](https://github.com/rootsongjc/kubernetes-handbook/issues/new)。 ### 发起 Pull Request -当你发现文章中明确的错误或者逻辑问题,在你自己的 fork 的分支中,创建一个新的 branch,修改错误,push 到你的 branch,然后在 [提交issue](https://github.com/rootsongjc/kubernetes-handbook/issues/new) 后直接发起 Pull Request。 +当你发现文章中明确的错误或者逻辑问题,在你自己的fork的分支中,创建一个新的branch,修改错误,push 到你的branch,然后在[提交issue](https://github.com/rootsongjc/kubernetes-handbook/issues/new) 后直接发起Pull Request。 ### 贡献文档 diff --git a/concepts/objects.md b/concepts/objects.md index 0c5c392a3..fc0f334cb 100644 --- a/concepts/objects.md +++ b/concepts/objects.md @@ -7,7 +7,7 @@ - Namespace - Service - Volume -- Persistent Volume +- PersistentVolume - Deployment - Secret - StatefulSet @@ -18,13 +18,23 @@ - Job - CronJob - SecurityContext -- Resource Quota -- Horizontal Pod Autoscaling +- ResourceQuota +- LimitRange +- HorizontalPodAutoscaling - Ingress - ConfigMap - Label - ThirdPartyResources +我将它们简单的分类为以下几种资源对象: + +| 类别 | 名称 | +| :--- | ---------------------------------------- | +| 资源对象 | Pod、ReplicaSet、ReplicationController、Deployment、StatefulSet、DaemonSet、Job、CronJob、HorizontalPodAutoscaling | +| 配置对象 | Node、Namespace、Service、Secret、ConfigMap、Ingress、Label、ThirdPartyResource、 ServiceAccount | +| 存储对象 | Volume、Persistent Volume | +| 策略对象 | SecurityContext、ResourceQuota、LimitRange | + ## 理解 kubernetes 中的对象 在 Kubernetes 系统中,*Kubernetes 对象* 是持久化的条目。Kubernetes 使用这些条目去表示整个集群的状态。特别地,它们描述了如下信息: diff --git a/practice/app-log-collection.md b/practice/app-log-collection.md index f5d8ffe4e..20550cc98 100644 --- a/practice/app-log-collection.md +++ b/practice/app-log-collection.md @@ -27,7 +27,7 @@ Kubernetes官方提供了EFK的日志收集解决方案,但是这种方案并 该方案在扩展性、个性化、部署和后期维护方面都能做到均衡,因此选择该方案。 -![logstash日志收集架构图](../images/filebeat-log-collector.png) +![filebeat日志收集架构图](../images/filebeat-log-collector.png) 我们创建了自己的filebeat镜像。创建过程和使用方式见https://github.com/rootsongjc/docker-images diff --git a/practice/dashboard-addon-installation.md b/practice/dashboard-addon-installation.md index 9e3d740b9..57064f6d0 100644 --- a/practice/dashboard-addon-installation.md +++ b/practice/dashboard-addon-installation.md @@ -9,7 +9,7 @@ $ ls *.yaml dashboard-controller.yaml dashboard-service.yaml dashboard-rbac.yaml ``` -已经修改好的 yaml 文件见:[dashboard](../manifests/dashboard) +已经修改好的 yaml 文件见:[../manifests/dashboard](https://github.com/rootsongjc/kubernetes-handbook/blob/master/manifests/dashboard) 由于 `kube-apiserver` 启用了 `RBAC` 授权,而官方源码目录的 `dashboard-controller.yaml` 没有定义授权的 ServiceAccount,所以后续访问 `kube-apiserver` 的 API 时会被拒绝,web中提示: diff --git a/practice/efk-addon-installation.md b/practice/efk-addon-installation.md index 02d4e3257..61f89e24b 100644 --- a/practice/efk-addon-installation.md +++ b/practice/efk-addon-installation.md @@ -11,7 +11,7 @@ es-controller.yaml es-service.yaml fluentd-es-ds.yaml kibana-controller.yaml 同样EFK服务也需要一个`efk-rbac.yaml`文件,配置serviceaccount为`efk`。 -已经修改好的 yaml 文件见:[EFK](../manifests/EFK) +已经修改好的 yaml 文件见:[../manifests/EFK](https://github.com/rootsongjc/kubernetes-handbook/blob/master/manifests/EFK) ## 配置 es-controller.yaml diff --git a/practice/heapster-addon-installation.md b/practice/heapster-addon-installation.md index 4910ddf56..fdfa0cee2 100644 --- a/practice/heapster-addon-installation.md +++ b/practice/heapster-addon-installation.md @@ -18,7 +18,7 @@ grafana-deployment.yaml grafana-service.yaml heapster-deployment.yaml heapste 我们自己创建了heapster的rbac配置`heapster-rbac.yaml`。 -已经修改好的 yaml 文件见:[heapster](../manifests/heapster/) +已经修改好的 yaml 文件见:[../manifests/heapster](https://github.com/rootsongjc/kubernetes-handbook/blob/master/manifests/heapster/) ## 配置 grafana-deployment diff --git a/practice/kubedns-addon-installation.md b/practice/kubedns-addon-installation.md index a905c84ec..ea605a515 100644 --- a/practice/kubedns-addon-installation.md +++ b/practice/kubedns-addon-installation.md @@ -32,7 +32,7 @@ kubedns-controller.yaml kubedns-svc.yaml ``` -已经修改好的 yaml 文件见:[dns](../manifests/kubedns) +已经修改好的 yaml 文件见:[../manifests/dns](https://github.com/rootsongjc/kubernetes-handbook/blob/master/manifests/kubedns) ## 系统预定义的 RoleBinding diff --git a/practice/monitor.md b/practice/monitor.md index e03338798..5804c9031 100644 --- a/practice/monitor.md +++ b/practice/monitor.md @@ -196,7 +196,7 @@ Kubernetes中应用的监控架构如图: 我们在kubernetes集群上使用standalone方式安装,详情参考[Installing Weave Scope](https://www.weave.works/docs/scope/latest/installing/#k8s)。 -使用[scope.yaml](../manifests/weave/scope.yaml)文件安装scope,该服务安装在`kube-system` namespace下。 +使用[scope.yaml](https://github.com/rootsongjc/kubernetes-handbook/blob/master/manifests/weave/scope.yaml)文件安装scope,该服务安装在`kube-system` namespace下。 ```Bash $ kubectl apply -f scope.yaml diff --git a/practice/service-rolling-update.md b/practice/service-rolling-update.md index 2fc789703..a40fb1376 100644 --- a/practice/service-rolling-update.md +++ b/practice/service-rolling-update.md @@ -38,7 +38,7 @@ Deployment同样为Kubernetes的一个核心内容,主要职责同样是为了 我们来创建一个特别简单的web服务,当你访问网页时,将输出一句版本信息。通过区分这句版本信息输出我们就可以断定升级是否完成。 -所有配置和代码见[manifests/test/rolling-update-test](manifests/test/rolling-update-test)目录。 +所有配置和代码见[../manifests/test/rolling-update-test](https://github.com/rootsongjc/kubernetes-handbook/blob/master/manifests/test/rolling-update-test)目录。 **Web服务的代码main.go** diff --git a/practice/traefik-ingress-installation.md b/practice/traefik-ingress-installation.md index d94dd5cfa..050d0f52d 100644 --- a/practice/traefik-ingress-installation.md +++ b/practice/traefik-ingress-installation.md @@ -18,7 +18,7 @@ Ingress Controller 实质上可以理解为是个监视器,Ingress Controller [Traefik](https://traefik.io/)是一款开源的反向代理与负载均衡工具。它最大的优点是能够与常见的微服务系统直接整合,可以实现自动化动态配置。目前支持Docker, Swarm, Mesos/Marathon, Mesos, Kubernetes, Consul, Etcd, Zookeeper, BoltDB, Rest API等等后端模型。 -以下配置文件可以在[kubernetes-handbook](https://github.com/rootsongjc/kubernetes-handbook)GitHub仓库中的[manifests/traefik-ingress/](../manifests/traefik-ingress/)目录下找到。 +以下配置文件可以在[kubernetes-handbook](https://github.com/rootsongjc/kubernetes-handbook)GitHub仓库中的[../manifests/traefik-ingress/](https://github.com/rootsongjc/kubernetes-handbook/blob/master/manifests/traefik-ingress/)目录下找到。 **创建ingress-rbac.yaml** diff --git a/practice/using-ceph-for-persistent-storage.md b/practice/using-ceph-for-persistent-storage.md index da7546460..afda81c90 100644 --- a/practice/using-ceph-for-persistent-storage.md +++ b/practice/using-ceph-for-persistent-storage.md @@ -1,6 +1,6 @@ # 使用Ceph做持久化存储创建MySQL集群 -本文中用到的 yaml 文件可以在 [../manifests/mariadb-cluster](../manifests/mariadb-cluster) 目录下找到。 +本文中用到的 yaml 文件可以在 [../manifests/mariadb-cluster](https://github.com/rootsongjc/kubernetes-handbook/blob/master/manifests/mariadb-cluster) 目录下找到。 下面我们以部署一个高可用的 MySQL 集群为例,讲解如何使用 Ceph 做数据持久化,其中使用 StorageClass 动态创建 PV,Ceph 集群我们使用 kubernetes 集群外部的已有的集群,我们没有必要重新部署了。 diff --git a/practice/using-glusterfs-for-persistent-storage.md b/practice/using-glusterfs-for-persistent-storage.md index df5e5c20a..18a0c3a24 100644 --- a/practice/using-glusterfs-for-persistent-storage.md +++ b/practice/using-glusterfs-for-persistent-storage.md @@ -137,7 +137,7 @@ $ gluster volume set k8s-volume performance.write-behind-window-size 1024MB 官方的文档见:https://github.com/kubernetes/kubernetes/tree/master/examples/volumes/glusterfs -以下用到的所有yaml和json配置文件可以在[glusterfs](manifests/glusterfs)中找到。注意替换其中私有镜像地址为你自己的镜像地址。 +以下用到的所有yaml和json配置文件可以在[../manifests/glusterfs](https://github.com/rootsongjc/kubernetes-handbook/blob/master/manifests/glusterfs)中找到。注意替换其中私有镜像地址为你自己的镜像地址。 ## kubernetes安装客户端 diff --git a/practice/using-prometheus-to-monitor-kuberentes-cluster.md b/practice/using-prometheus-to-monitor-kuberentes-cluster.md index 5fc65be7f..7f9982707 100644 --- a/practice/using-prometheus-to-monitor-kuberentes-cluster.md +++ b/practice/using-prometheus-to-monitor-kuberentes-cluster.md @@ -1,6 +1,6 @@ # 使用Prometheus监控kubernetes集群 -我们使用 Giantswarm 开源的 [kubernetes-promethues](https://github.com/giantswarm/kubernetes-prometheus) 来监控 kubernetes 集群,所有的 YAML 文件可以在 [manifests/prometheus](../manifests/prometheus) 目录下找到。 +我们使用 Giantswarm 开源的 [kubernetes-promethues](https://github.com/giantswarm/kubernetes-prometheus) 来监控 kubernetes 集群,所有的 YAML 文件可以在 [../manifests/prometheus](https://github.com/rootsongjc/kubernetes-handbook/blob/master/manifests/prometheus) 目录下找到。 需要用到的镜像有: