From 5f30b135f5243fe88e50f28d23e1f97a994d380b Mon Sep 17 00:00:00 2001
From: rootsongjc
Date: Sun, 4 Mar 2018 18:01:35 +0800
Subject: [PATCH] add CNCF introduction
---
appendix/debug-kubernetes-services.html | 17 +-
appendix/docker-best-practice.html | 17 +-
appendix/index.html | 17 +-
appendix/issues.html | 17 +-
appendix/kubernetes-1.7-changelog.html | 17 +-
appendix/kubernetes-1.8-changelog.html | 17 +-
appendix/kubernetes-1.9-changelog.html | 17 +-
...-summary-in-2017-and-outlook-for-2018.html | 17 +-
appendix/kubernetes-changelog.html | 17 +-
appendix/material-share.html | 17 +-
appendix/summary-and-outlook.html | 17 +-
appendix/tricks.html | 17 +-
cloud-native/cncf.html | 3412 +++++++++++++++++
.../from-kubernetes-to-cloud-native.html | 17 +-
...ernetes-and-cloud-native-app-overview.html | 17 +-
cloud-native/play-with-kubernetes.html | 21 +-
concepts/aggregated-api-server.html | 17 +-
concepts/annotation.html | 17 +-
concepts/apiservice.html | 17 +-
concepts/authentication-and-permission.html | 17 +-
concepts/calico.html | 17 +-
concepts/cluster.html | 17 +-
concepts/cni.html | 17 +-
concepts/concepts.html | 17 +-
concepts/configmap-hot-update.html | 17 +-
concepts/configmap.html | 17 +-
concepts/controllers.html | 17 +-
concepts/cri.html | 17 +-
concepts/cronjob.html | 17 +-
concepts/csi.html | 17 +-
concepts/custom-metrics-hpa.html | 17 +-
concepts/custom-resource.html | 17 +-
concepts/daemonset.html | 17 +-
concepts/deployment.html | 17 +-
concepts/etcd.html | 17 +-
concepts/extension.html | 17 +-
concepts/garbage-collection.html | 17 +-
concepts/horizontal-pod-autoscaling.html | 17 +-
concepts/index.html | 17 +-
concepts/ingress.html | 17 +-
concepts/init-containers.html | 17 +-
concepts/job.html | 17 +-
concepts/label.html | 17 +-
concepts/namespace.html | 17 +-
concepts/network-policy.html | 17 +-
concepts/networking.html | 17 +-
concepts/node.html | 17 +-
concepts/objects.html | 17 +-
concepts/open-interfaces.html | 17 +-
concepts/persistent-volume.html | 17 +-
concepts/pod-disruption-budget.html | 17 +-
concepts/pod-hook.html | 17 +-
concepts/pod-lifecycle.html | 17 +-
concepts/pod-overview.html | 17 +-
concepts/pod-preset.html | 17 +-
concepts/pod-security-policy.html | 17 +-
concepts/pod-state-and-lifecycle.html | 17 +-
concepts/pod.html | 17 +-
concepts/rbac.html | 17 +-
concepts/replicaset.html | 17 +-
concepts/secret.html | 17 +-
concepts/service-discovery.html | 17 +-
concepts/service.html | 17 +-
concepts/serviceaccount.html | 17 +-
concepts/statefulset.html | 17 +-
concepts/storage.html | 17 +-
concepts/storageclass.html | 17 +-
concepts/taint-and-toleration.html | 17 +-
concepts/traefik-ingress-controller.html | 17 +-
concepts/volume.html | 17 +-
develop/advance-developer.html | 17 +-
develop/client-go-sample.html | 17 +-
develop/contribute.html | 17 +-
develop/developing-environment.html | 17 +-
develop/index.html | 17 +-
develop/minikube.html | 17 +-
develop/operator.html | 17 +-
develop/sigs-and-working-group.html | 17 +-
develop/testing.html | 17 +-
...agrant-and-virtualbox-for-development.html | 17 +-
guide/access-cluster.html | 17 +-
guide/access-kubernetes-cluster.html | 17 +-
...etes-pods-from-outside-of-the-cluster.html | 17 +-
...plication-development-deployment-flow.html | 17 +-
guide/auth-with-kubeconfig-or-token.html | 17 +-
...thenticate-across-clusters-kubeconfig.html | 17 +-
guide/authentication.html | 17 +-
...cabin-mobile-dashboard-for-kubernetes.html | 17 +-
guide/cluster-security-management.html | 17 +-
guide/command-usage.html | 17 +-
.../configure-liveness-readiness-probes.html | 17 +-
guide/configure-pod-service-account.html | 17 +-
...nnecting-to-applications-port-forward.html | 17 +-
guide/deploy-applications-in-kubernetes.html | 17 +-
guide/docker-cli-to-kubectl.html | 17 +-
guide/index.html | 17 +-
guide/ip-masq-agent.html | 17 +-
guide/kubectl-cheatsheet.html | 17 +-
...ctl-user-authentication-authorization.html | 17 +-
.../kubelet-authentication-authorization.html | 17 +-
guide/kubernator-kubernetes-ui.html | 17 +-
guide/kubernetes-desktop-client.html | 17 +-
guide/managing-tls-in-a-cluster.html | 17 +-
.../migrating-hadoop-yarn-to-kubernetes.html | 17 +-
guide/resource-configuration.html | 17 +-
guide/resource-quota-management.html | 17 +-
guide/secret-configuration.html | 17 +-
guide/service-access-application-cluster.html | 17 +-
guide/tls-bootstrapping.html | 17 +-
...ing-etcdctl-to-access-kubernetes-data.html | 17 +-
guide/using-kubectl.html | 17 +-
guide/using-statefulset.html | 17 +-
images/cncf-graduation-criteria.jpg | Bin 0 -> 221005 bytes
index.html | 21 +-
practice/app-log-collection.html | 17 +-
practice/cephfs.html | 17 +-
practice/ci-cd.html | 17 +-
practice/configuration-best-practice.html | 17 +-
practice/configuring-dns.html | 17 +-
practice/create-kubeconfig.html | 17 +-
practice/create-private-charts-repo.html | 17 +-
practice/create-tls-and-secret-key.html | 17 +-
practice/dashboard-addon-installation.html | 17 +-
practice/dashboard-upgrade.html | 17 +-
practice/data-persistence-problem.html | 17 +-
practice/distributed-load-test.html | 17 +-
practice/drone-ci-cd.html | 17 +-
practice/edge-node-configuration.html | 17 +-
practice/efk-addon-installation.html | 17 +-
practice/etcd-cluster-installation.html | 17 +-
practice/federation.html | 17 +-
practice/flannel-installation.html | 17 +-
practice/glusterfs.html | 17 +-
practice/heapster-addon-installation.html | 17 +-
practice/heapster.html | 17 +-
practice/helm.html | 17 +-
practice/index.html | 17 +-
practice/install-kubernetes-on-centos.html | 17 +-
practice/jenkins-ci-cd.html | 17 +-
practice/kubectl-installation.html | 17 +-
practice/kubedns-addon-installation.html | 17 +-
.../manage-compute-resources-container.html | 17 +-
practice/manually-upgrade.html | 17 +-
practice/master-installation.html | 17 +-
practice/monitor.html | 17 +-
practice/monitoring.html | 17 +-
.../network-and-cluster-perfermance-test.html | 17 +-
practice/nginx-ingress-installation.html | 17 +-
practice/node-installation.html | 17 +-
practice/openebs.html | 17 +-
practice/operation.html | 17 +-
practice/prometheus.html | 17 +-
practice/rook.html | 17 +-
.../service-discovery-and-loadbalancing.html | 17 +-
practice/service-rolling-update.html | 17 +-
practice/services-management-tool.html | 17 +-
...ainers-using-glusterfs-with-openshift.html | 17 +-
practice/storage.html | 17 +-
practice/traefik-ingress-installation.html | 17 +-
practice/update-and-upgrade.html | 17 +-
.../using-ceph-for-persistent-storage.html | 17 +-
...sing-glusterfs-for-persistent-storage.html | 17 +-
.../using-heapster-to-get-object-metrics.html | 17 +-
.../using-openebs-for-persistent-storage.html | 17 +-
...metheus-to-monitor-kuberentes-cluster.html | 17 +-
search_plus_index.json | 2 +-
usecases/big-data.html | 17 +-
usecases/conduit-installation.html | 17 +-
usecases/conduit-overview.html | 17 +-
usecases/conduit.html | 17 +-
usecases/configuring-request-routing.html | 17 +-
usecases/edge-computing.html | 17 +-
usecases/faas.html | 17 +-
usecases/index.html | 17 +-
usecases/install-and-expand-istio-mesh.html | 17 +-
usecases/integrating-vms.html | 17 +-
usecases/istio-installation.html | 17 +-
usecases/istio.html | 17 +-
usecases/linkerd-user-guide.html | 17 +-
usecases/linkerd.html | 17 +-
usecases/microservices.html | 17 +-
usecases/openfaas-quick-start.html | 17 +-
...park-with-kubernetes-native-scheduler.html | 17 +-
usecases/serverless.html | 17 +-
.../service-discovery-in-microservices.html | 17 +-
usecases/service-mesh.html | 17 +-
usecases/spark-standalone-on-kubernetes.html | 17 +-
usecases/understanding-serverless.html | 17 +-
188 files changed, 6377 insertions(+), 190 deletions(-)
create mode 100644 cloud-native/cncf.html
create mode 100644 images/cncf-graduation-criteria.jpg
diff --git a/appendix/debug-kubernetes-services.html b/appendix/debug-kubernetes-services.html
index 5d35b6408..80f2486ed 100644
--- a/appendix/debug-kubernetes-services.html
+++ b/appendix/debug-kubernetes-services.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3329,7 +3344,7 @@ kubectl top pod POD_NAME --containers
diff --git a/appendix/docker-best-practice.html b/appendix/docker-best-practice.html
index f36afff1a..aad1029f7 100644
--- a/appendix/docker-best-practice.html
+++ b/appendix/docker-best-practice.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3377,7 +3392,7 @@
diff --git a/appendix/index.html b/appendix/index.html
index bc0438634..aa4947d99 100644
--- a/appendix/index.html
+++ b/appendix/index.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3306,7 +3321,7 @@
diff --git a/appendix/issues.html b/appendix/issues.html
index 9206ded46..4eeedb423 100644
--- a/appendix/issues.html
+++ b/appendix/issues.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3368,7 +3383,7 @@ kubectl patch deploy --namespace kube-system tiller-deploy -p
diff --git a/appendix/kubernetes-1.7-changelog.html b/appendix/kubernetes-1.7-changelog.html
index 82aa9e3d7..1667ff66c 100644
--- a/appendix/kubernetes-1.7-changelog.html
+++ b/appendix/kubernetes-1.7-changelog.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3335,7 +3350,7 @@
diff --git a/appendix/kubernetes-1.8-changelog.html b/appendix/kubernetes-1.8-changelog.html
index 975fafb30..7578c3064 100644
--- a/appendix/kubernetes-1.8-changelog.html
+++ b/appendix/kubernetes-1.8-changelog.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3312,7 +3327,7 @@
diff --git a/appendix/kubernetes-1.9-changelog.html b/appendix/kubernetes-1.9-changelog.html
index f1eb42d53..4107feaeb 100644
--- a/appendix/kubernetes-1.9-changelog.html
+++ b/appendix/kubernetes-1.9-changelog.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3318,7 +3333,7 @@
diff --git a/appendix/kubernetes-and-cloud-native-summary-in-2017-and-outlook-for-2018.html b/appendix/kubernetes-and-cloud-native-summary-in-2017-and-outlook-for-2018.html
index 1fe40e412..42213f3e4 100644
--- a/appendix/kubernetes-and-cloud-native-summary-in-2017-and-outlook-for-2018.html
+++ b/appendix/kubernetes-and-cloud-native-summary-in-2017-and-outlook-for-2018.html
@@ -153,6 +153,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3366,7 +3381,7 @@
diff --git a/appendix/kubernetes-changelog.html b/appendix/kubernetes-changelog.html
index 0fcf4133c..08e20414d 100644
--- a/appendix/kubernetes-changelog.html
+++ b/appendix/kubernetes-changelog.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3305,7 +3320,7 @@
diff --git a/appendix/material-share.html b/appendix/material-share.html
index 9c1a7c062..de6ce2c5a 100644
--- a/appendix/material-share.html
+++ b/appendix/material-share.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3368,7 +3383,7 @@
diff --git a/appendix/summary-and-outlook.html b/appendix/summary-and-outlook.html
index 9ee9c97cf..de5ffc38f 100644
--- a/appendix/summary-and-outlook.html
+++ b/appendix/summary-and-outlook.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3298,7 +3313,7 @@
diff --git a/appendix/tricks.html b/appendix/tricks.html
index 42c12d3af..32c053957 100644
--- a/appendix/tricks.html
+++ b/appendix/tricks.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3511,7 +3526,7 @@
diff --git a/cloud-native/cncf.html b/cloud-native/cncf.html
new file mode 100644
index 000000000..dc46f8110
--- /dev/null
+++ b/cloud-native/cncf.html
@@ -0,0 +1,3412 @@
+
+
+
+
+
+
+ CNCF - 云原生计算基金会简介 · Kubernetes Handbook - jimmysong.io
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CNCF - 云原生计算基金会简介
+CNCF,全称Cloud Native Computing Foundation(云原生计算基金会),口号是坚持和整合开源技术来编排容器作为微服务架构的一部分 ,其作为致力于云原生应用推广和普及的一支重要力量,不论您是云原生应用的开发者、管理者还是研究人员都有必要了解。
+CNCF作为一个厂商中立的基金会,致力于Github上的快速成长的开源技术的推广,如Kubernetes、Prometheus、Envoy等,帮助开发人员更快更好的构建出色的产品。
+下图是CNCF的全景图。
+图片 - CNCF landscape
+其中包含了CNCF中托管的项目,还有很多是非CNCF项目。
+关于CNCF的使命与组织方式请参考CNCF宪章 ,概括的讲CNCF的使命宝库以下三点:
+
+容器化包装。
+通过中心编排系统的动态资源管理。
+面向微服务。
+
+CNCF这个角色的作用是推广技术,形成社区,开源项目管理与推进生态系统健康发展。
+另外CNCF组织由以下部分组成:
+
+会员 :白金、金牌、银牌、最终用户、学术和非赢利成员,不同级别的会员在治理委员会中的投票权不同。
+理事会 :负责事务管理
+TOC(技术监督委员会) :技术管理
+最终用户社区 :推动CNCF技术的采纳并选举最终用户技术咨询委员会
+最终用户技术咨询委员会 :为最终用户会议或向理事会提供咨询
+营销委员会 :市场推广
+
+CNCF项目成熟度分级与毕业条件
+每个CNCF项目都需要有个成熟度等级,申请成为CNCF项目的时候需要确定项目的成熟度级别。
+成熟度级别(Maturity Level)包括以下三种:
+
+inception(初级)
+incubating(孵化中)
+graduated(毕业)
+
+是否可以成为CNCF项目需要通过Technical Oversight Committee (技术监督委员会)简称TOC ,投票采取fallback策略,即回退策略 ,先从最高级别(graduated)开始,如果2/3多数投票通过的话则确认为该级别,如果没通过的话,则进行下一低级别的投票,如果一直到inception级别都没得到2/3多数投票通过的话,则拒绝其进入CNCF项目。
+当前所有的CNCF项目可以访问https://www.cncf.io/projects/。
+项目所达到相应成熟度需要满足的条件和投票机制见下图:
+图片 - CNCF项目成熟度级别
+参考
+
+
+
+
+
+
+
+
+
+
results matching " "
+
+
+
+
+
+
No results matching " "
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cloud-native/from-kubernetes-to-cloud-native.html b/cloud-native/from-kubernetes-to-cloud-native.html
index 7bd680c3c..e69a79f14 100644
--- a/cloud-native/from-kubernetes-to-cloud-native.html
+++ b/cloud-native/from-kubernetes-to-cloud-native.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3559,7 +3574,7 @@
diff --git a/cloud-native/kubernetes-and-cloud-native-app-overview.html b/cloud-native/kubernetes-and-cloud-native-app-overview.html
index 7b6bde367..f2db721cc 100644
--- a/cloud-native/kubernetes-and-cloud-native-app-overview.html
+++ b/cloud-native/kubernetes-and-cloud-native-app-overview.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3650,7 +3665,7 @@
diff --git a/cloud-native/play-with-kubernetes.html b/cloud-native/play-with-kubernetes.html
index b411f2bce..67bf42455 100644
--- a/cloud-native/play-with-kubernetes.html
+++ b/cloud-native/play-with-kubernetes.html
@@ -82,7 +82,7 @@
-
+
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3320,7 +3335,7 @@
-
+
@@ -3336,7 +3351,7 @@
diff --git a/concepts/aggregated-api-server.html b/concepts/aggregated-api-server.html
index 1b968a202..41fcd2475 100644
--- a/concepts/aggregated-api-server.html
+++ b/concepts/aggregated-api-server.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3316,7 +3331,7 @@
diff --git a/concepts/annotation.html b/concepts/annotation.html
index 7174d191c..8a8dd990a 100644
--- a/concepts/annotation.html
+++ b/concepts/annotation.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3362,7 +3377,7 @@
diff --git a/concepts/apiservice.html b/concepts/apiservice.html
index aac426b55..ccd70dcf0 100644
--- a/concepts/apiservice.html
+++ b/concepts/apiservice.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3408,7 +3423,7 @@ v1
diff --git a/concepts/authentication-and-permission.html b/concepts/authentication-and-permission.html
index ffbeac4d4..d45de4d45 100644
--- a/concepts/authentication-and-permission.html
+++ b/concepts/authentication-and-permission.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3298,7 +3313,7 @@
diff --git a/concepts/calico.html b/concepts/calico.html
index d21b4f16f..ccc40cf53 100644
--- a/concepts/calico.html
+++ b/concepts/calico.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3333,7 +3348,7 @@ calicoctl get node
diff --git a/concepts/cluster.html b/concepts/cluster.html
index 3b86a50f6..7b24f8a78 100644
--- a/concepts/cluster.html
+++ b/concepts/cluster.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3298,7 +3313,7 @@
diff --git a/concepts/cni.html b/concepts/cni.html
index 667d8d162..867726114 100644
--- a/concepts/cni.html
+++ b/concepts/cni.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3402,7 +3417,7 @@
diff --git a/concepts/concepts.html b/concepts/concepts.html
index 1afdc8e7b..89892a3ac 100644
--- a/concepts/concepts.html
+++ b/concepts/concepts.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3379,7 +3394,7 @@
diff --git a/concepts/configmap-hot-update.html b/concepts/configmap-hot-update.html
index e593555a3..626eb36b7 100644
--- a/concepts/configmap-hot-update.html
+++ b/concepts/configmap-hot-update.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3603,7 +3618,7 @@ DEBUG
diff --git a/concepts/configmap.html b/concepts/configmap.html
index 44a3ebd9e..804c5842f 100644
--- a/concepts/configmap.html
+++ b/concepts/configmap.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3584,7 +3599,7 @@ log_level=INFO
diff --git a/concepts/controllers.html b/concepts/controllers.html
index 9fb9441f4..1d50726e1 100644
--- a/concepts/controllers.html
+++ b/concepts/controllers.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3298,7 +3313,7 @@
diff --git a/concepts/cri.html b/concepts/cri.html
index 067821cb3..057715b25 100644
--- a/concepts/cri.html
+++ b/concepts/cri.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3423,7 +3438,7 @@ service ImageService {
diff --git a/concepts/cronjob.html b/concepts/cronjob.html
index d03b4eafd..9ff40d30d 100644
--- a/concepts/cronjob.html
+++ b/concepts/cronjob.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3391,7 +3406,7 @@ job "hello-1202039034" deleted
diff --git a/concepts/csi.html b/concepts/csi.html
index b27b66ac9..da7f30f42 100644
--- a/concepts/csi.html
+++ b/concepts/csi.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3394,7 +3409,7 @@
diff --git a/concepts/custom-metrics-hpa.html b/concepts/custom-metrics-hpa.html
index e25e4129e..814ef57e4 100644
--- a/concepts/custom-metrics-hpa.html
+++ b/concepts/custom-metrics-hpa.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3348,7 +3363,7 @@
diff --git a/concepts/custom-resource.html b/concepts/custom-resource.html
index 3d73c15c3..87b6d6f98 100644
--- a/concepts/custom-resource.html
+++ b/concepts/custom-resource.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3408,7 +3423,7 @@
diff --git a/concepts/daemonset.html b/concepts/daemonset.html
index c7f1a0541..fce2ec000 100644
--- a/concepts/daemonset.html
+++ b/concepts/daemonset.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3370,7 +3385,7 @@
diff --git a/concepts/deployment.html b/concepts/deployment.html
index ba118757c..bba28d923 100644
--- a/concepts/deployment.html
+++ b/concepts/deployment.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3848,7 +3863,7 @@ $ echo $?
diff --git a/concepts/etcd.html b/concepts/etcd.html
index e6b7d890e..c92af98e3 100644
--- a/concepts/etcd.html
+++ b/concepts/etcd.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3369,7 +3384,7 @@ thirdpartyresources
diff --git a/concepts/extension.html b/concepts/extension.html
index c772aaade..b9ebdb6c8 100644
--- a/concepts/extension.html
+++ b/concepts/extension.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3298,7 +3313,7 @@
diff --git a/concepts/garbage-collection.html b/concepts/garbage-collection.html
index 28d103e19..e4ad7f5ec 100644
--- a/concepts/garbage-collection.html
+++ b/concepts/garbage-collection.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3387,7 +3402,7 @@ curl -X DELETE localhost:8080/apis/extensions/v1beta1/namespaces/default/replica
diff --git a/concepts/horizontal-pod-autoscaling.html b/concepts/horizontal-pod-autoscaling.html
index 4e955bccb..d5a5a90d8 100644
--- a/concepts/horizontal-pod-autoscaling.html
+++ b/concepts/horizontal-pod-autoscaling.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3409,7 +3424,7 @@ kubectl delete hpa
diff --git a/concepts/index.html b/concepts/index.html
index 23fdd3a19..efbaaf2af 100644
--- a/concepts/index.html
+++ b/concepts/index.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3366,7 +3381,7 @@ Kubernetes 还提供完善的管理]
diff --git a/concepts/ingress.html b/concepts/ingress.html
index c571c0703..80472cfc1 100644
--- a/concepts/ingress.html
+++ b/concepts/ingress.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3519,7 +3534,7 @@ NAME RULE BACKEND ADDRESS
diff --git a/concepts/init-containers.html b/concepts/init-containers.html
index 8dd1b53eb..6948468cf 100644
--- a/concepts/init-containers.html
+++ b/concepts/init-containers.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3493,7 +3508,7 @@ myapp-pod 1/1 Running 0 9m
diff --git a/concepts/job.html b/concepts/job.html
index cee9e03c9..041cf05cf 100644
--- a/concepts/job.html
+++ b/concepts/job.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3331,7 +3346,7 @@ $ kubectl logs $pods
diff --git a/concepts/label.html b/concepts/label.html
index 93f46b4be..9d9aadfb4 100644
--- a/concepts/label.html
+++ b/concepts/label.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3376,7 +3391,7 @@ $ kubectl get pods -l 'environment,environment n
diff --git a/concepts/namespace.html b/concepts/namespace.html
index 81ca28d93..f4d3b7bc0 100644
--- a/concepts/namespace.html
+++ b/concepts/namespace.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3307,7 +3322,7 @@
diff --git a/concepts/network-policy.html b/concepts/network-policy.html
index aaa307ee7..3a7657268 100644
--- a/concepts/network-policy.html
+++ b/concepts/network-policy.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3360,7 +3375,7 @@
diff --git a/concepts/networking.html b/concepts/networking.html
index 734c77c36..2f161016b 100644
--- a/concepts/networking.html
+++ b/concepts/networking.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3622,7 +3637,7 @@ target prot opt source des
diff --git a/concepts/node.html b/concepts/node.html
index a5e732541..a193dc4c5 100644
--- a/concepts/node.html
+++ b/concepts/node.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3330,7 +3345,7 @@
diff --git a/concepts/objects.html b/concepts/objects.html
index fc112f924..145420088 100644
--- a/concepts/objects.html
+++ b/concepts/objects.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3397,7 +3412,7 @@
diff --git a/concepts/open-interfaces.html b/concepts/open-interfaces.html
index 17f137893..8fab932c5 100644
--- a/concepts/open-interfaces.html
+++ b/concepts/open-interfaces.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3305,7 +3320,7 @@
diff --git a/concepts/persistent-volume.html b/concepts/persistent-volume.html
index 665de9099..13783f24d 100644
--- a/concepts/persistent-volume.html
+++ b/concepts/persistent-volume.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3836,7 +3851,7 @@ Finalizers: [ kubernetes.io/pvc-protect
diff --git a/concepts/pod-disruption-budget.html b/concepts/pod-disruption-budget.html
index 095560252..61697bd03 100644
--- a/concepts/pod-disruption-budget.html
+++ b/concepts/pod-disruption-budget.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3521,7 +3536,7 @@
diff --git a/concepts/pod-hook.html b/concepts/pod-hook.html
index 7e0925700..e8d73c9af 100644
--- a/concepts/pod-hook.html
+++ b/concepts/pod-hook.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3329,7 +3344,7 @@
diff --git a/concepts/pod-lifecycle.html b/concepts/pod-lifecycle.html
index 8d4dd58fd..6f0ae9274 100644
--- a/concepts/pod-lifecycle.html
+++ b/concepts/pod-lifecycle.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3452,7 +3467,7 @@
diff --git a/concepts/pod-overview.html b/concepts/pod-overview.html
index c21c4f7b7..f0e7f128c 100644
--- a/concepts/pod-overview.html
+++ b/concepts/pod-overview.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3342,7 +3357,7 @@
diff --git a/concepts/pod-preset.html b/concepts/pod-preset.html
index b7f55c151..8a7a6b98a 100644
--- a/concepts/pod-preset.html
+++ b/concepts/pod-preset.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3335,7 +3350,7 @@
diff --git a/concepts/pod-security-policy.html b/concepts/pod-security-policy.html
index 648c94695..fced179cd 100644
--- a/concepts/pod-security-policy.html
+++ b/concepts/pod-security-policy.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3503,7 +3518,7 @@ podsecuritypolicy "permissive" delet
diff --git a/concepts/pod-state-and-lifecycle.html b/concepts/pod-state-and-lifecycle.html
index 3f6e93903..26cbefa8a 100644
--- a/concepts/pod-state-and-lifecycle.html
+++ b/concepts/pod-state-and-lifecycle.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3305,7 +3320,7 @@
diff --git a/concepts/pod.html b/concepts/pod.html
index bc5ce40bd..61caff334 100644
--- a/concepts/pod.html
+++ b/concepts/pod.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3383,7 +3398,7 @@
diff --git a/concepts/rbac.html b/concepts/rbac.html
index 36bf4b7f9..8acbbc95b 100644
--- a/concepts/rbac.html
+++ b/concepts/rbac.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3825,7 +3840,7 @@
diff --git a/concepts/replicaset.html b/concepts/replicaset.html
index 5f91d3a24..eb084de84 100644
--- a/concepts/replicaset.html
+++ b/concepts/replicaset.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3347,7 +3362,7 @@
diff --git a/concepts/secret.html b/concepts/secret.html
index 01ac1d2eb..c75073a30 100644
--- a/concepts/secret.html
+++ b/concepts/secret.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3425,7 +3440,7 @@ token
diff --git a/concepts/service-discovery.html b/concepts/service-discovery.html
index 189ca6786..aceff819a 100644
--- a/concepts/service-discovery.html
+++ b/concepts/service-discovery.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3298,7 +3313,7 @@
diff --git a/concepts/service.html b/concepts/service.html
index e75fe176f..93b6e5286 100644
--- a/concepts/service.html
+++ b/concepts/service.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3630,7 +3645,7 @@ iptables 代理不会隐藏 Kubernetes 集
diff --git a/concepts/serviceaccount.html b/concepts/serviceaccount.html
index 7f7279f20..3199d1707 100644
--- a/concepts/serviceaccount.html
+++ b/concepts/serviceaccount.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3446,7 +3461,7 @@ serviceaccounts/default
diff --git a/concepts/statefulset.html b/concepts/statefulset.html
index bde2756e2..93f8c0d04 100644
--- a/concepts/statefulset.html
+++ b/concepts/statefulset.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3765,7 +3780,7 @@ zk-0 10.254.98.14
var gitbook = gitbook || [];
gitbook.push(function() {
- gitbook.page.hasChanged({"page":{"title":"StatefulSet","level":"3.1.8.2","depth":3,"next":{"title":"DaemonSet","level":"3.1.8.3","depth":3,"path":"concepts/daemonset.md","ref":"concepts/daemonset.md","articles":[]},"previous":{"title":"Deployment","level":"3.1.8.1","depth":3,"path":"concepts/deployment.md","ref":"concepts/deployment.md","articles":[]},"dir":"ltr"},"config":{"plugins":["github","codesnippet","splitter","page-toc-button","image-captions","editlink","back-to-top-button","-lunr","-search","search-plus","github-buttons@2.1.0","favicon@^0.0.2","tbfed-pagefooter@^0.0.1","3-ba","theme-default","-highlight","prism","prism-themes"],"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"},"pluginsConfig":{"tbfed-pagefooter":{"copyright":"Copyright © jimmysong.io 2017-2018","modify_label":"Updated at ","modify_format":"YYYY-MM-DD HH:mm:ss"},"prism":{"css":["prism-themes/themes/prism-ghcolors.css"]},"github":{"url":"https://github.com/rootsongjc/kubernetes-handbook"},"editlink":{"label":"编辑本页","multilingual":false,"base":"https://github.com/rootsongjc/kubernetes-handbook/blob/master/"},"splitter":{},"codesnippet":{},"fontsettings":{"theme":"white","family":"sans","size":2},"favicon":{"shortcut":"favicon.ico","bookmark":"favicon.ico"},"page-toc-button":{},"back-to-top-button":{},"prism-themes":{},"github-buttons":{"repo":"rootsongjc/kubernetes-handbook","types":["star"],"size":"small"},"3-ba":{"configuration":"auto","token":"11f7d254cfa4e0ca44b175c66d379ecc"},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"showLevel":true,"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"}},"search-plus":{},"image-captions":{"caption":"图片 - _CAPTION_","variable_name":"_pictures"}},"theme":"default","author":"Jimmy Song","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{"_pictures":[{"backlink":"index.html#fig1.1.1","level":"1.1","list_caption":"Figure: Stargazers over time","alt":"Stargazers over time","nro":1,"url":"https://starcharts.herokuapp.com/rootsongjc/kubernetes-handbook.svg","index":1,"caption_template":"图片 - _CAPTION_","label":"Stargazers over time","attributes":{},"skip":false,"key":"1.1.1"},{"backlink":"cloud-native/play-with-kubernetes.html#fig2.1.1","level":"2.1","list_caption":"Figure: Play with Kubernetes网页截图","alt":"Play with Kubernetes网页截图","nro":2,"url":"../images/play-with-kubernetes.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Play with Kubernetes网页截图","attributes":{},"skip":false,"key":"2.1.1"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.1","level":"2.2","list_caption":"Figure: 云计算演进历程","alt":"云计算演进历程","nro":3,"url":"../images/cloud-computing-evolution-road.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"云计算演进历程","attributes":{},"skip":false,"key":"2.2.1"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.2","level":"2.2","list_caption":"Figure: 来自Twitter @MarcWilczek","alt":"来自Twitter @MarcWilczek","nro":4,"url":"../images/cloud-native-comes-of-age.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"来自Twitter @MarcWilczek","attributes":{},"skip":false,"key":"2.2.2"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.3","level":"2.2","list_caption":"Figure: Cloud native思维导图","alt":"Cloud native思维导图","nro":5,"url":"../images/cloud-native-architecutre-mindnode.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Cloud native思维导图","attributes":{},"skip":false,"key":"2.2.3"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.4","level":"2.2","list_caption":"Figure: 十二因素应用","alt":"十二因素应用","nro":6,"url":"../images/12-factor-app.png","index":4,"caption_template":"图片 - _CAPTION_","label":"十二因素应用","attributes":{},"skip":false,"key":"2.2.4"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.5","level":"2.2","list_caption":"Figure: 容器生态","alt":"容器生态","nro":7,"url":"../images/container-ecosystem.png","index":5,"caption_template":"图片 - _CAPTION_","label":"容器生态","attributes":{},"skip":false,"key":"2.2.5"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.6","level":"2.2","list_caption":"Figure: 使用Jenkins进行持续集成与发布流程图","alt":"使用Jenkins进行持续集成与发布流程图","nro":8,"url":"../images/kubernetes-jenkins-ci-cd.png","index":6,"caption_template":"图片 - _CAPTION_","label":"使用Jenkins进行持续集成与发布流程图","attributes":{},"skip":false,"key":"2.2.6"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.7","level":"2.2","list_caption":"Figure: filebeat日志收集架构图","alt":"filebeat日志收集架构图","nro":9,"url":"../images/filebeat-log-collector-arch.png","index":7,"caption_template":"图片 - _CAPTION_","label":"filebeat日志收集架构图","attributes":{},"skip":false,"key":"2.2.7"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.8","level":"2.2","list_caption":"Figure: API文档","alt":"API文档","nro":10,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":8,"caption_template":"图片 - _CAPTION_","label":"API文档","attributes":{},"skip":false,"key":"2.2.8"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.9","level":"2.2","list_caption":"Figure: 迁移步骤示意图","alt":"迁移步骤示意图","nro":11,"url":"../images/migrating-hadoop-yarn-to-kubernetes.png","index":9,"caption_template":"图片 - _CAPTION_","label":"迁移步骤示意图","attributes":{},"skip":false,"key":"2.2.9"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.10","level":"2.2","list_caption":"Figure: service mesh架构图","alt":"service mesh架构图","nro":12,"url":"../images/serivce-mesh-control-plane.png","index":10,"caption_template":"图片 - _CAPTION_","label":"service mesh架构图","attributes":{},"skip":false,"key":"2.2.10"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.11","level":"2.2","list_caption":"Figure: kibana界面","alt":"kibana界面","nro":13,"url":"../images/filebeat-docker-test.jpg","index":11,"caption_template":"图片 - _CAPTION_","label":"kibana界面","attributes":{},"skip":false,"key":"2.2.11"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.12","level":"2.2","list_caption":"Figure: Grafana界面示意图1","alt":"Grafana界面示意图1","nro":14,"url":"../images/kubernetes-devops-example-grafana-1.png","index":12,"caption_template":"图片 - _CAPTION_","label":"Grafana界面示意图1","attributes":{},"skip":false,"key":"2.2.12"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.13","level":"2.2","list_caption":"Figure: Grafana界面示意图2","alt":"Grafana界面示意图2","nro":15,"url":"../images/kubernetes-devops-example-grafana-2.png","index":13,"caption_template":"图片 - _CAPTION_","label":"Grafana界面示意图2","attributes":{},"skip":false,"key":"2.2.13"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.14","level":"2.2","list_caption":"Figure: Grafana界面示意图3","alt":"Grafana界面示意图3","nro":16,"url":"../images/kubernetes-devops-example-grafana-3.png","index":14,"caption_template":"图片 - _CAPTION_","label":"Grafana界面示意图3","attributes":{},"skip":false,"key":"2.2.14"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.15","level":"2.2","list_caption":"Figure: dashboard","alt":"dashboard","nro":17,"url":"../images/spark-job-on-kubernetes-example-1.jpg","index":15,"caption_template":"图片 - _CAPTION_","label":"dashboard","attributes":{},"skip":false,"key":"2.2.15"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.16","level":"2.2","list_caption":"Figure: Grafana","alt":"Grafana","nro":18,"url":"../images/spark-job-on-kubernetes-example-2.jpg","index":16,"caption_template":"图片 - _CAPTION_","label":"Grafana","attributes":{},"skip":false,"key":"2.2.16"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.1","level":"2.3","list_caption":"Figure: Cloud Native容器实验室","alt":"Cloud Native容器实验室","nro":19,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-native-container-lab.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Cloud Native容器实验室","attributes":{},"skip":false,"key":"2.3.1"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.2","level":"2.3","list_caption":"Figure: 容器生态图 Container ecosystem","alt":"容器生态图 Container ecosystem","nro":20,"url":"../images/container-ecosystem.png","index":2,"caption_template":"图片 - _CAPTION_","label":"容器生态图 Container ecosystem","attributes":{},"skip":false,"key":"2.3.2"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.3","level":"2.3","list_caption":"Figure: Cloud Native油井","alt":"Cloud Native油井","nro":21,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-native-oil-well.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Cloud Native油井","attributes":{},"skip":false,"key":"2.3.3"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.4","level":"2.3","list_caption":"Figure: Kuberentes架构","alt":"Kuberentes架构","nro":22,"url":"../images/kubernetes-high-level-component-archtecture.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Kuberentes架构","attributes":{},"skip":false,"key":"2.3.4"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.5","level":"2.3","list_caption":"Figure: Cloud Native Core target","alt":"Cloud Native Core target","nro":23,"url":"../images/cloud-native-core-target.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Core target","attributes":{},"skip":false,"key":"2.3.5"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.6","level":"2.3","list_caption":"Figure: FaaS Landscape","alt":"FaaS Landscape","nro":24,"url":"../images/redpoint-faas-landscape.jpg","index":6,"caption_template":"图片 - _CAPTION_","label":"FaaS Landscape","attributes":{},"skip":false,"key":"2.3.6"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.7","level":"2.3","list_caption":"Figure: Workloads running on Kubernetes","alt":"Workloads running on Kubernetes","nro":25,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/workloads-running-on-kubernetes-2017-thenewstack.jpg","index":7,"caption_template":"图片 - _CAPTION_","label":"Workloads running on Kubernetes","attributes":{},"skip":false,"key":"2.3.7"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.8","level":"2.3","list_caption":"Figure: Gartner技术爆发趋势图2017","alt":"Gartner技术爆发趋势图2017","nro":26,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/gartner-hype-cycle-for-emerging-technologies-2017.jpg","index":8,"caption_template":"图片 - _CAPTION_","label":"Gartner技术爆发趋势图2017","attributes":{},"skip":false,"key":"2.3.8"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.9","level":"2.3","list_caption":"Figure: Microservices concerns","alt":"Microservices concerns","nro":27,"url":"../images/microservices-concerns.jpg","index":9,"caption_template":"图片 - _CAPTION_","label":"Microservices concerns","attributes":{},"skip":false,"key":"2.3.9"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.10","level":"2.3","list_caption":"Figure: 两种服务发现方式","alt":"两种服务发现方式","nro":28,"url":"../images/service-discovery-in-microservices.png","index":10,"caption_template":"图片 - _CAPTION_","label":"两种服务发现方式","attributes":{},"skip":false,"key":"2.3.10"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.11","level":"2.3","list_caption":"Figure: Cloud Native Pipeline","alt":"Cloud Native Pipeline","nro":29,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-natvie-pipeline.jpg","index":11,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Pipeline","attributes":{},"skip":false,"key":"2.3.11"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.12","level":"2.3","list_caption":"Figure: Cloud Native Features","alt":"Cloud Native Features","nro":30,"url":"https://jimmysong.io/kubernetes-handbook/images/cloud-native-architecutre-mindnode.jpg","index":12,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Features","attributes":{},"skip":false,"key":"2.3.12"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.13","level":"2.3","list_caption":"Figure: Cloud Native Landscape v1.0","alt":"Cloud Native Landscape v1.0","nro":31,"url":"https://raw.githubusercontent.com/cncf/landscape/master/landscape/CloudNativeLandscape_v1.0.jpg","index":13,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Landscape v1.0","attributes":{},"skip":false,"key":"2.3.13"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.14","level":"2.3","list_caption":"Figure: Building a Cloud Native Architecture with Kubernetes followed 12 factor app","alt":"Building a Cloud Native Architecture with Kubernetes followed 12 factor app","nro":32,"url":"../images/building-cloud-native-architecture-with-kubernetes.png","index":14,"caption_template":"图片 - _CAPTION_","label":"Building a Cloud Native Architecture with Kubernetes followed 12 factor app","attributes":{},"skip":false,"key":"2.3.14"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.15","level":"2.3","list_caption":"Figure: Creating Kubernetes native app","alt":"Creating Kubernetes native app","nro":33,"url":"../images/creating-kubernetes-native-app.jpg","index":15,"caption_template":"图片 - _CAPTION_","label":"Creating Kubernetes native app","attributes":{},"skip":false,"key":"2.3.15"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.16","level":"2.3","list_caption":"Figure: Service Mesh中国社区slogan","alt":"Service Mesh中国社区slogan","nro":34,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/service-meshes-pro.jpg","index":16,"caption_template":"图片 - _CAPTION_","label":"Service Mesh中国社区slogan","attributes":{},"skip":false,"key":"2.3.16"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.17","level":"2.3","list_caption":"Figure: istio vs linkerd","alt":"istio vs linkerd","nro":35,"url":"../images/istio-vs-linkerd.jpg","index":17,"caption_template":"图片 - _CAPTION_","label":"istio vs linkerd","attributes":{},"skip":false,"key":"2.3.17"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.18","level":"2.3","list_caption":"Figure: Cloud Native factory","alt":"Cloud Native factory","nro":36,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-native-factory.jpg","index":18,"caption_template":"图片 - _CAPTION_","label":"Cloud Native factory","attributes":{},"skip":false,"key":"2.3.18"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.19","level":"2.3","list_caption":"Figure: Deployment pipeline","alt":"Deployment pipeline","nro":37,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/deployment-pipeline-comic.jpg","index":19,"caption_template":"图片 - _CAPTION_","label":"Deployment pipeline","attributes":{},"skip":false,"key":"2.3.19"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.20","level":"2.3","list_caption":"Figure: Spark on Kubernetes with different schedulers","alt":"Spark on Kubernetes with different schedulers","nro":38,"url":"../images/spark-on-kubernetes-with-different-schedulers.jpg","index":20,"caption_template":"图片 - _CAPTION_","label":"Spark on Kubernetes with different schedulers","attributes":{},"skip":false,"key":"2.3.20"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.21","level":"2.3","list_caption":"Figure: Kubernetes solutions","alt":"Kubernetes solutions","nro":39,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/kubernetes-solutions-choices.jpg","index":21,"caption_template":"图片 - _CAPTION_","label":"Kubernetes solutions","attributes":{},"skip":false,"key":"2.3.21"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.22","level":"2.3","list_caption":"Figure: Kubernetes SIG","alt":"Kubernetes SIG","nro":40,"url":"../images/kubernetes-sigs.jpg","index":22,"caption_template":"图片 - _CAPTION_","label":"Kubernetes SIG","attributes":{},"skip":false,"key":"2.3.22"},{"backlink":"concepts/index.html#fig3.1.1","level":"3.1","list_caption":"Figure: Borg架构","alt":"Borg架构","nro":41,"url":"../images/borg.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Borg架构","attributes":{},"skip":false,"key":"3.1.1"},{"backlink":"concepts/index.html#fig3.1.2","level":"3.1","list_caption":"Figure: Kubernetes架构","alt":"Kubernetes架构","nro":42,"url":"../images/architecture.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Kubernetes架构","attributes":{},"skip":false,"key":"3.1.2"},{"backlink":"concepts/index.html#fig3.1.3","level":"3.1","list_caption":"Figure: Kuberentes架构(图片来自于网络)","alt":"Kuberentes架构(图片来自于网络)","nro":43,"url":"../images/kubernetes-high-level-component-archtecture.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Kuberentes架构(图片来自于网络)","attributes":{},"skip":false,"key":"3.1.3"},{"backlink":"concepts/index.html#fig3.1.4","level":"3.1","list_caption":"Figure: kubernetes整体架构示意图","alt":"kubernetes整体架构示意图","nro":44,"url":"../images/kubernetes-whole-arch.png","index":4,"caption_template":"图片 - _CAPTION_","label":"kubernetes整体架构示意图","attributes":{},"skip":false,"key":"3.1.4"},{"backlink":"concepts/index.html#fig3.1.5","level":"3.1","list_caption":"Figure: Kubernetes master架构示意图","alt":"Kubernetes master架构示意图","nro":45,"url":"../images/kubernetes-master-arch.png","index":5,"caption_template":"图片 - _CAPTION_","label":"Kubernetes master架构示意图","attributes":{},"skip":false,"key":"3.1.5"},{"backlink":"concepts/index.html#fig3.1.6","level":"3.1","list_caption":"Figure: kubernetes node架构示意图","alt":"kubernetes node架构示意图","nro":46,"url":"../images/kubernetes-node-arch.png","index":6,"caption_template":"图片 - _CAPTION_","label":"kubernetes node架构示意图","attributes":{},"skip":false,"key":"3.1.6"},{"backlink":"concepts/index.html#fig3.1.7","level":"3.1","list_caption":"Figure: Kubernetes分层架构示意图","alt":"Kubernetes分层架构示意图","nro":47,"url":"../images/kubernetes-layers-arch.jpg","index":7,"caption_template":"图片 - _CAPTION_","label":"Kubernetes分层架构示意图","attributes":{},"skip":false,"key":"3.1.7"},{"backlink":"concepts/concepts.html#fig3.1.1.1","level":"3.1.1","list_caption":"Figure: 分层架构示意图","alt":"分层架构示意图","nro":48,"url":"../images/kubernetes-layers-arch.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"分层架构示意图","attributes":{},"skip":false,"key":"3.1.1.1"},{"backlink":"concepts/open-interfaces.html#fig3.1.3.1","level":"3.1.3","list_caption":"Figure: 开放接口","alt":"开放接口","nro":49,"url":"../images/open-interfaces.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"开放接口","attributes":{},"skip":false,"key":"3.1.3.1"},{"backlink":"concepts/cri.html#fig3.1.3.1.1","level":"3.1.3.1","list_caption":"Figure: CRI架构-图片来自kubernetes blog","alt":"CRI架构-图片来自kubernetes blog","nro":50,"url":"../images/cri-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"CRI架构-图片来自kubernetes blog","attributes":{},"skip":false,"key":"3.1.3.1.1"},{"backlink":"concepts/networking.html#fig3.1.4.1","level":"3.1.4","list_caption":"Figure: flannel网络架构(图片来自openshift)","alt":"flannel网络架构(图片来自openshift)","nro":51,"url":"../images/flannel-networking.png","index":1,"caption_template":"图片 - _CAPTION_","label":"flannel网络架构(图片来自openshift)","attributes":{},"skip":false,"key":"3.1.4.1"},{"backlink":"concepts/calico.html#fig3.1.5.1","level":"3.1.5","list_caption":"Figure: CRI架构-图片来自https://www.jianshu.com/p/f0177b84de66","alt":"CRI架构-图片来自https://www.jianshu.com/p/f0177b84de66","nro":52,"url":"../images/calico.png","index":1,"caption_template":"图片 - _CAPTION_","label":"CRI架构-图片来自https://www.jianshu.com/p/f0177b84de66","attributes":{},"skip":false,"key":"3.1.5.1"},{"backlink":"concepts/pod-overview.html#fig3.1.6.2.1","level":"3.1.6.2","list_caption":"Figure: pod diagram","alt":"pod diagram","nro":53,"url":"../images/pod-overview.png","index":1,"caption_template":"图片 - _CAPTION_","label":"pod diagram","attributes":{},"skip":false,"key":"3.1.6.2.1"},{"backlink":"concepts/pod.html#fig3.1.6.3.1","level":"3.1.6.3","list_caption":"Figure: Pod示意图","alt":"Pod示意图","nro":54,"url":"../images/pod-overview.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Pod示意图","attributes":{},"skip":false,"key":"3.1.6.3.1"},{"backlink":"concepts/pod.html#fig3.1.6.3.2","level":"3.1.6.3","list_caption":"Figure: Pod Cheatsheet","alt":"Pod Cheatsheet","nro":55,"url":"../images/kubernetes-pod-cheatsheet.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Pod Cheatsheet","attributes":{},"skip":false,"key":"3.1.6.3.2"},{"backlink":"concepts/label.html#fig3.1.7.3.1","level":"3.1.7.3","list_caption":"Figure: label示意图","alt":"label示意图","nro":56,"url":"../images/labels.png","index":1,"caption_template":"图片 - _CAPTION_","label":"label示意图","attributes":{},"skip":false,"key":"3.1.7.3.1"},{"backlink":"concepts/deployment.html#fig3.1.8.1.1","level":"3.1.8.1","list_caption":"Figure: kubernetes deployment cheatsheet","alt":"kubernetes deployment cheatsheet","nro":57,"url":"../images/deployment-cheatsheet.png","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes deployment cheatsheet","attributes":{},"skip":false,"key":"3.1.8.1.1"},{"backlink":"concepts/horizontal-pod-autoscaling.html#fig3.1.8.7.1","level":"3.1.8.7","list_caption":"Figure: horizontal-pod-autoscaler","alt":"horizontal-pod-autoscaler","nro":58,"url":"../images/horizontal-pod-autoscaler.png","index":1,"caption_template":"图片 - _CAPTION_","label":"horizontal-pod-autoscaler","attributes":{},"skip":false,"key":"3.1.8.7.1"},{"backlink":"concepts/service.html#fig3.1.9.1.1","level":"3.1.9.1","list_caption":"Figure: userspace代理模式下Service概览图","alt":"userspace代理模式下Service概览图","nro":59,"url":"../images/services-userspace-overview.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"userspace代理模式下Service概览图","attributes":{},"skip":false,"key":"3.1.9.1.1"},{"backlink":"concepts/service.html#fig3.1.9.1.2","level":"3.1.9.1","list_caption":"Figure: iptables代理模式下Service概览图","alt":"iptables代理模式下Service概览图","nro":60,"url":"../images/services-iptables-overview.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"iptables代理模式下Service概览图","attributes":{},"skip":false,"key":"3.1.9.1.2"},{"backlink":"guide/using-kubectl.html#fig4.3.2.1","level":"4.3.2","list_caption":"Figure: kubectl cheatsheet","alt":"kubectl cheatsheet","nro":61,"url":"../images/kubernetes-kubectl-cheatsheet.png","index":1,"caption_template":"图片 - _CAPTION_","label":"kubectl cheatsheet","attributes":{},"skip":false,"key":"4.3.2.1"},{"backlink":"guide/using-kubectl.html#fig4.3.2.2","level":"4.3.2","list_caption":"Figure: 增加kubeclt命令的工具(图片来自网络)","alt":"增加kubeclt命令的工具(图片来自网络)","nro":62,"url":"../images/tools-to-supercharge-kubectl.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"增加kubeclt命令的工具(图片来自网络)","attributes":{},"skip":false,"key":"4.3.2.2"},{"backlink":"guide/using-kubectl.html#fig4.3.2.3","level":"4.3.2","list_caption":"Figure: 增强的kubectl命令","alt":"增强的kubectl命令","nro":63,"url":"../images/supercharged-kubectl.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"增强的kubectl命令","attributes":{},"skip":false,"key":"4.3.2.3"},{"backlink":"guide/using-kubectl.html#fig4.3.2.4","level":"4.3.2","list_caption":"Figure: kube-shell页面","alt":"kube-shell页面","nro":64,"url":"../images/kube-shell.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kube-shell页面","attributes":{},"skip":false,"key":"4.3.2.4"},{"backlink":"guide/ip-masq-agent.html#fig4.4.5.1","level":"4.4.5","list_caption":"Figure: IP伪装代理示意图","alt":"IP伪装代理示意图","nro":65,"url":"../images/ip-masq.png","index":1,"caption_template":"图片 - _CAPTION_","label":"IP伪装代理示意图","attributes":{},"skip":false,"key":"4.4.5.1"},{"backlink":"guide/auth-with-kubeconfig-or-token.html#fig4.4.6.1","level":"4.4.6","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":66,"url":"../images/brand-kubeconfig-yaml.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"4.4.6.1"},{"backlink":"guide/authentication.html#fig4.4.7.1","level":"4.4.7","list_caption":"Figure: Kubernetes OpenID Connect Flow","alt":"Kubernetes OpenID Connect Flow","nro":67,"url":"../images/kubernetes-oidc-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes OpenID Connect Flow","attributes":{},"skip":false,"key":"4.4.7.1"},{"backlink":"guide/cabin-mobile-dashboard-for-kubernetes.html#fig4.5.6.1","level":"4.5.6","list_caption":"Figure: App Store","alt":"App Store","nro":68,"url":"../images/cabin-kubernetes-mobile-dashboard-1.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"App Store","attributes":{},"skip":false,"key":"4.5.6.1"},{"backlink":"guide/cabin-mobile-dashboard-for-kubernetes.html#fig4.5.6.2","level":"4.5.6","list_caption":"Figure: 在手机上操作Kubernetes集群","alt":"在手机上操作Kubernetes集群","nro":69,"url":"../images/cabin-kubernetes-mobile-dashboard-4.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"在手机上操作Kubernetes集群","attributes":{},"skip":false,"key":"4.5.6.2"},{"backlink":"guide/kubernetes-desktop-client.html#fig4.5.7.1","level":"4.5.7","list_caption":"Figure: Kubernetic客户端","alt":"Kubernetic客户端","nro":70,"url":"../images/kubernetic-desktop-ui.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetic客户端","attributes":{},"skip":false,"key":"4.5.7.1"},{"backlink":"guide/kubernator-kubernetes-ui.html#fig4.5.8.1","level":"4.5.8","list_caption":"Figure: Kubernator catalog页面","alt":"Kubernator catalog页面","nro":71,"url":"../images/kubernator-catalog.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernator catalog页面","attributes":{},"skip":false,"key":"4.5.8.1"},{"backlink":"guide/kubernator-kubernetes-ui.html#fig4.5.8.2","level":"4.5.8","list_caption":"Figure: Kubernator rbac页面","alt":"Kubernator rbac页面","nro":72,"url":"../images/kubernator-rbac.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kubernator rbac页面","attributes":{},"skip":false,"key":"4.5.8.2"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.1","level":"4.6.1","list_caption":"Figure: API","alt":"API","nro":73,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"API","attributes":{},"skip":false,"key":"4.6.1.1"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.2","level":"4.6.1","list_caption":"Figure: wercker","alt":"wercker","nro":74,"url":"../images/k8s-app-monitor-agent-wercker.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"wercker","attributes":{},"skip":false,"key":"4.6.1.2"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.3","level":"4.6.1","list_caption":"Figure: 图表","alt":"图表","nro":75,"url":"../images/k8s-app-monitor-agent.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"图表","attributes":{},"skip":false,"key":"4.6.1.3"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig4.6.2.1","level":"4.6.2","list_caption":"Figure: spark on yarn with kubernetes","alt":"spark on yarn with kubernetes","nro":76,"url":"../images/spark-on-yarn-with-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"spark on yarn with kubernetes","attributes":{},"skip":false,"key":"4.6.2.1"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig4.6.2.2","level":"4.6.2","list_caption":"Figure: Terms","alt":"Terms","nro":77,"url":"../images/terms-in-kubernetes-app-deployment.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Terms","attributes":{},"skip":false,"key":"4.6.2.2"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig4.6.2.3","level":"4.6.2","list_caption":"Figure: 分解步骤解析","alt":"分解步骤解析","nro":78,"url":"../images/migrating-hadoop-yarn-to-kubernetes.png","index":3,"caption_template":"图片 - _CAPTION_","label":"分解步骤解析","attributes":{},"skip":false,"key":"4.6.2.3"},{"backlink":"practice/node-installation.html#fig5.2.7.1","level":"5.2.7","list_caption":"Figure: welcome nginx","alt":"welcome nginx","nro":79,"url":"../images/kubernetes-installation-test-nginx.png","index":1,"caption_template":"图片 - _CAPTION_","label":"welcome nginx","attributes":{},"skip":false,"key":"5.2.7.1"},{"backlink":"practice/dashboard-addon-installation.html#fig5.2.9.1","level":"5.2.9","list_caption":"Figure: kubernetes dashboard","alt":"kubernetes dashboard","nro":80,"url":"../images/kubernetes-dashboard-raw.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes dashboard","attributes":{},"skip":false,"key":"5.2.9.1"},{"backlink":"practice/dashboard-addon-installation.html#fig5.2.9.2","level":"5.2.9","list_caption":"Figure: V1.6.3版本的dashboard界面","alt":"V1.6.3版本的dashboard界面","nro":81,"url":"../images/dashboard-v163.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"V1.6.3版本的dashboard界面","attributes":{},"skip":false,"key":"5.2.9.2"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.1","level":"5.2.10","list_caption":"Figure: dashboard-heapster","alt":"dashboard-heapster","nro":82,"url":"../images/kubernetes-dashboard-with-heapster.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"dashboard-heapster","attributes":{},"skip":false,"key":"5.2.10.1"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.2","level":"5.2.10","list_caption":"Figure: grafana","alt":"grafana","nro":83,"url":"../images/kubernetes-heapster-grafana.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"grafana","attributes":{},"skip":false,"key":"5.2.10.2"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.3","level":"5.2.10","list_caption":"Figure: kubernetes-influxdb-heapster","alt":"kubernetes-influxdb-heapster","nro":84,"url":"../images/kubernetes-influxdb-heapster.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"kubernetes-influxdb-heapster","attributes":{},"skip":false,"key":"5.2.10.3"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.4","level":"5.2.10","list_caption":"Figure: 修改grafana模板","alt":"修改grafana模板","nro":85,"url":"../images/grafana-dashboard-setting.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"修改grafana模板","attributes":{},"skip":false,"key":"5.2.10.4"},{"backlink":"practice/efk-addon-installation.html#fig5.2.11.1","level":"5.2.11","list_caption":"Figure: es-setting","alt":"es-setting","nro":86,"url":"../images/es-setting.png","index":1,"caption_template":"图片 - _CAPTION_","label":"es-setting","attributes":{},"skip":false,"key":"5.2.11.1"},{"backlink":"practice/efk-addon-installation.html#fig5.2.11.2","level":"5.2.11","list_caption":"Figure: es-home","alt":"es-home","nro":87,"url":"../images/kubernetes-efk-kibana.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"es-home","attributes":{},"skip":false,"key":"5.2.11.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.1","level":"5.3.1","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":88,"url":"../images/traefik-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.3.1.1"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.2","level":"5.3.1","list_caption":"Figure: traefik-nginx","alt":"traefik-nginx","nro":89,"url":"../images/traefik-nginx.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"traefik-nginx","attributes":{},"skip":false,"key":"5.3.1.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.3","level":"5.3.1","list_caption":"Figure: traefik-guestbook","alt":"traefik-guestbook","nro":90,"url":"../images/traefik-guestbook.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"traefik-guestbook","attributes":{},"skip":false,"key":"5.3.1.3"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.1","level":"5.3.2","list_caption":"Figure: 使用dashboard来扩容","alt":"使用dashboard来扩容","nro":91,"url":"../images/dashbaord-scale.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用dashboard来扩容","attributes":{},"skip":false,"key":"5.3.2.1"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.2","level":"5.3.2","list_caption":"Figure: Traefik的UI","alt":"Traefik的UI","nro":92,"url":"../images/traefik-dashboard-locust.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Traefik的UI","attributes":{},"skip":false,"key":"5.3.2.2"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.3","level":"5.3.2","list_caption":"Figure: Locust启动界面","alt":"Locust启动界面","nro":93,"url":"../images/locust-start-swarming.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Locust启动界面","attributes":{},"skip":false,"key":"5.3.2.3"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.4","level":"5.3.2","list_caption":"Figure: Dashboard查看页面","alt":"Dashboard查看页面","nro":94,"url":"../images/sample-webapp-rc.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Dashboard查看页面","attributes":{},"skip":false,"key":"5.3.2.4"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.5","level":"5.3.2","list_caption":"Figure: Locust测试结果页面","alt":"Locust测试结果页面","nro":95,"url":"../images/locust-dashboard.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Locust测试结果页面","attributes":{},"skip":false,"key":"5.3.2.5"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.3.3.1","level":"5.3.3","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":96,"url":"../images/kubenetes-e2e-test.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.3.3.1"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.3.3.2","level":"5.3.3","list_caption":"Figure: locust测试页面","alt":"locust测试页面","nro":97,"url":"../images/kubernetes-locust-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"locust测试页面","attributes":{},"skip":false,"key":"5.3.3.2"},{"backlink":"practice/edge-node-configuration.html#fig5.3.4.1","level":"5.3.4","list_caption":"Figure: 边缘节点架构","alt":"边缘节点架构","nro":98,"url":"../images/kubernetes-edge-node-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"边缘节点架构","attributes":{},"skip":false,"key":"5.3.4.1"},{"backlink":"practice/edge-node-configuration.html#fig5.3.4.2","level":"5.3.4","list_caption":"Figure: 使用域名来访问Kubernetes中的服务","alt":"使用域名来访问Kubernetes中的服务","nro":99,"url":"../images/accessing-kubernetes-services-with-dns-name.png","index":2,"caption_template":"图片 - _CAPTION_","label":"使用域名来访问Kubernetes中的服务","attributes":{},"skip":false,"key":"5.3.4.2"},{"backlink":"practice/configuring-dns.html#fig5.3.6.1","level":"5.3.6","list_caption":"Figure: DNS lookup flow","alt":"DNS lookup flow","nro":100,"url":"https://d33wubrfki0l68.cloudfront.net/340889cb80e81dcd19a16bc34697a7907e2b229a/24ad0/docs/tasks/administer-cluster/dns-custom-nameservers/dns.png","index":1,"caption_template":"图片 - _CAPTION_","label":"DNS lookup flow","attributes":{},"skip":false,"key":"5.3.6.1"},{"backlink":"practice/app-log-collection.html#fig5.4.2.1","level":"5.4.2","list_caption":"Figure: filebeat日志收集架构图","alt":"filebeat日志收集架构图","nro":101,"url":"../images/filebeat-log-collector.png","index":1,"caption_template":"图片 - _CAPTION_","label":"filebeat日志收集架构图","attributes":{},"skip":false,"key":"5.4.2.1"},{"backlink":"practice/app-log-collection.html#fig5.4.2.2","level":"5.4.2","list_caption":"Figure: Kibana页面","alt":"Kibana页面","nro":102,"url":"../images/filebeat-docker-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kibana页面","attributes":{},"skip":false,"key":"5.4.2.2"},{"backlink":"practice/app-log-collection.html#fig5.4.2.3","level":"5.4.2","list_caption":"Figure: filebeat收集的日志详细信息","alt":"filebeat收集的日志详细信息","nro":103,"url":"../images/kubernetes-filebeat-detail.png","index":3,"caption_template":"图片 - _CAPTION_","label":"filebeat收集的日志详细信息","attributes":{},"skip":false,"key":"5.4.2.3"},{"backlink":"practice/monitor.html#fig5.4.4.1","level":"5.4.4","list_caption":"Figure: Kubernetes集群中的监控","alt":"Kubernetes集群中的监控","nro":104,"url":"../images/monitoring-in-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes集群中的监控","attributes":{},"skip":false,"key":"5.4.4.1"},{"backlink":"practice/monitor.html#fig5.4.4.2","level":"5.4.4","list_caption":"Figure: kubernetes的容器命名规则示意图","alt":"kubernetes的容器命名规则示意图","nro":105,"url":"../images/kubernetes-container-naming-rule.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"kubernetes的容器命名规则示意图","attributes":{},"skip":false,"key":"5.4.4.2"},{"backlink":"practice/monitor.html#fig5.4.4.3","level":"5.4.4","list_caption":"Figure: Heapster架构图(改进版)","alt":"Heapster架构图(改进版)","nro":106,"url":"../images/kubernetes-heapster-monitoring.png","index":3,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图(改进版)","attributes":{},"skip":false,"key":"5.4.4.3"},{"backlink":"practice/monitor.html#fig5.4.4.4","level":"5.4.4","list_caption":"Figure: 应用监控架构图","alt":"应用监控架构图","nro":107,"url":"../images/kubernetes-app-monitoring.png","index":4,"caption_template":"图片 - _CAPTION_","label":"应用监控架构图","attributes":{},"skip":false,"key":"5.4.4.4"},{"backlink":"practice/monitor.html#fig5.4.4.5","level":"5.4.4","list_caption":"Figure: 应用拓扑图","alt":"应用拓扑图","nro":108,"url":"../images/weave-scope-service-topology.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"应用拓扑图","attributes":{},"skip":false,"key":"5.4.4.5"},{"backlink":"practice/data-persistence-problem.html#fig5.4.5.1","level":"5.4.5","list_caption":"Figure: 日志持久化收集解决方案示意图","alt":"日志持久化收集解决方案示意图","nro":109,"url":"../images/log-persistence-logstash.png","index":1,"caption_template":"图片 - _CAPTION_","label":"日志持久化收集解决方案示意图","attributes":{},"skip":false,"key":"5.4.5.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.5.1.2.1","level":"5.5.1.2","list_caption":"Figure: 创建存储","alt":"创建存储","nro":110,"url":"../images/create-gluster-storage.png","index":1,"caption_template":"图片 - _CAPTION_","label":"创建存储","attributes":{},"skip":false,"key":"5.5.1.2.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.5.1.2.2","level":"5.5.1.2","list_caption":"Figure: Screen Shot 2017-03-24 at 11.09.34.png","alt":"Screen Shot 2017-03-24 at 11.09.34.png","nro":111,"url":"https://keithtenzer.files.wordpress.com/2017/03/screen-shot-2017-03-24-at-11-09-341.png?w=440","index":2,"caption_template":"图片 - _CAPTION_","label":"Screen Shot 2017-03-24 at 11.09.34.png","attributes":{},"skip":false,"key":"5.5.1.2.2"},{"backlink":"practice/openebs.html#fig5.5.3.1","level":"5.5.3","list_caption":"Figure: OpenEBS集群数据平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","alt":"OpenEBS集群数据平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","nro":112,"url":"../images/OpenEBS-Data-Plane.png","index":1,"caption_template":"图片 - _CAPTION_","label":"OpenEBS集群数据平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","attributes":{},"skip":false,"key":"5.5.3.1"},{"backlink":"practice/openebs.html#fig5.5.3.2","level":"5.5.3","list_caption":"Figure: OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","alt":"OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","nro":113,"url":"../images/OpenEBS-Control-Plane.png","index":2,"caption_template":"图片 - _CAPTION_","label":"OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","attributes":{},"skip":false,"key":"5.5.3.2"},{"backlink":"practice/using-openebs-for-persistent-storage.html#fig5.5.3.1.1","level":"5.5.3.1","list_caption":"Figure: Kubernetes iSCSI架构","alt":"Kubernetes iSCSI架构","nro":114,"url":"../images/iscsi-on-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes iSCSI架构","attributes":{},"skip":false,"key":"5.5.3.1.1"},{"backlink":"practice/using-heapster-to-get-object-metrics.html#fig5.6.1.1.1","level":"5.6.1.1","list_caption":"Figure: Heapster架构图","alt":"Heapster架构图","nro":115,"url":"../images/heapster-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图","attributes":{},"skip":false,"key":"5.6.1.1.1"},{"backlink":"practice/prometheus.html#fig5.6.2.1","level":"5.6.2","list_caption":"Figure: Prometheus 架构图","alt":"Prometheus 架构图","nro":116,"url":"../images/prometheus-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Prometheus 架构图","attributes":{},"skip":false,"key":"5.6.2.1"},{"backlink":"practice/using-prometheus-to-monitor-kuberentes-cluster.html#fig5.6.2.1.1","level":"5.6.2.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":117,"url":"../images/kubernetes-prometheus-monitoring.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"5.6.2.1.1"},{"backlink":"practice/helm.html#fig5.7.1.1","level":"5.7.1","list_caption":"Figure: Helm chart源","alt":"Helm chart源","nro":118,"url":"../images/helm-charts-repository.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm chart源","attributes":{},"skip":false,"key":"5.7.1.1"},{"backlink":"practice/helm.html#fig5.7.1.2","level":"5.7.1","list_caption":"Figure: TODO应用的Web页面","alt":"TODO应用的Web页面","nro":119,"url":"../images/helm-mean-todo-aholic.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"TODO应用的Web页面","attributes":{},"skip":false,"key":"5.7.1.2"},{"backlink":"practice/create-private-charts-repo.html#fig5.7.2.1","level":"5.7.2","list_caption":"Figure: Helm monocular界面","alt":"Helm monocular界面","nro":120,"url":"../images/helm-monocular-jimmysong.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm monocular界面","attributes":{},"skip":false,"key":"5.7.2.1"},{"backlink":"practice/jenkins-ci-cd.html#fig5.8.1.1","level":"5.8.1","list_caption":"Figure: 基于Jenkins的持续集成与发布","alt":"基于Jenkins的持续集成与发布","nro":121,"url":"../images/kubernetes-jenkins-ci-cd.png","index":1,"caption_template":"图片 - _CAPTION_","label":"基于Jenkins的持续集成与发布","attributes":{},"skip":false,"key":"5.8.1.1"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.1","level":"5.8.2","list_caption":"Figure: OAuth注册","alt":"OAuth注册","nro":122,"url":"../images/github-oauth-register.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OAuth注册","attributes":{},"skip":false,"key":"5.8.2.1"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.2","level":"5.8.2","list_caption":"Figure: OAuth key","alt":"OAuth key","nro":123,"url":"../images/github-oauth-drone-key.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OAuth key","attributes":{},"skip":false,"key":"5.8.2.2"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.3","level":"5.8.2","list_caption":"Figure: Drone登陆界面","alt":"Drone登陆界面","nro":124,"url":"../images/drone-login-github.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Drone登陆界面","attributes":{},"skip":false,"key":"5.8.2.3"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.4","level":"5.8.2","list_caption":"Figure: Github启用repo设置","alt":"Github启用repo设置","nro":125,"url":"../images/drone-github-active.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Github启用repo设置","attributes":{},"skip":false,"key":"5.8.2.4"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.5","level":"5.8.2","list_caption":"Figure: Github单个repo设置","alt":"Github单个repo设置","nro":126,"url":"../images/drone-github-repo-setting.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Github单个repo设置","attributes":{},"skip":false,"key":"5.8.2.5"},{"backlink":"practice/manually-upgrade.html#fig5.9.1.1","level":"5.9.1","list_caption":"Figure: Kubernetes零宕机时间升级建议","alt":"Kubernetes零宕机时间升级建议","nro":127,"url":"../images/zero-downtime-kubernetes-upgrade-tips.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes零宕机时间升级建议","attributes":{},"skip":false,"key":"5.9.1.1"},{"backlink":"practice/manually-upgrade.html#fig5.9.1.2","level":"5.9.1","list_caption":"Figure: Kuberentes API对象的版本演进","alt":"Kuberentes API对象的版本演进","nro":128,"url":"../images/kubernetes-apversions-changes.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kuberentes API对象的版本演进","attributes":{},"skip":false,"key":"5.9.1.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.1","level":"5.9.2","list_caption":"Figure: 登陆界面","alt":"登陆界面","nro":129,"url":"../images/kubernetes-dashboard-1.7.1-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"登陆界面","attributes":{},"skip":false,"key":"5.9.2.1"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.2","level":"5.9.2","list_caption":"Figure: 首页","alt":"首页","nro":130,"url":"../images/kubernetes-dashboard-1.7.1-default-page.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"首页","attributes":{},"skip":false,"key":"5.9.2.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.3","level":"5.9.2","list_caption":"Figure: 用户空间","alt":"用户空间","nro":131,"url":"../images/kubernetes-dashboard-1.7.1-brand.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"用户空间","attributes":{},"skip":false,"key":"5.9.2.3"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.4","level":"5.9.2","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":132,"url":"../images/brand-kubeconfig-yaml.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"5.9.2.4"},{"backlink":"usecases/microservices.html#fig6.2.1","level":"6.2","list_caption":"Figure: 微服务关注的部分","alt":"微服务关注的部分","nro":133,"url":"../images/microservices-concerns.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"微服务关注的部分","attributes":{},"skip":false,"key":"6.2.1"},{"backlink":"usecases/service-discovery-in-microservices.html#fig6.2.1.1","level":"6.2.1","list_caption":"Figure: 微服务中的服务发现","alt":"微服务中的服务发现","nro":134,"url":"../images/service-discovery-in-microservices.png","index":1,"caption_template":"图片 - _CAPTION_","label":"微服务中的服务发现","attributes":{},"skip":false,"key":"6.2.1.1"},{"backlink":"usecases/service-mesh.html#fig6.3.1","level":"6.3","list_caption":"Figure: 下一代异构微服务架构","alt":"下一代异构微服务架构","nro":135,"url":"../images/polyglot-microservices-serivce-mesh.png","index":1,"caption_template":"图片 - _CAPTION_","label":"下一代异构微服务架构","attributes":{},"skip":false,"key":"6.3.1"},{"backlink":"usecases/service-mesh.html#fig6.3.2","level":"6.3","list_caption":"Figure: Service Mesh 架构图","alt":"Service Mesh 架构图","nro":136,"url":"../images/serivce-mesh-control-plane.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Service Mesh 架构图","attributes":{},"skip":false,"key":"6.3.2"},{"backlink":"usecases/service-mesh.html#fig6.3.3","level":"6.3","list_caption":"Figure: Istio vs linkerd","alt":"Istio vs linkerd","nro":137,"url":"../images/istio-vs-linkerd.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Istio vs linkerd","attributes":{},"skip":false,"key":"6.3.3"},{"backlink":"usecases/istio.html#fig6.3.1.1","level":"6.3.1","list_caption":"Figure: Istio架构图","alt":"Istio架构图","nro":138,"url":"../images/istio-arch.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Istio架构图","attributes":{},"skip":false,"key":"6.3.1.1"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.1","level":"6.3.1.1","list_caption":"Figure: BookInfo Sample应用架构图","alt":"BookInfo Sample应用架构图","nro":139,"url":"../images/bookinfo-sample-arch.png","index":1,"caption_template":"图片 - _CAPTION_","label":"BookInfo Sample应用架构图","attributes":{},"skip":false,"key":"6.3.1.1.1"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.2","level":"6.3.1.1","list_caption":"Figure: BookInfo Sample页面","alt":"BookInfo Sample页面","nro":140,"url":"../images/bookinfo-sample.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"BookInfo Sample页面","attributes":{},"skip":false,"key":"6.3.1.1.2"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.3","level":"6.3.1.1","list_caption":"Figure: Istio Grafana界面","alt":"Istio Grafana界面","nro":141,"url":"../images/istio-grafana.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Istio Grafana界面","attributes":{},"skip":false,"key":"6.3.1.1.3"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.4","level":"6.3.1.1","list_caption":"Figure: Prometheus页面","alt":"Prometheus页面","nro":142,"url":"../images/istio-prometheus.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Prometheus页面","attributes":{},"skip":false,"key":"6.3.1.1.4"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.5","level":"6.3.1.1","list_caption":"Figure: Zipkin页面","alt":"Zipkin页面","nro":143,"url":"../images/istio-zipkin.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Zipkin页面","attributes":{},"skip":false,"key":"6.3.1.1.5"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.6","level":"6.3.1.1","list_caption":"Figure: ServiceGraph页面","alt":"ServiceGraph页面","nro":144,"url":"../images/istio-servicegraph.jpg","index":6,"caption_template":"图片 - _CAPTION_","label":"ServiceGraph页面","attributes":{},"skip":false,"key":"6.3.1.1.6"},{"backlink":"usecases/install-and-expand-istio-mesh.html#fig6.3.1.3.1","level":"6.3.1.3","list_caption":"Figure: BookInfo","alt":"BookInfo","nro":145,"url":"../images/noistio.png","index":1,"caption_template":"图片 - _CAPTION_","label":"BookInfo","attributes":{},"skip":false,"key":"6.3.1.3.1"},{"backlink":"usecases/install-and-expand-istio-mesh.html#fig6.3.1.3.2","level":"6.3.1.3","list_caption":"Figure: BookInfo","alt":"BookInfo","nro":146,"url":"../images/noistio.png","index":2,"caption_template":"图片 - _CAPTION_","label":"BookInfo","attributes":{},"skip":false,"key":"6.3.1.3.2"},{"backlink":"usecases/integrating-vms.html#fig6.3.1.4.1","level":"6.3.1.4","list_caption":"Figure: Bookinfo应用的拓展Mesh","alt":"Bookinfo应用的拓展Mesh","nro":147,"url":"../images/istio-mesh-expansion.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Bookinfo应用的拓展Mesh","attributes":{},"skip":false,"key":"6.3.1.4.1"},{"backlink":"usecases/linkerd.html#fig6.3.2.1","level":"6.3.2","list_caption":"Figure: source https://linkerd.io","alt":"source https://linkerd.io","nro":148,"url":"../images/diagram-individual-instance.png","index":1,"caption_template":"图片 - _CAPTION_","label":"source https://linkerd.io","attributes":{},"skip":false,"key":"6.3.2.1"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.1","level":"6.3.2.1","list_caption":"Figure: Jenkins pipeline","alt":"Jenkins pipeline","nro":149,"url":"../images/linkerd-jenkins-pipeline.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Jenkins pipeline","attributes":{},"skip":false,"key":"6.3.2.1.1"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.2","level":"6.3.2.1","list_caption":"Figure: Jenkins config","alt":"Jenkins config","nro":150,"url":"../images/linkerd-jenkins.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Jenkins config","attributes":{},"skip":false,"key":"6.3.2.1.2"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.3","level":"6.3.2.1","list_caption":"Figure: namerd","alt":"namerd","nro":151,"url":"../images/namerd-internal.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"namerd","attributes":{},"skip":false,"key":"6.3.2.1.3"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.4","level":"6.3.2.1","list_caption":"Figure: linkerd监控","alt":"linkerd监控","nro":152,"url":"../images/linkerd-helloworld-outgoing.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"linkerd监控","attributes":{},"skip":false,"key":"6.3.2.1.4"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.5","level":"6.3.2.1","list_caption":"Figure: linkerd监控","alt":"linkerd监控","nro":153,"url":"../images/linkerd-helloworld-incoming.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"linkerd监控","attributes":{},"skip":false,"key":"6.3.2.1.5"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.6","level":"6.3.2.1","list_caption":"Figure: linkerd性能监控","alt":"linkerd性能监控","nro":154,"url":"../images/linkerd-grafana.png","index":6,"caption_template":"图片 - _CAPTION_","label":"linkerd性能监控","attributes":{},"skip":false,"key":"6.3.2.1.6"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.7","level":"6.3.2.1","list_caption":"Figure: Linkerd ingress controller","alt":"Linkerd ingress controller","nro":155,"url":"../images/linkerd-ingress-controller.jpg","index":7,"caption_template":"图片 - _CAPTION_","label":"Linkerd ingress controller","attributes":{},"skip":false,"key":"6.3.2.1.7"},{"backlink":"usecases/conduit-installation.html#fig6.3.3.2.1","level":"6.3.3.2","list_caption":"Figure: Conduit dashboard","alt":"Conduit dashboard","nro":156,"url":"../images/conduit-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Conduit dashboard","attributes":{},"skip":false,"key":"6.3.3.2.1"},{"backlink":"usecases/big-data.html#fig6.4.1","level":"6.4","list_caption":"Figure: Spark on yarn with kubernetes","alt":"Spark on yarn with kubernetes","nro":157,"url":"../images/spark-on-yarn-with-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Spark on yarn with kubernetes","attributes":{},"skip":false,"key":"6.4.1"},{"backlink":"usecases/big-data.html#fig6.4.2","level":"6.4","list_caption":"Figure: 在kubernetes上使用多种调度方式","alt":"在kubernetes上使用多种调度方式","nro":158,"url":"../images/spark-on-kubernetes-with-different-schedulers.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"在kubernetes上使用多种调度方式","attributes":{},"skip":false,"key":"6.4.2"},{"backlink":"usecases/spark-standalone-on-kubernetes.html#fig6.4.1.1","level":"6.4.1","list_caption":"Figure: spark master ui","alt":"spark master ui","nro":159,"url":"../images/spark-ui.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"spark master ui","attributes":{},"skip":false,"key":"6.4.1.1"},{"backlink":"usecases/spark-standalone-on-kubernetes.html#fig6.4.1.2","level":"6.4.1","list_caption":"Figure: zeppelin ui","alt":"zeppelin ui","nro":160,"url":"../images/zeppelin-ui.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"zeppelin ui","attributes":{},"skip":false,"key":"6.4.1.2"},{"backlink":"usecases/serverless.html#fig6.5.1","level":"6.5","list_caption":"Figure: 从物理机到函数计算","alt":"从物理机到函数计算","nro":161,"url":"../images/from-bare-metal-to-functions.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"从物理机到函数计算","attributes":{},"skip":false,"key":"6.5.1"},{"backlink":"usecases/serverless.html#fig6.5.2","level":"6.5","list_caption":"Figure: FaaS Landscape","alt":"FaaS Landscape","nro":162,"url":"../images/redpoint-faas-landscape.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"FaaS Landscape","attributes":{},"skip":false,"key":"6.5.2"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.1","level":"6.5.1","list_caption":"Figure: 服务端软件的运行环境","alt":"服务端软件的运行环境","nro":163,"url":"../images/serverless-server-side-software.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"服务端软件的运行环境","attributes":{},"skip":false,"key":"6.5.1.1"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.2","level":"6.5.1","list_caption":"Figure: FaaS应用架构","alt":"FaaS应用架构","nro":164,"url":"../images/serverless-faas-platform.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"FaaS应用架构","attributes":{},"skip":false,"key":"6.5.1.2"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.3","level":"6.5.1","list_caption":"Figure: 传统应用程序架构","alt":"传统应用程序架构","nro":165,"url":"../images/non-serverless-game-arch.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"传统应用程序架构","attributes":{},"skip":false,"key":"6.5.1.3"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.4","level":"6.5.1","list_caption":"Figure: Serverless架构","alt":"Serverless架构","nro":166,"url":"../images/serverless-game-arch.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Serverless架构","attributes":{},"skip":false,"key":"6.5.1.4"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.1","level":"6.5.2.1","list_caption":"Figure: OpenFaaS架构","alt":"OpenFaaS架构","nro":167,"url":"../images/openfaas-arch.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OpenFaaS架构","attributes":{},"skip":false,"key":"6.5.2.1.1"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.2","level":"6.5.2.1","list_caption":"Figure: OpenFaaS Prometheus","alt":"OpenFaaS Prometheus","nro":168,"url":"../images/openfaas-prometheus.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OpenFaaS Prometheus","attributes":{},"skip":false,"key":"6.5.2.1.2"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.3","level":"6.5.2.1","list_caption":"Figure: OpenFaas Grafana监控","alt":"OpenFaas Grafana监控","nro":169,"url":"../images/openfaas-grafana.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"OpenFaas Grafana监控","attributes":{},"skip":false,"key":"6.5.2.1.3"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.4","level":"6.5.2.1","list_caption":"Figure: OpenFaas Dashboard","alt":"OpenFaas Dashboard","nro":170,"url":"../images/openfaas-deploy-a-function.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"OpenFaas Dashboard","attributes":{},"skip":false,"key":"6.5.2.1.4"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.5","level":"6.5.2.1","list_caption":"Figure: NodeInfo执行结果","alt":"NodeInfo执行结果","nro":171,"url":"../images/openfaas-nodeinfo.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"NodeInfo执行结果","attributes":{},"skip":false,"key":"6.5.2.1.5"},{"backlink":"develop/sigs-and-working-group.html#fig7.2.1","level":"7.2","list_caption":"Figure: Kubernetes SIG","alt":"Kubernetes SIG","nro":172,"url":"../images/kubernetes-sigs.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes SIG","attributes":{},"skip":false,"key":"7.2.1"},{"backlink":"develop/testing.html#fig7.5.1","level":"7.5","list_caption":"Figure: test-infra架构图(图片来自官方GitHub)","alt":"test-infra架构图(图片来自官方GitHub)","nro":173,"url":"../images/kubernetes-test-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"test-infra架构图(图片来自官方GitHub)","attributes":{},"skip":false,"key":"7.5.1"},{"backlink":"develop/client-go-sample.html#fig7.6.1","level":"7.6","list_caption":"Figure: 使用kubernetes dashboard进行故障排查","alt":"使用kubernetes dashboard进行故障排查","nro":174,"url":"../images/kubernetes-client-go-sample-update.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用kubernetes dashboard进行故障排查","attributes":{},"skip":false,"key":"7.6.1"},{"backlink":"appendix/issues.html#fig8.6.1","level":"8.6","list_caption":"Figure: pvc-storage-limit","alt":"pvc-storage-limit","nro":175,"url":"../images/pvc-storage-limit.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"pvc-storage-limit","attributes":{},"skip":false,"key":"8.6.1"}]},"title":"Kubernetes Handbook - jimmysong.io","language":"zh-hans","links":{"sidebar":{"Jimmy Song":"https://jimmysong.io"}},"gitbook":"*","description":"Kubernetes中文指南/实践手册|kubernetes handbook|jimmysong.io|宋净超"},"file":{"path":"concepts/statefulset.md","mtime":"2018-02-15T03:01:52.288Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2018-02-28T03:35:04.655Z"},"basePath":"..","book":{"language":""}});
+ gitbook.page.hasChanged({"page":{"title":"StatefulSet","level":"3.1.8.2","depth":3,"next":{"title":"DaemonSet","level":"3.1.8.3","depth":3,"path":"concepts/daemonset.md","ref":"concepts/daemonset.md","articles":[]},"previous":{"title":"Deployment","level":"3.1.8.1","depth":3,"path":"concepts/deployment.md","ref":"concepts/deployment.md","articles":[]},"dir":"ltr"},"config":{"plugins":["github","codesnippet","splitter","page-toc-button","image-captions","editlink","back-to-top-button","-lunr","-search","search-plus","github-buttons@2.1.0","favicon@^0.0.2","tbfed-pagefooter@^0.0.1","3-ba","theme-default","-highlight","prism","prism-themes"],"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"},"pluginsConfig":{"tbfed-pagefooter":{"copyright":"Copyright © jimmysong.io 2017-2018","modify_label":"Updated at ","modify_format":"YYYY-MM-DD HH:mm:ss"},"prism":{"css":["prism-themes/themes/prism-ghcolors.css"]},"github":{"url":"https://github.com/rootsongjc/kubernetes-handbook"},"editlink":{"label":"编辑本页","multilingual":false,"base":"https://github.com/rootsongjc/kubernetes-handbook/blob/master/"},"splitter":{},"codesnippet":{},"fontsettings":{"theme":"white","family":"sans","size":2},"favicon":{"shortcut":"favicon.ico","bookmark":"favicon.ico"},"page-toc-button":{},"back-to-top-button":{},"prism-themes":{},"github-buttons":{"repo":"rootsongjc/kubernetes-handbook","types":["star"],"size":"small"},"3-ba":{"configuration":"auto","token":"11f7d254cfa4e0ca44b175c66d379ecc"},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"showLevel":true,"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"}},"search-plus":{},"image-captions":{"caption":"图片 - _CAPTION_","variable_name":"_pictures"}},"theme":"default","author":"Jimmy Song","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{"_pictures":[{"backlink":"index.html#fig1.1.1","level":"1.1","list_caption":"Figure: Stargazers over time","alt":"Stargazers over time","nro":1,"url":"https://starcharts.herokuapp.com/rootsongjc/kubernetes-handbook.svg","index":1,"caption_template":"图片 - _CAPTION_","label":"Stargazers over time","attributes":{},"skip":false,"key":"1.1.1"},{"backlink":"cloud-native/cncf.html#fig1.2.1","level":"1.2","list_caption":"Figure: CNCF landscape","alt":"CNCF landscape","nro":2,"url":"https://github.com/cncf/landscape/raw/master/landscape/CloudNativeLandscape_latest.png","index":1,"caption_template":"图片 - _CAPTION_","label":"CNCF landscape","attributes":{},"skip":false,"key":"1.2.1"},{"backlink":"cloud-native/cncf.html#fig1.2.2","level":"1.2","list_caption":"Figure: CNCF项目成熟度级别","alt":"CNCF项目成熟度级别","nro":3,"url":"../images/cncf-graduation-criteria.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"CNCF项目成熟度级别","attributes":{},"skip":false,"key":"1.2.2"},{"backlink":"cloud-native/play-with-kubernetes.html#fig2.1.1","level":"2.1","list_caption":"Figure: Play with Kubernetes网页截图","alt":"Play with Kubernetes网页截图","nro":4,"url":"../images/play-with-kubernetes.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Play with Kubernetes网页截图","attributes":{},"skip":false,"key":"2.1.1"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.1","level":"2.2","list_caption":"Figure: 云计算演进历程","alt":"云计算演进历程","nro":5,"url":"../images/cloud-computing-evolution-road.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"云计算演进历程","attributes":{},"skip":false,"key":"2.2.1"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.2","level":"2.2","list_caption":"Figure: 来自Twitter @MarcWilczek","alt":"来自Twitter @MarcWilczek","nro":6,"url":"../images/cloud-native-comes-of-age.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"来自Twitter @MarcWilczek","attributes":{},"skip":false,"key":"2.2.2"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.3","level":"2.2","list_caption":"Figure: Cloud native思维导图","alt":"Cloud native思维导图","nro":7,"url":"../images/cloud-native-architecutre-mindnode.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Cloud native思维导图","attributes":{},"skip":false,"key":"2.2.3"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.4","level":"2.2","list_caption":"Figure: 十二因素应用","alt":"十二因素应用","nro":8,"url":"../images/12-factor-app.png","index":4,"caption_template":"图片 - _CAPTION_","label":"十二因素应用","attributes":{},"skip":false,"key":"2.2.4"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.5","level":"2.2","list_caption":"Figure: 容器生态","alt":"容器生态","nro":9,"url":"../images/container-ecosystem.png","index":5,"caption_template":"图片 - _CAPTION_","label":"容器生态","attributes":{},"skip":false,"key":"2.2.5"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.6","level":"2.2","list_caption":"Figure: 使用Jenkins进行持续集成与发布流程图","alt":"使用Jenkins进行持续集成与发布流程图","nro":10,"url":"../images/kubernetes-jenkins-ci-cd.png","index":6,"caption_template":"图片 - _CAPTION_","label":"使用Jenkins进行持续集成与发布流程图","attributes":{},"skip":false,"key":"2.2.6"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.7","level":"2.2","list_caption":"Figure: filebeat日志收集架构图","alt":"filebeat日志收集架构图","nro":11,"url":"../images/filebeat-log-collector-arch.png","index":7,"caption_template":"图片 - _CAPTION_","label":"filebeat日志收集架构图","attributes":{},"skip":false,"key":"2.2.7"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.8","level":"2.2","list_caption":"Figure: API文档","alt":"API文档","nro":12,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":8,"caption_template":"图片 - _CAPTION_","label":"API文档","attributes":{},"skip":false,"key":"2.2.8"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.9","level":"2.2","list_caption":"Figure: 迁移步骤示意图","alt":"迁移步骤示意图","nro":13,"url":"../images/migrating-hadoop-yarn-to-kubernetes.png","index":9,"caption_template":"图片 - _CAPTION_","label":"迁移步骤示意图","attributes":{},"skip":false,"key":"2.2.9"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.10","level":"2.2","list_caption":"Figure: service mesh架构图","alt":"service mesh架构图","nro":14,"url":"../images/serivce-mesh-control-plane.png","index":10,"caption_template":"图片 - _CAPTION_","label":"service mesh架构图","attributes":{},"skip":false,"key":"2.2.10"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.11","level":"2.2","list_caption":"Figure: kibana界面","alt":"kibana界面","nro":15,"url":"../images/filebeat-docker-test.jpg","index":11,"caption_template":"图片 - _CAPTION_","label":"kibana界面","attributes":{},"skip":false,"key":"2.2.11"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.12","level":"2.2","list_caption":"Figure: Grafana界面示意图1","alt":"Grafana界面示意图1","nro":16,"url":"../images/kubernetes-devops-example-grafana-1.png","index":12,"caption_template":"图片 - _CAPTION_","label":"Grafana界面示意图1","attributes":{},"skip":false,"key":"2.2.12"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.13","level":"2.2","list_caption":"Figure: Grafana界面示意图2","alt":"Grafana界面示意图2","nro":17,"url":"../images/kubernetes-devops-example-grafana-2.png","index":13,"caption_template":"图片 - _CAPTION_","label":"Grafana界面示意图2","attributes":{},"skip":false,"key":"2.2.13"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.14","level":"2.2","list_caption":"Figure: Grafana界面示意图3","alt":"Grafana界面示意图3","nro":18,"url":"../images/kubernetes-devops-example-grafana-3.png","index":14,"caption_template":"图片 - _CAPTION_","label":"Grafana界面示意图3","attributes":{},"skip":false,"key":"2.2.14"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.15","level":"2.2","list_caption":"Figure: dashboard","alt":"dashboard","nro":19,"url":"../images/spark-job-on-kubernetes-example-1.jpg","index":15,"caption_template":"图片 - _CAPTION_","label":"dashboard","attributes":{},"skip":false,"key":"2.2.15"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.16","level":"2.2","list_caption":"Figure: Grafana","alt":"Grafana","nro":20,"url":"../images/spark-job-on-kubernetes-example-2.jpg","index":16,"caption_template":"图片 - _CAPTION_","label":"Grafana","attributes":{},"skip":false,"key":"2.2.16"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.1","level":"2.3","list_caption":"Figure: Cloud Native容器实验室","alt":"Cloud Native容器实验室","nro":21,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-native-container-lab.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Cloud Native容器实验室","attributes":{},"skip":false,"key":"2.3.1"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.2","level":"2.3","list_caption":"Figure: 容器生态图 Container ecosystem","alt":"容器生态图 Container ecosystem","nro":22,"url":"../images/container-ecosystem.png","index":2,"caption_template":"图片 - _CAPTION_","label":"容器生态图 Container ecosystem","attributes":{},"skip":false,"key":"2.3.2"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.3","level":"2.3","list_caption":"Figure: Cloud Native油井","alt":"Cloud Native油井","nro":23,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-native-oil-well.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Cloud Native油井","attributes":{},"skip":false,"key":"2.3.3"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.4","level":"2.3","list_caption":"Figure: Kuberentes架构","alt":"Kuberentes架构","nro":24,"url":"../images/kubernetes-high-level-component-archtecture.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Kuberentes架构","attributes":{},"skip":false,"key":"2.3.4"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.5","level":"2.3","list_caption":"Figure: Cloud Native Core target","alt":"Cloud Native Core target","nro":25,"url":"../images/cloud-native-core-target.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Core target","attributes":{},"skip":false,"key":"2.3.5"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.6","level":"2.3","list_caption":"Figure: FaaS Landscape","alt":"FaaS Landscape","nro":26,"url":"../images/redpoint-faas-landscape.jpg","index":6,"caption_template":"图片 - _CAPTION_","label":"FaaS Landscape","attributes":{},"skip":false,"key":"2.3.6"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.7","level":"2.3","list_caption":"Figure: Workloads running on Kubernetes","alt":"Workloads running on Kubernetes","nro":27,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/workloads-running-on-kubernetes-2017-thenewstack.jpg","index":7,"caption_template":"图片 - _CAPTION_","label":"Workloads running on Kubernetes","attributes":{},"skip":false,"key":"2.3.7"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.8","level":"2.3","list_caption":"Figure: Gartner技术爆发趋势图2017","alt":"Gartner技术爆发趋势图2017","nro":28,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/gartner-hype-cycle-for-emerging-technologies-2017.jpg","index":8,"caption_template":"图片 - _CAPTION_","label":"Gartner技术爆发趋势图2017","attributes":{},"skip":false,"key":"2.3.8"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.9","level":"2.3","list_caption":"Figure: Microservices concerns","alt":"Microservices concerns","nro":29,"url":"../images/microservices-concerns.jpg","index":9,"caption_template":"图片 - _CAPTION_","label":"Microservices concerns","attributes":{},"skip":false,"key":"2.3.9"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.10","level":"2.3","list_caption":"Figure: 两种服务发现方式","alt":"两种服务发现方式","nro":30,"url":"../images/service-discovery-in-microservices.png","index":10,"caption_template":"图片 - _CAPTION_","label":"两种服务发现方式","attributes":{},"skip":false,"key":"2.3.10"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.11","level":"2.3","list_caption":"Figure: Cloud Native Pipeline","alt":"Cloud Native Pipeline","nro":31,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-natvie-pipeline.jpg","index":11,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Pipeline","attributes":{},"skip":false,"key":"2.3.11"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.12","level":"2.3","list_caption":"Figure: Cloud Native Features","alt":"Cloud Native Features","nro":32,"url":"https://jimmysong.io/kubernetes-handbook/images/cloud-native-architecutre-mindnode.jpg","index":12,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Features","attributes":{},"skip":false,"key":"2.3.12"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.13","level":"2.3","list_caption":"Figure: Cloud Native Landscape v1.0","alt":"Cloud Native Landscape v1.0","nro":33,"url":"https://raw.githubusercontent.com/cncf/landscape/master/landscape/CloudNativeLandscape_v1.0.jpg","index":13,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Landscape v1.0","attributes":{},"skip":false,"key":"2.3.13"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.14","level":"2.3","list_caption":"Figure: Building a Cloud Native Architecture with Kubernetes followed 12 factor app","alt":"Building a Cloud Native Architecture with Kubernetes followed 12 factor app","nro":34,"url":"../images/building-cloud-native-architecture-with-kubernetes.png","index":14,"caption_template":"图片 - _CAPTION_","label":"Building a Cloud Native Architecture with Kubernetes followed 12 factor app","attributes":{},"skip":false,"key":"2.3.14"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.15","level":"2.3","list_caption":"Figure: Creating Kubernetes native app","alt":"Creating Kubernetes native app","nro":35,"url":"../images/creating-kubernetes-native-app.jpg","index":15,"caption_template":"图片 - _CAPTION_","label":"Creating Kubernetes native app","attributes":{},"skip":false,"key":"2.3.15"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.16","level":"2.3","list_caption":"Figure: Service Mesh中国社区slogan","alt":"Service Mesh中国社区slogan","nro":36,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/service-meshes-pro.jpg","index":16,"caption_template":"图片 - _CAPTION_","label":"Service Mesh中国社区slogan","attributes":{},"skip":false,"key":"2.3.16"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.17","level":"2.3","list_caption":"Figure: istio vs linkerd","alt":"istio vs linkerd","nro":37,"url":"../images/istio-vs-linkerd.jpg","index":17,"caption_template":"图片 - _CAPTION_","label":"istio vs linkerd","attributes":{},"skip":false,"key":"2.3.17"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.18","level":"2.3","list_caption":"Figure: Cloud Native factory","alt":"Cloud Native factory","nro":38,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-native-factory.jpg","index":18,"caption_template":"图片 - _CAPTION_","label":"Cloud Native factory","attributes":{},"skip":false,"key":"2.3.18"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.19","level":"2.3","list_caption":"Figure: Deployment pipeline","alt":"Deployment pipeline","nro":39,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/deployment-pipeline-comic.jpg","index":19,"caption_template":"图片 - _CAPTION_","label":"Deployment pipeline","attributes":{},"skip":false,"key":"2.3.19"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.20","level":"2.3","list_caption":"Figure: Spark on Kubernetes with different schedulers","alt":"Spark on Kubernetes with different schedulers","nro":40,"url":"../images/spark-on-kubernetes-with-different-schedulers.jpg","index":20,"caption_template":"图片 - _CAPTION_","label":"Spark on Kubernetes with different schedulers","attributes":{},"skip":false,"key":"2.3.20"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.21","level":"2.3","list_caption":"Figure: Kubernetes solutions","alt":"Kubernetes solutions","nro":41,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/kubernetes-solutions-choices.jpg","index":21,"caption_template":"图片 - _CAPTION_","label":"Kubernetes solutions","attributes":{},"skip":false,"key":"2.3.21"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.22","level":"2.3","list_caption":"Figure: Kubernetes SIG","alt":"Kubernetes SIG","nro":42,"url":"../images/kubernetes-sigs.jpg","index":22,"caption_template":"图片 - _CAPTION_","label":"Kubernetes SIG","attributes":{},"skip":false,"key":"2.3.22"},{"backlink":"concepts/index.html#fig3.1.1","level":"3.1","list_caption":"Figure: Borg架构","alt":"Borg架构","nro":43,"url":"../images/borg.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Borg架构","attributes":{},"skip":false,"key":"3.1.1"},{"backlink":"concepts/index.html#fig3.1.2","level":"3.1","list_caption":"Figure: Kubernetes架构","alt":"Kubernetes架构","nro":44,"url":"../images/architecture.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Kubernetes架构","attributes":{},"skip":false,"key":"3.1.2"},{"backlink":"concepts/index.html#fig3.1.3","level":"3.1","list_caption":"Figure: Kuberentes架构(图片来自于网络)","alt":"Kuberentes架构(图片来自于网络)","nro":45,"url":"../images/kubernetes-high-level-component-archtecture.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Kuberentes架构(图片来自于网络)","attributes":{},"skip":false,"key":"3.1.3"},{"backlink":"concepts/index.html#fig3.1.4","level":"3.1","list_caption":"Figure: kubernetes整体架构示意图","alt":"kubernetes整体架构示意图","nro":46,"url":"../images/kubernetes-whole-arch.png","index":4,"caption_template":"图片 - _CAPTION_","label":"kubernetes整体架构示意图","attributes":{},"skip":false,"key":"3.1.4"},{"backlink":"concepts/index.html#fig3.1.5","level":"3.1","list_caption":"Figure: Kubernetes master架构示意图","alt":"Kubernetes master架构示意图","nro":47,"url":"../images/kubernetes-master-arch.png","index":5,"caption_template":"图片 - _CAPTION_","label":"Kubernetes master架构示意图","attributes":{},"skip":false,"key":"3.1.5"},{"backlink":"concepts/index.html#fig3.1.6","level":"3.1","list_caption":"Figure: kubernetes node架构示意图","alt":"kubernetes node架构示意图","nro":48,"url":"../images/kubernetes-node-arch.png","index":6,"caption_template":"图片 - _CAPTION_","label":"kubernetes node架构示意图","attributes":{},"skip":false,"key":"3.1.6"},{"backlink":"concepts/index.html#fig3.1.7","level":"3.1","list_caption":"Figure: Kubernetes分层架构示意图","alt":"Kubernetes分层架构示意图","nro":49,"url":"../images/kubernetes-layers-arch.jpg","index":7,"caption_template":"图片 - _CAPTION_","label":"Kubernetes分层架构示意图","attributes":{},"skip":false,"key":"3.1.7"},{"backlink":"concepts/concepts.html#fig3.1.1.1","level":"3.1.1","list_caption":"Figure: 分层架构示意图","alt":"分层架构示意图","nro":50,"url":"../images/kubernetes-layers-arch.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"分层架构示意图","attributes":{},"skip":false,"key":"3.1.1.1"},{"backlink":"concepts/open-interfaces.html#fig3.1.3.1","level":"3.1.3","list_caption":"Figure: 开放接口","alt":"开放接口","nro":51,"url":"../images/open-interfaces.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"开放接口","attributes":{},"skip":false,"key":"3.1.3.1"},{"backlink":"concepts/cri.html#fig3.1.3.1.1","level":"3.1.3.1","list_caption":"Figure: CRI架构-图片来自kubernetes blog","alt":"CRI架构-图片来自kubernetes blog","nro":52,"url":"../images/cri-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"CRI架构-图片来自kubernetes blog","attributes":{},"skip":false,"key":"3.1.3.1.1"},{"backlink":"concepts/networking.html#fig3.1.4.1","level":"3.1.4","list_caption":"Figure: flannel网络架构(图片来自openshift)","alt":"flannel网络架构(图片来自openshift)","nro":53,"url":"../images/flannel-networking.png","index":1,"caption_template":"图片 - _CAPTION_","label":"flannel网络架构(图片来自openshift)","attributes":{},"skip":false,"key":"3.1.4.1"},{"backlink":"concepts/calico.html#fig3.1.5.1","level":"3.1.5","list_caption":"Figure: CRI架构-图片来自https://www.jianshu.com/p/f0177b84de66","alt":"CRI架构-图片来自https://www.jianshu.com/p/f0177b84de66","nro":54,"url":"../images/calico.png","index":1,"caption_template":"图片 - _CAPTION_","label":"CRI架构-图片来自https://www.jianshu.com/p/f0177b84de66","attributes":{},"skip":false,"key":"3.1.5.1"},{"backlink":"concepts/pod-overview.html#fig3.1.6.2.1","level":"3.1.6.2","list_caption":"Figure: pod diagram","alt":"pod diagram","nro":55,"url":"../images/pod-overview.png","index":1,"caption_template":"图片 - _CAPTION_","label":"pod diagram","attributes":{},"skip":false,"key":"3.1.6.2.1"},{"backlink":"concepts/pod.html#fig3.1.6.3.1","level":"3.1.6.3","list_caption":"Figure: Pod示意图","alt":"Pod示意图","nro":56,"url":"../images/pod-overview.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Pod示意图","attributes":{},"skip":false,"key":"3.1.6.3.1"},{"backlink":"concepts/pod.html#fig3.1.6.3.2","level":"3.1.6.3","list_caption":"Figure: Pod Cheatsheet","alt":"Pod Cheatsheet","nro":57,"url":"../images/kubernetes-pod-cheatsheet.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Pod Cheatsheet","attributes":{},"skip":false,"key":"3.1.6.3.2"},{"backlink":"concepts/label.html#fig3.1.7.3.1","level":"3.1.7.3","list_caption":"Figure: label示意图","alt":"label示意图","nro":58,"url":"../images/labels.png","index":1,"caption_template":"图片 - _CAPTION_","label":"label示意图","attributes":{},"skip":false,"key":"3.1.7.3.1"},{"backlink":"concepts/deployment.html#fig3.1.8.1.1","level":"3.1.8.1","list_caption":"Figure: kubernetes deployment cheatsheet","alt":"kubernetes deployment cheatsheet","nro":59,"url":"../images/deployment-cheatsheet.png","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes deployment cheatsheet","attributes":{},"skip":false,"key":"3.1.8.1.1"},{"backlink":"concepts/horizontal-pod-autoscaling.html#fig3.1.8.7.1","level":"3.1.8.7","list_caption":"Figure: horizontal-pod-autoscaler","alt":"horizontal-pod-autoscaler","nro":60,"url":"../images/horizontal-pod-autoscaler.png","index":1,"caption_template":"图片 - _CAPTION_","label":"horizontal-pod-autoscaler","attributes":{},"skip":false,"key":"3.1.8.7.1"},{"backlink":"concepts/service.html#fig3.1.9.1.1","level":"3.1.9.1","list_caption":"Figure: userspace代理模式下Service概览图","alt":"userspace代理模式下Service概览图","nro":61,"url":"../images/services-userspace-overview.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"userspace代理模式下Service概览图","attributes":{},"skip":false,"key":"3.1.9.1.1"},{"backlink":"concepts/service.html#fig3.1.9.1.2","level":"3.1.9.1","list_caption":"Figure: iptables代理模式下Service概览图","alt":"iptables代理模式下Service概览图","nro":62,"url":"../images/services-iptables-overview.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"iptables代理模式下Service概览图","attributes":{},"skip":false,"key":"3.1.9.1.2"},{"backlink":"guide/using-kubectl.html#fig4.3.2.1","level":"4.3.2","list_caption":"Figure: kubectl cheatsheet","alt":"kubectl cheatsheet","nro":63,"url":"../images/kubernetes-kubectl-cheatsheet.png","index":1,"caption_template":"图片 - _CAPTION_","label":"kubectl cheatsheet","attributes":{},"skip":false,"key":"4.3.2.1"},{"backlink":"guide/using-kubectl.html#fig4.3.2.2","level":"4.3.2","list_caption":"Figure: 增加kubeclt命令的工具(图片来自网络)","alt":"增加kubeclt命令的工具(图片来自网络)","nro":64,"url":"../images/tools-to-supercharge-kubectl.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"增加kubeclt命令的工具(图片来自网络)","attributes":{},"skip":false,"key":"4.3.2.2"},{"backlink":"guide/using-kubectl.html#fig4.3.2.3","level":"4.3.2","list_caption":"Figure: 增强的kubectl命令","alt":"增强的kubectl命令","nro":65,"url":"../images/supercharged-kubectl.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"增强的kubectl命令","attributes":{},"skip":false,"key":"4.3.2.3"},{"backlink":"guide/using-kubectl.html#fig4.3.2.4","level":"4.3.2","list_caption":"Figure: kube-shell页面","alt":"kube-shell页面","nro":66,"url":"../images/kube-shell.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kube-shell页面","attributes":{},"skip":false,"key":"4.3.2.4"},{"backlink":"guide/ip-masq-agent.html#fig4.4.5.1","level":"4.4.5","list_caption":"Figure: IP伪装代理示意图","alt":"IP伪装代理示意图","nro":67,"url":"../images/ip-masq.png","index":1,"caption_template":"图片 - _CAPTION_","label":"IP伪装代理示意图","attributes":{},"skip":false,"key":"4.4.5.1"},{"backlink":"guide/auth-with-kubeconfig-or-token.html#fig4.4.6.1","level":"4.4.6","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":68,"url":"../images/brand-kubeconfig-yaml.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"4.4.6.1"},{"backlink":"guide/authentication.html#fig4.4.7.1","level":"4.4.7","list_caption":"Figure: Kubernetes OpenID Connect Flow","alt":"Kubernetes OpenID Connect Flow","nro":69,"url":"../images/kubernetes-oidc-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes OpenID Connect Flow","attributes":{},"skip":false,"key":"4.4.7.1"},{"backlink":"guide/cabin-mobile-dashboard-for-kubernetes.html#fig4.5.6.1","level":"4.5.6","list_caption":"Figure: App Store","alt":"App Store","nro":70,"url":"../images/cabin-kubernetes-mobile-dashboard-1.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"App Store","attributes":{},"skip":false,"key":"4.5.6.1"},{"backlink":"guide/cabin-mobile-dashboard-for-kubernetes.html#fig4.5.6.2","level":"4.5.6","list_caption":"Figure: 在手机上操作Kubernetes集群","alt":"在手机上操作Kubernetes集群","nro":71,"url":"../images/cabin-kubernetes-mobile-dashboard-4.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"在手机上操作Kubernetes集群","attributes":{},"skip":false,"key":"4.5.6.2"},{"backlink":"guide/kubernetes-desktop-client.html#fig4.5.7.1","level":"4.5.7","list_caption":"Figure: Kubernetic客户端","alt":"Kubernetic客户端","nro":72,"url":"../images/kubernetic-desktop-ui.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetic客户端","attributes":{},"skip":false,"key":"4.5.7.1"},{"backlink":"guide/kubernator-kubernetes-ui.html#fig4.5.8.1","level":"4.5.8","list_caption":"Figure: Kubernator catalog页面","alt":"Kubernator catalog页面","nro":73,"url":"../images/kubernator-catalog.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernator catalog页面","attributes":{},"skip":false,"key":"4.5.8.1"},{"backlink":"guide/kubernator-kubernetes-ui.html#fig4.5.8.2","level":"4.5.8","list_caption":"Figure: Kubernator rbac页面","alt":"Kubernator rbac页面","nro":74,"url":"../images/kubernator-rbac.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kubernator rbac页面","attributes":{},"skip":false,"key":"4.5.8.2"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.1","level":"4.6.1","list_caption":"Figure: API","alt":"API","nro":75,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"API","attributes":{},"skip":false,"key":"4.6.1.1"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.2","level":"4.6.1","list_caption":"Figure: wercker","alt":"wercker","nro":76,"url":"../images/k8s-app-monitor-agent-wercker.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"wercker","attributes":{},"skip":false,"key":"4.6.1.2"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.3","level":"4.6.1","list_caption":"Figure: 图表","alt":"图表","nro":77,"url":"../images/k8s-app-monitor-agent.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"图表","attributes":{},"skip":false,"key":"4.6.1.3"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig4.6.2.1","level":"4.6.2","list_caption":"Figure: spark on yarn with kubernetes","alt":"spark on yarn with kubernetes","nro":78,"url":"../images/spark-on-yarn-with-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"spark on yarn with kubernetes","attributes":{},"skip":false,"key":"4.6.2.1"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig4.6.2.2","level":"4.6.2","list_caption":"Figure: Terms","alt":"Terms","nro":79,"url":"../images/terms-in-kubernetes-app-deployment.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Terms","attributes":{},"skip":false,"key":"4.6.2.2"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig4.6.2.3","level":"4.6.2","list_caption":"Figure: 分解步骤解析","alt":"分解步骤解析","nro":80,"url":"../images/migrating-hadoop-yarn-to-kubernetes.png","index":3,"caption_template":"图片 - _CAPTION_","label":"分解步骤解析","attributes":{},"skip":false,"key":"4.6.2.3"},{"backlink":"practice/node-installation.html#fig5.2.7.1","level":"5.2.7","list_caption":"Figure: welcome nginx","alt":"welcome nginx","nro":81,"url":"../images/kubernetes-installation-test-nginx.png","index":1,"caption_template":"图片 - _CAPTION_","label":"welcome nginx","attributes":{},"skip":false,"key":"5.2.7.1"},{"backlink":"practice/dashboard-addon-installation.html#fig5.2.9.1","level":"5.2.9","list_caption":"Figure: kubernetes dashboard","alt":"kubernetes dashboard","nro":82,"url":"../images/kubernetes-dashboard-raw.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes dashboard","attributes":{},"skip":false,"key":"5.2.9.1"},{"backlink":"practice/dashboard-addon-installation.html#fig5.2.9.2","level":"5.2.9","list_caption":"Figure: V1.6.3版本的dashboard界面","alt":"V1.6.3版本的dashboard界面","nro":83,"url":"../images/dashboard-v163.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"V1.6.3版本的dashboard界面","attributes":{},"skip":false,"key":"5.2.9.2"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.1","level":"5.2.10","list_caption":"Figure: dashboard-heapster","alt":"dashboard-heapster","nro":84,"url":"../images/kubernetes-dashboard-with-heapster.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"dashboard-heapster","attributes":{},"skip":false,"key":"5.2.10.1"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.2","level":"5.2.10","list_caption":"Figure: grafana","alt":"grafana","nro":85,"url":"../images/kubernetes-heapster-grafana.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"grafana","attributes":{},"skip":false,"key":"5.2.10.2"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.3","level":"5.2.10","list_caption":"Figure: kubernetes-influxdb-heapster","alt":"kubernetes-influxdb-heapster","nro":86,"url":"../images/kubernetes-influxdb-heapster.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"kubernetes-influxdb-heapster","attributes":{},"skip":false,"key":"5.2.10.3"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.4","level":"5.2.10","list_caption":"Figure: 修改grafana模板","alt":"修改grafana模板","nro":87,"url":"../images/grafana-dashboard-setting.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"修改grafana模板","attributes":{},"skip":false,"key":"5.2.10.4"},{"backlink":"practice/efk-addon-installation.html#fig5.2.11.1","level":"5.2.11","list_caption":"Figure: es-setting","alt":"es-setting","nro":88,"url":"../images/es-setting.png","index":1,"caption_template":"图片 - _CAPTION_","label":"es-setting","attributes":{},"skip":false,"key":"5.2.11.1"},{"backlink":"practice/efk-addon-installation.html#fig5.2.11.2","level":"5.2.11","list_caption":"Figure: es-home","alt":"es-home","nro":89,"url":"../images/kubernetes-efk-kibana.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"es-home","attributes":{},"skip":false,"key":"5.2.11.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.1","level":"5.3.1","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":90,"url":"../images/traefik-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.3.1.1"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.2","level":"5.3.1","list_caption":"Figure: traefik-nginx","alt":"traefik-nginx","nro":91,"url":"../images/traefik-nginx.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"traefik-nginx","attributes":{},"skip":false,"key":"5.3.1.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.3","level":"5.3.1","list_caption":"Figure: traefik-guestbook","alt":"traefik-guestbook","nro":92,"url":"../images/traefik-guestbook.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"traefik-guestbook","attributes":{},"skip":false,"key":"5.3.1.3"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.1","level":"5.3.2","list_caption":"Figure: 使用dashboard来扩容","alt":"使用dashboard来扩容","nro":93,"url":"../images/dashbaord-scale.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用dashboard来扩容","attributes":{},"skip":false,"key":"5.3.2.1"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.2","level":"5.3.2","list_caption":"Figure: Traefik的UI","alt":"Traefik的UI","nro":94,"url":"../images/traefik-dashboard-locust.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Traefik的UI","attributes":{},"skip":false,"key":"5.3.2.2"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.3","level":"5.3.2","list_caption":"Figure: Locust启动界面","alt":"Locust启动界面","nro":95,"url":"../images/locust-start-swarming.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Locust启动界面","attributes":{},"skip":false,"key":"5.3.2.3"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.4","level":"5.3.2","list_caption":"Figure: Dashboard查看页面","alt":"Dashboard查看页面","nro":96,"url":"../images/sample-webapp-rc.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Dashboard查看页面","attributes":{},"skip":false,"key":"5.3.2.4"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.5","level":"5.3.2","list_caption":"Figure: Locust测试结果页面","alt":"Locust测试结果页面","nro":97,"url":"../images/locust-dashboard.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Locust测试结果页面","attributes":{},"skip":false,"key":"5.3.2.5"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.3.3.1","level":"5.3.3","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":98,"url":"../images/kubenetes-e2e-test.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.3.3.1"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.3.3.2","level":"5.3.3","list_caption":"Figure: locust测试页面","alt":"locust测试页面","nro":99,"url":"../images/kubernetes-locust-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"locust测试页面","attributes":{},"skip":false,"key":"5.3.3.2"},{"backlink":"practice/edge-node-configuration.html#fig5.3.4.1","level":"5.3.4","list_caption":"Figure: 边缘节点架构","alt":"边缘节点架构","nro":100,"url":"../images/kubernetes-edge-node-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"边缘节点架构","attributes":{},"skip":false,"key":"5.3.4.1"},{"backlink":"practice/edge-node-configuration.html#fig5.3.4.2","level":"5.3.4","list_caption":"Figure: 使用域名来访问Kubernetes中的服务","alt":"使用域名来访问Kubernetes中的服务","nro":101,"url":"../images/accessing-kubernetes-services-with-dns-name.png","index":2,"caption_template":"图片 - _CAPTION_","label":"使用域名来访问Kubernetes中的服务","attributes":{},"skip":false,"key":"5.3.4.2"},{"backlink":"practice/configuring-dns.html#fig5.3.6.1","level":"5.3.6","list_caption":"Figure: DNS lookup flow","alt":"DNS lookup flow","nro":102,"url":"https://d33wubrfki0l68.cloudfront.net/340889cb80e81dcd19a16bc34697a7907e2b229a/24ad0/docs/tasks/administer-cluster/dns-custom-nameservers/dns.png","index":1,"caption_template":"图片 - _CAPTION_","label":"DNS lookup flow","attributes":{},"skip":false,"key":"5.3.6.1"},{"backlink":"practice/app-log-collection.html#fig5.4.2.1","level":"5.4.2","list_caption":"Figure: filebeat日志收集架构图","alt":"filebeat日志收集架构图","nro":103,"url":"../images/filebeat-log-collector.png","index":1,"caption_template":"图片 - _CAPTION_","label":"filebeat日志收集架构图","attributes":{},"skip":false,"key":"5.4.2.1"},{"backlink":"practice/app-log-collection.html#fig5.4.2.2","level":"5.4.2","list_caption":"Figure: Kibana页面","alt":"Kibana页面","nro":104,"url":"../images/filebeat-docker-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kibana页面","attributes":{},"skip":false,"key":"5.4.2.2"},{"backlink":"practice/app-log-collection.html#fig5.4.2.3","level":"5.4.2","list_caption":"Figure: filebeat收集的日志详细信息","alt":"filebeat收集的日志详细信息","nro":105,"url":"../images/kubernetes-filebeat-detail.png","index":3,"caption_template":"图片 - _CAPTION_","label":"filebeat收集的日志详细信息","attributes":{},"skip":false,"key":"5.4.2.3"},{"backlink":"practice/monitor.html#fig5.4.4.1","level":"5.4.4","list_caption":"Figure: Kubernetes集群中的监控","alt":"Kubernetes集群中的监控","nro":106,"url":"../images/monitoring-in-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes集群中的监控","attributes":{},"skip":false,"key":"5.4.4.1"},{"backlink":"practice/monitor.html#fig5.4.4.2","level":"5.4.4","list_caption":"Figure: kubernetes的容器命名规则示意图","alt":"kubernetes的容器命名规则示意图","nro":107,"url":"../images/kubernetes-container-naming-rule.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"kubernetes的容器命名规则示意图","attributes":{},"skip":false,"key":"5.4.4.2"},{"backlink":"practice/monitor.html#fig5.4.4.3","level":"5.4.4","list_caption":"Figure: Heapster架构图(改进版)","alt":"Heapster架构图(改进版)","nro":108,"url":"../images/kubernetes-heapster-monitoring.png","index":3,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图(改进版)","attributes":{},"skip":false,"key":"5.4.4.3"},{"backlink":"practice/monitor.html#fig5.4.4.4","level":"5.4.4","list_caption":"Figure: 应用监控架构图","alt":"应用监控架构图","nro":109,"url":"../images/kubernetes-app-monitoring.png","index":4,"caption_template":"图片 - _CAPTION_","label":"应用监控架构图","attributes":{},"skip":false,"key":"5.4.4.4"},{"backlink":"practice/monitor.html#fig5.4.4.5","level":"5.4.4","list_caption":"Figure: 应用拓扑图","alt":"应用拓扑图","nro":110,"url":"../images/weave-scope-service-topology.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"应用拓扑图","attributes":{},"skip":false,"key":"5.4.4.5"},{"backlink":"practice/data-persistence-problem.html#fig5.4.5.1","level":"5.4.5","list_caption":"Figure: 日志持久化收集解决方案示意图","alt":"日志持久化收集解决方案示意图","nro":111,"url":"../images/log-persistence-logstash.png","index":1,"caption_template":"图片 - _CAPTION_","label":"日志持久化收集解决方案示意图","attributes":{},"skip":false,"key":"5.4.5.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.5.1.2.1","level":"5.5.1.2","list_caption":"Figure: 创建存储","alt":"创建存储","nro":112,"url":"../images/create-gluster-storage.png","index":1,"caption_template":"图片 - _CAPTION_","label":"创建存储","attributes":{},"skip":false,"key":"5.5.1.2.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.5.1.2.2","level":"5.5.1.2","list_caption":"Figure: Screen Shot 2017-03-24 at 11.09.34.png","alt":"Screen Shot 2017-03-24 at 11.09.34.png","nro":113,"url":"https://keithtenzer.files.wordpress.com/2017/03/screen-shot-2017-03-24-at-11-09-341.png?w=440","index":2,"caption_template":"图片 - _CAPTION_","label":"Screen Shot 2017-03-24 at 11.09.34.png","attributes":{},"skip":false,"key":"5.5.1.2.2"},{"backlink":"practice/openebs.html#fig5.5.3.1","level":"5.5.3","list_caption":"Figure: OpenEBS集群数据平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","alt":"OpenEBS集群数据平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","nro":114,"url":"../images/OpenEBS-Data-Plane.png","index":1,"caption_template":"图片 - _CAPTION_","label":"OpenEBS集群数据平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","attributes":{},"skip":false,"key":"5.5.3.1"},{"backlink":"practice/openebs.html#fig5.5.3.2","level":"5.5.3","list_caption":"Figure: OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","alt":"OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","nro":115,"url":"../images/OpenEBS-Control-Plane.png","index":2,"caption_template":"图片 - _CAPTION_","label":"OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","attributes":{},"skip":false,"key":"5.5.3.2"},{"backlink":"practice/using-openebs-for-persistent-storage.html#fig5.5.3.1.1","level":"5.5.3.1","list_caption":"Figure: Kubernetes iSCSI架构","alt":"Kubernetes iSCSI架构","nro":116,"url":"../images/iscsi-on-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes iSCSI架构","attributes":{},"skip":false,"key":"5.5.3.1.1"},{"backlink":"practice/using-heapster-to-get-object-metrics.html#fig5.6.1.1.1","level":"5.6.1.1","list_caption":"Figure: Heapster架构图","alt":"Heapster架构图","nro":117,"url":"../images/heapster-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图","attributes":{},"skip":false,"key":"5.6.1.1.1"},{"backlink":"practice/prometheus.html#fig5.6.2.1","level":"5.6.2","list_caption":"Figure: Prometheus 架构图","alt":"Prometheus 架构图","nro":118,"url":"../images/prometheus-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Prometheus 架构图","attributes":{},"skip":false,"key":"5.6.2.1"},{"backlink":"practice/using-prometheus-to-monitor-kuberentes-cluster.html#fig5.6.2.1.1","level":"5.6.2.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":119,"url":"../images/kubernetes-prometheus-monitoring.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"5.6.2.1.1"},{"backlink":"practice/helm.html#fig5.7.1.1","level":"5.7.1","list_caption":"Figure: Helm chart源","alt":"Helm chart源","nro":120,"url":"../images/helm-charts-repository.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm chart源","attributes":{},"skip":false,"key":"5.7.1.1"},{"backlink":"practice/helm.html#fig5.7.1.2","level":"5.7.1","list_caption":"Figure: TODO应用的Web页面","alt":"TODO应用的Web页面","nro":121,"url":"../images/helm-mean-todo-aholic.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"TODO应用的Web页面","attributes":{},"skip":false,"key":"5.7.1.2"},{"backlink":"practice/create-private-charts-repo.html#fig5.7.2.1","level":"5.7.2","list_caption":"Figure: Helm monocular界面","alt":"Helm monocular界面","nro":122,"url":"../images/helm-monocular-jimmysong.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm monocular界面","attributes":{},"skip":false,"key":"5.7.2.1"},{"backlink":"practice/jenkins-ci-cd.html#fig5.8.1.1","level":"5.8.1","list_caption":"Figure: 基于Jenkins的持续集成与发布","alt":"基于Jenkins的持续集成与发布","nro":123,"url":"../images/kubernetes-jenkins-ci-cd.png","index":1,"caption_template":"图片 - _CAPTION_","label":"基于Jenkins的持续集成与发布","attributes":{},"skip":false,"key":"5.8.1.1"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.1","level":"5.8.2","list_caption":"Figure: OAuth注册","alt":"OAuth注册","nro":124,"url":"../images/github-oauth-register.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OAuth注册","attributes":{},"skip":false,"key":"5.8.2.1"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.2","level":"5.8.2","list_caption":"Figure: OAuth key","alt":"OAuth key","nro":125,"url":"../images/github-oauth-drone-key.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OAuth key","attributes":{},"skip":false,"key":"5.8.2.2"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.3","level":"5.8.2","list_caption":"Figure: Drone登陆界面","alt":"Drone登陆界面","nro":126,"url":"../images/drone-login-github.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Drone登陆界面","attributes":{},"skip":false,"key":"5.8.2.3"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.4","level":"5.8.2","list_caption":"Figure: Github启用repo设置","alt":"Github启用repo设置","nro":127,"url":"../images/drone-github-active.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Github启用repo设置","attributes":{},"skip":false,"key":"5.8.2.4"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.5","level":"5.8.2","list_caption":"Figure: Github单个repo设置","alt":"Github单个repo设置","nro":128,"url":"../images/drone-github-repo-setting.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Github单个repo设置","attributes":{},"skip":false,"key":"5.8.2.5"},{"backlink":"practice/manually-upgrade.html#fig5.9.1.1","level":"5.9.1","list_caption":"Figure: Kubernetes零宕机时间升级建议","alt":"Kubernetes零宕机时间升级建议","nro":129,"url":"../images/zero-downtime-kubernetes-upgrade-tips.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes零宕机时间升级建议","attributes":{},"skip":false,"key":"5.9.1.1"},{"backlink":"practice/manually-upgrade.html#fig5.9.1.2","level":"5.9.1","list_caption":"Figure: Kuberentes API对象的版本演进","alt":"Kuberentes API对象的版本演进","nro":130,"url":"../images/kubernetes-apversions-changes.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kuberentes API对象的版本演进","attributes":{},"skip":false,"key":"5.9.1.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.1","level":"5.9.2","list_caption":"Figure: 登陆界面","alt":"登陆界面","nro":131,"url":"../images/kubernetes-dashboard-1.7.1-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"登陆界面","attributes":{},"skip":false,"key":"5.9.2.1"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.2","level":"5.9.2","list_caption":"Figure: 首页","alt":"首页","nro":132,"url":"../images/kubernetes-dashboard-1.7.1-default-page.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"首页","attributes":{},"skip":false,"key":"5.9.2.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.3","level":"5.9.2","list_caption":"Figure: 用户空间","alt":"用户空间","nro":133,"url":"../images/kubernetes-dashboard-1.7.1-brand.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"用户空间","attributes":{},"skip":false,"key":"5.9.2.3"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.4","level":"5.9.2","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":134,"url":"../images/brand-kubeconfig-yaml.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"5.9.2.4"},{"backlink":"usecases/microservices.html#fig6.2.1","level":"6.2","list_caption":"Figure: 微服务关注的部分","alt":"微服务关注的部分","nro":135,"url":"../images/microservices-concerns.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"微服务关注的部分","attributes":{},"skip":false,"key":"6.2.1"},{"backlink":"usecases/service-discovery-in-microservices.html#fig6.2.1.1","level":"6.2.1","list_caption":"Figure: 微服务中的服务发现","alt":"微服务中的服务发现","nro":136,"url":"../images/service-discovery-in-microservices.png","index":1,"caption_template":"图片 - _CAPTION_","label":"微服务中的服务发现","attributes":{},"skip":false,"key":"6.2.1.1"},{"backlink":"usecases/service-mesh.html#fig6.3.1","level":"6.3","list_caption":"Figure: 下一代异构微服务架构","alt":"下一代异构微服务架构","nro":137,"url":"../images/polyglot-microservices-serivce-mesh.png","index":1,"caption_template":"图片 - _CAPTION_","label":"下一代异构微服务架构","attributes":{},"skip":false,"key":"6.3.1"},{"backlink":"usecases/service-mesh.html#fig6.3.2","level":"6.3","list_caption":"Figure: Service Mesh 架构图","alt":"Service Mesh 架构图","nro":138,"url":"../images/serivce-mesh-control-plane.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Service Mesh 架构图","attributes":{},"skip":false,"key":"6.3.2"},{"backlink":"usecases/service-mesh.html#fig6.3.3","level":"6.3","list_caption":"Figure: Istio vs linkerd","alt":"Istio vs linkerd","nro":139,"url":"../images/istio-vs-linkerd.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Istio vs linkerd","attributes":{},"skip":false,"key":"6.3.3"},{"backlink":"usecases/istio.html#fig6.3.1.1","level":"6.3.1","list_caption":"Figure: Istio架构图","alt":"Istio架构图","nro":140,"url":"../images/istio-arch.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Istio架构图","attributes":{},"skip":false,"key":"6.3.1.1"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.1","level":"6.3.1.1","list_caption":"Figure: BookInfo Sample应用架构图","alt":"BookInfo Sample应用架构图","nro":141,"url":"../images/bookinfo-sample-arch.png","index":1,"caption_template":"图片 - _CAPTION_","label":"BookInfo Sample应用架构图","attributes":{},"skip":false,"key":"6.3.1.1.1"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.2","level":"6.3.1.1","list_caption":"Figure: BookInfo Sample页面","alt":"BookInfo Sample页面","nro":142,"url":"../images/bookinfo-sample.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"BookInfo Sample页面","attributes":{},"skip":false,"key":"6.3.1.1.2"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.3","level":"6.3.1.1","list_caption":"Figure: Istio Grafana界面","alt":"Istio Grafana界面","nro":143,"url":"../images/istio-grafana.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Istio Grafana界面","attributes":{},"skip":false,"key":"6.3.1.1.3"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.4","level":"6.3.1.1","list_caption":"Figure: Prometheus页面","alt":"Prometheus页面","nro":144,"url":"../images/istio-prometheus.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Prometheus页面","attributes":{},"skip":false,"key":"6.3.1.1.4"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.5","level":"6.3.1.1","list_caption":"Figure: Zipkin页面","alt":"Zipkin页面","nro":145,"url":"../images/istio-zipkin.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Zipkin页面","attributes":{},"skip":false,"key":"6.3.1.1.5"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.6","level":"6.3.1.1","list_caption":"Figure: ServiceGraph页面","alt":"ServiceGraph页面","nro":146,"url":"../images/istio-servicegraph.jpg","index":6,"caption_template":"图片 - _CAPTION_","label":"ServiceGraph页面","attributes":{},"skip":false,"key":"6.3.1.1.6"},{"backlink":"usecases/install-and-expand-istio-mesh.html#fig6.3.1.3.1","level":"6.3.1.3","list_caption":"Figure: BookInfo","alt":"BookInfo","nro":147,"url":"../images/noistio.png","index":1,"caption_template":"图片 - _CAPTION_","label":"BookInfo","attributes":{},"skip":false,"key":"6.3.1.3.1"},{"backlink":"usecases/install-and-expand-istio-mesh.html#fig6.3.1.3.2","level":"6.3.1.3","list_caption":"Figure: BookInfo","alt":"BookInfo","nro":148,"url":"../images/noistio.png","index":2,"caption_template":"图片 - _CAPTION_","label":"BookInfo","attributes":{},"skip":false,"key":"6.3.1.3.2"},{"backlink":"usecases/integrating-vms.html#fig6.3.1.4.1","level":"6.3.1.4","list_caption":"Figure: Bookinfo应用的拓展Mesh","alt":"Bookinfo应用的拓展Mesh","nro":149,"url":"../images/istio-mesh-expansion.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Bookinfo应用的拓展Mesh","attributes":{},"skip":false,"key":"6.3.1.4.1"},{"backlink":"usecases/linkerd.html#fig6.3.2.1","level":"6.3.2","list_caption":"Figure: source https://linkerd.io","alt":"source https://linkerd.io","nro":150,"url":"../images/diagram-individual-instance.png","index":1,"caption_template":"图片 - _CAPTION_","label":"source https://linkerd.io","attributes":{},"skip":false,"key":"6.3.2.1"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.1","level":"6.3.2.1","list_caption":"Figure: Jenkins pipeline","alt":"Jenkins pipeline","nro":151,"url":"../images/linkerd-jenkins-pipeline.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Jenkins pipeline","attributes":{},"skip":false,"key":"6.3.2.1.1"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.2","level":"6.3.2.1","list_caption":"Figure: Jenkins config","alt":"Jenkins config","nro":152,"url":"../images/linkerd-jenkins.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Jenkins config","attributes":{},"skip":false,"key":"6.3.2.1.2"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.3","level":"6.3.2.1","list_caption":"Figure: namerd","alt":"namerd","nro":153,"url":"../images/namerd-internal.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"namerd","attributes":{},"skip":false,"key":"6.3.2.1.3"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.4","level":"6.3.2.1","list_caption":"Figure: linkerd监控","alt":"linkerd监控","nro":154,"url":"../images/linkerd-helloworld-outgoing.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"linkerd监控","attributes":{},"skip":false,"key":"6.3.2.1.4"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.5","level":"6.3.2.1","list_caption":"Figure: linkerd监控","alt":"linkerd监控","nro":155,"url":"../images/linkerd-helloworld-incoming.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"linkerd监控","attributes":{},"skip":false,"key":"6.3.2.1.5"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.6","level":"6.3.2.1","list_caption":"Figure: linkerd性能监控","alt":"linkerd性能监控","nro":156,"url":"../images/linkerd-grafana.png","index":6,"caption_template":"图片 - _CAPTION_","label":"linkerd性能监控","attributes":{},"skip":false,"key":"6.3.2.1.6"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.7","level":"6.3.2.1","list_caption":"Figure: Linkerd ingress controller","alt":"Linkerd ingress controller","nro":157,"url":"../images/linkerd-ingress-controller.jpg","index":7,"caption_template":"图片 - _CAPTION_","label":"Linkerd ingress controller","attributes":{},"skip":false,"key":"6.3.2.1.7"},{"backlink":"usecases/conduit-installation.html#fig6.3.3.2.1","level":"6.3.3.2","list_caption":"Figure: Conduit dashboard","alt":"Conduit dashboard","nro":158,"url":"../images/conduit-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Conduit dashboard","attributes":{},"skip":false,"key":"6.3.3.2.1"},{"backlink":"usecases/big-data.html#fig6.4.1","level":"6.4","list_caption":"Figure: Spark on yarn with kubernetes","alt":"Spark on yarn with kubernetes","nro":159,"url":"../images/spark-on-yarn-with-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Spark on yarn with kubernetes","attributes":{},"skip":false,"key":"6.4.1"},{"backlink":"usecases/big-data.html#fig6.4.2","level":"6.4","list_caption":"Figure: 在kubernetes上使用多种调度方式","alt":"在kubernetes上使用多种调度方式","nro":160,"url":"../images/spark-on-kubernetes-with-different-schedulers.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"在kubernetes上使用多种调度方式","attributes":{},"skip":false,"key":"6.4.2"},{"backlink":"usecases/spark-standalone-on-kubernetes.html#fig6.4.1.1","level":"6.4.1","list_caption":"Figure: spark master ui","alt":"spark master ui","nro":161,"url":"../images/spark-ui.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"spark master ui","attributes":{},"skip":false,"key":"6.4.1.1"},{"backlink":"usecases/spark-standalone-on-kubernetes.html#fig6.4.1.2","level":"6.4.1","list_caption":"Figure: zeppelin ui","alt":"zeppelin ui","nro":162,"url":"../images/zeppelin-ui.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"zeppelin ui","attributes":{},"skip":false,"key":"6.4.1.2"},{"backlink":"usecases/serverless.html#fig6.5.1","level":"6.5","list_caption":"Figure: 从物理机到函数计算","alt":"从物理机到函数计算","nro":163,"url":"../images/from-bare-metal-to-functions.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"从物理机到函数计算","attributes":{},"skip":false,"key":"6.5.1"},{"backlink":"usecases/serverless.html#fig6.5.2","level":"6.5","list_caption":"Figure: FaaS Landscape","alt":"FaaS Landscape","nro":164,"url":"../images/redpoint-faas-landscape.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"FaaS Landscape","attributes":{},"skip":false,"key":"6.5.2"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.1","level":"6.5.1","list_caption":"Figure: 服务端软件的运行环境","alt":"服务端软件的运行环境","nro":165,"url":"../images/serverless-server-side-software.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"服务端软件的运行环境","attributes":{},"skip":false,"key":"6.5.1.1"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.2","level":"6.5.1","list_caption":"Figure: FaaS应用架构","alt":"FaaS应用架构","nro":166,"url":"../images/serverless-faas-platform.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"FaaS应用架构","attributes":{},"skip":false,"key":"6.5.1.2"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.3","level":"6.5.1","list_caption":"Figure: 传统应用程序架构","alt":"传统应用程序架构","nro":167,"url":"../images/non-serverless-game-arch.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"传统应用程序架构","attributes":{},"skip":false,"key":"6.5.1.3"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.4","level":"6.5.1","list_caption":"Figure: Serverless架构","alt":"Serverless架构","nro":168,"url":"../images/serverless-game-arch.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Serverless架构","attributes":{},"skip":false,"key":"6.5.1.4"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.1","level":"6.5.2.1","list_caption":"Figure: OpenFaaS架构","alt":"OpenFaaS架构","nro":169,"url":"../images/openfaas-arch.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OpenFaaS架构","attributes":{},"skip":false,"key":"6.5.2.1.1"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.2","level":"6.5.2.1","list_caption":"Figure: OpenFaaS Prometheus","alt":"OpenFaaS Prometheus","nro":170,"url":"../images/openfaas-prometheus.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OpenFaaS Prometheus","attributes":{},"skip":false,"key":"6.5.2.1.2"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.3","level":"6.5.2.1","list_caption":"Figure: OpenFaas Grafana监控","alt":"OpenFaas Grafana监控","nro":171,"url":"../images/openfaas-grafana.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"OpenFaas Grafana监控","attributes":{},"skip":false,"key":"6.5.2.1.3"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.4","level":"6.5.2.1","list_caption":"Figure: OpenFaas Dashboard","alt":"OpenFaas Dashboard","nro":172,"url":"../images/openfaas-deploy-a-function.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"OpenFaas Dashboard","attributes":{},"skip":false,"key":"6.5.2.1.4"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.5","level":"6.5.2.1","list_caption":"Figure: NodeInfo执行结果","alt":"NodeInfo执行结果","nro":173,"url":"../images/openfaas-nodeinfo.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"NodeInfo执行结果","attributes":{},"skip":false,"key":"6.5.2.1.5"},{"backlink":"develop/sigs-and-working-group.html#fig7.2.1","level":"7.2","list_caption":"Figure: Kubernetes SIG","alt":"Kubernetes SIG","nro":174,"url":"../images/kubernetes-sigs.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes SIG","attributes":{},"skip":false,"key":"7.2.1"},{"backlink":"develop/testing.html#fig7.5.1","level":"7.5","list_caption":"Figure: test-infra架构图(图片来自官方GitHub)","alt":"test-infra架构图(图片来自官方GitHub)","nro":175,"url":"../images/kubernetes-test-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"test-infra架构图(图片来自官方GitHub)","attributes":{},"skip":false,"key":"7.5.1"},{"backlink":"develop/client-go-sample.html#fig7.6.1","level":"7.6","list_caption":"Figure: 使用kubernetes dashboard进行故障排查","alt":"使用kubernetes dashboard进行故障排查","nro":176,"url":"../images/kubernetes-client-go-sample-update.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用kubernetes dashboard进行故障排查","attributes":{},"skip":false,"key":"7.6.1"},{"backlink":"appendix/issues.html#fig8.6.1","level":"8.6","list_caption":"Figure: pvc-storage-limit","alt":"pvc-storage-limit","nro":177,"url":"../images/pvc-storage-limit.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"pvc-storage-limit","attributes":{},"skip":false,"key":"8.6.1"}]},"title":"Kubernetes Handbook - jimmysong.io","language":"zh-hans","links":{"sidebar":{"Jimmy Song":"https://jimmysong.io"}},"gitbook":"*","description":"Kubernetes中文指南/实践手册|kubernetes handbook|jimmysong.io|宋净超"},"file":{"path":"concepts/statefulset.md","mtime":"2018-02-15T03:01:52.288Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2018-03-04T10:00:06.861Z"},"basePath":"..","book":{"language":""}});
});
diff --git a/concepts/storage.html b/concepts/storage.html
index 844ee891e..41fdfdb91 100644
--- a/concepts/storage.html
+++ b/concepts/storage.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3298,7 +3313,7 @@
diff --git a/concepts/storageclass.html b/concepts/storageclass.html
index 6333e9aa2..4c8be5425 100644
--- a/concepts/storageclass.html
+++ b/concepts/storageclass.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3438,7 +3453,7 @@
diff --git a/concepts/taint-and-toleration.html b/concepts/taint-and-toleration.html
index 78dd31563..7e1956362 100644
--- a/concepts/taint-and-toleration.html
+++ b/concepts/taint-and-toleration.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3340,7 +3355,7 @@ kubectl taint nodes node1 key2:NoSchedule-
diff --git a/concepts/traefik-ingress-controller.html b/concepts/traefik-ingress-controller.html
index 15c83d95f..b6ccf4099 100644
--- a/concepts/traefik-ingress-controller.html
+++ b/concepts/traefik-ingress-controller.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3351,7 +3366,7 @@
diff --git a/concepts/volume.html b/concepts/volume.html
index 7af47a61e..6a6089c72 100644
--- a/concepts/volume.html
+++ b/concepts/volume.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3878,7 +3893,7 @@
diff --git a/develop/advance-developer.html b/develop/advance-developer.html
index 7f92657f0..17ee5b1b7 100644
--- a/develop/advance-developer.html
+++ b/develop/advance-developer.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3376,7 +3391,7 @@
diff --git a/develop/client-go-sample.html b/develop/client-go-sample.html
index db34346cc..9de8fc27f 100644
--- a/develop/client-go-sample.html
+++ b/develop/client-go-sample.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3537,7 +3552,7 @@ Events:
diff --git a/develop/contribute.html b/develop/contribute.html
index 596ce09a3..e8b019582 100644
--- a/develop/contribute.html
+++ b/develop/contribute.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3305,7 +3320,7 @@
diff --git a/develop/developing-environment.html b/develop/developing-environment.html
index d58ec6b8b..3ca61782d 100644
--- a/develop/developing-environment.html
+++ b/develop/developing-environment.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3318,7 +3333,7 @@
diff --git a/develop/index.html b/develop/index.html
index bc23c981b..d5b74a46c 100644
--- a/develop/index.html
+++ b/develop/index.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3298,7 +3313,7 @@
diff --git a/develop/minikube.html b/develop/minikube.html
index 6243d95b1..5fc6806fa 100644
--- a/develop/minikube.html
+++ b/develop/minikube.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3342,7 +3357,7 @@ Kubectl is now configured to use the cluster.
diff --git a/develop/operator.html b/develop/operator.html
index f47085c17..28dbc722b 100644
--- a/develop/operator.html
+++ b/develop/operator.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3332,7 +3347,7 @@
diff --git a/develop/sigs-and-working-group.html b/develop/sigs-and-working-group.html
index 232ade5fa..7edb4a9f4 100644
--- a/develop/sigs-and-working-group.html
+++ b/develop/sigs-and-working-group.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3342,7 +3357,7 @@
diff --git a/develop/testing.html b/develop/testing.html
index b9ddb55ab..4e2691e44 100644
--- a/develop/testing.html
+++ b/develop/testing.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3417,7 +3432,7 @@ go run hack/e2e.go -- -v --down
diff --git a/develop/using-vagrant-and-virtualbox-for-development.html b/develop/using-vagrant-and-virtualbox-for-development.html
index e47f39c76..eebaf4dad 100644
--- a/develop/using-vagrant-and-virtualbox-for-development.html
+++ b/develop/using-vagrant-and-virtualbox-for-development.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3409,7 +3424,7 @@ kubectl get nodes
diff --git a/guide/access-cluster.html b/guide/access-cluster.html
index e7c701ff2..2b24bdf93 100644
--- a/guide/access-cluster.html
+++ b/guide/access-cluster.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3508,7 +3523,7 @@ $ curl $APISERVER /api --header
diff --git a/guide/access-kubernetes-cluster.html b/guide/access-kubernetes-cluster.html
index 85c0bb122..424693bc0 100644
--- a/guide/access-kubernetes-cluster.html
+++ b/guide/access-kubernetes-cluster.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3304,7 +3319,7 @@
diff --git a/guide/accessing-kubernetes-pods-from-outside-of-the-cluster.html b/guide/accessing-kubernetes-pods-from-outside-of-the-cluster.html
index c95680891..631f5d29d 100644
--- a/guide/accessing-kubernetes-pods-from-outside-of-the-cluster.html
+++ b/guide/accessing-kubernetes-pods-from-outside-of-the-cluster.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3420,7 +3435,7 @@ influxdb 10.97.121.42 10.13.242.236 8086:30051/TCP 39s
diff --git a/guide/application-development-deployment-flow.html b/guide/application-development-deployment-flow.html
index 4897c632f..3d17ae1e4 100644
--- a/guide/application-development-deployment-flow.html
+++ b/guide/application-development-deployment-flow.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3299,7 +3314,7 @@
diff --git a/guide/auth-with-kubeconfig-or-token.html b/guide/auth-with-kubeconfig-or-token.html
index 6ee9dd08c..a8cda33cf 100644
--- a/guide/auth-with-kubeconfig-or-token.html
+++ b/guide/auth-with-kubeconfig-or-token.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3384,7 +3399,7 @@ ca.crt: 1310 bytes
diff --git a/guide/authenticate-across-clusters-kubeconfig.html b/guide/authenticate-across-clusters-kubeconfig.html
index 645c4b982..349a5215a 100644
--- a/guide/authenticate-across-clusters-kubeconfig.html
+++ b/guide/authenticate-across-clusters-kubeconfig.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3523,7 +3538,7 @@ $ kubectl config use-context federal-context
diff --git a/guide/authentication.html b/guide/authentication.html
index 720718e5a..7f9563ea2 100644
--- a/guide/authentication.html
+++ b/guide/authentication.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3799,7 +3814,7 @@ node "mynode" draine
diff --git a/guide/cabin-mobile-dashboard-for-kubernetes.html b/guide/cabin-mobile-dashboard-for-kubernetes.html
index 2edfac979..08c6aba83 100644
--- a/guide/cabin-mobile-dashboard-for-kubernetes.html
+++ b/guide/cabin-mobile-dashboard-for-kubernetes.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3310,7 +3325,7 @@
diff --git a/guide/cluster-security-management.html b/guide/cluster-security-management.html
index 8d9328f5f..446baee27 100644
--- a/guide/cluster-security-management.html
+++ b/guide/cluster-security-management.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3298,7 +3313,7 @@
diff --git a/guide/command-usage.html b/guide/command-usage.html
index 07083733c..b36b4cd3c 100644
--- a/guide/command-usage.html
+++ b/guide/command-usage.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3298,7 +3313,7 @@
diff --git a/guide/configure-liveness-readiness-probes.html b/guide/configure-liveness-readiness-probes.html
index 7d1dfd8d4..5a3e275eb 100644
--- a/guide/configure-liveness-readiness-probes.html
+++ b/guide/configure-liveness-readiness-probes.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3487,7 +3502,7 @@ the Container has been restarted:
diff --git a/guide/configure-pod-service-account.html b/guide/configure-pod-service-account.html
index bdf66c141..9c492123e 100644
--- a/guide/configure-pod-service-account.html
+++ b/guide/configure-pod-service-account.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3445,7 +3460,7 @@ serviceaccounts/default
diff --git a/guide/connecting-to-applications-port-forward.html b/guide/connecting-to-applications-port-forward.html
index 5c832d79f..64cef3aa3 100644
--- a/guide/connecting-to-applications-port-forward.html
+++ b/guide/connecting-to-applications-port-forward.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3337,7 +3352,7 @@ kubectl get pods redis-master --template='{{(index (index .spec.containers
diff --git a/guide/deploy-applications-in-kubernetes.html b/guide/deploy-applications-in-kubernetes.html
index 18a2edb7a..34893188b 100644
--- a/guide/deploy-applications-in-kubernetes.html
+++ b/guide/deploy-applications-in-kubernetes.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3337,7 +3352,7 @@
diff --git a/guide/docker-cli-to-kubectl.html b/guide/docker-cli-to-kubectl.html
index b5904c790..21fcc96e3 100644
--- a/guide/docker-cli-to-kubectl.html
+++ b/guide/docker-cli-to-kubectl.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3474,7 +3489,7 @@ InfluxDB is running at https://108.59.85.141/api/v1/namespaces/kube-system/servi
diff --git a/guide/index.html b/guide/index.html
index 0fa26a22a..18c75248f 100644
--- a/guide/index.html
+++ b/guide/index.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3302,7 +3317,7 @@
diff --git a/guide/ip-masq-agent.html b/guide/ip-masq-agent.html
index f122f3902..a9404102d 100644
--- a/guide/ip-masq-agent.html
+++ b/guide/ip-masq-agent.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3362,7 +3377,7 @@ MASQUERADE all -- anywhere anywhere /* ip-masq-agent:
diff --git a/guide/kubectl-cheatsheet.html b/guide/kubectl-cheatsheet.html
index 2699a7802..a6dbe9634 100644
--- a/guide/kubectl-cheatsheet.html
+++ b/guide/kubectl-cheatsheet.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3704,7 +3719,7 @@ $ kubectl taint nodes foo dedicated= special-
diff --git a/guide/kubectl-user-authentication-authorization.html b/guide/kubectl-user-authentication-authorization.html
index 7e9ac6c5a..6447ab0d7 100644
--- a/guide/kubectl-user-authentication-authorization.html
+++ b/guide/kubectl-user-authentication-authorization.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3396,7 +3411,7 @@ No resources found.
diff --git a/guide/kubelet-authentication-authorization.html b/guide/kubelet-authentication-authorization.html
index cb547276f..bf3ca7ba2 100644
--- a/guide/kubelet-authentication-authorization.html
+++ b/guide/kubelet-authentication-authorization.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3410,7 +3425,7 @@
diff --git a/guide/kubernator-kubernetes-ui.html b/guide/kubernator-kubernetes-ui.html
index ce15d66a1..2f3fbc5e6 100644
--- a/guide/kubernator-kubernetes-ui.html
+++ b/guide/kubernator-kubernetes-ui.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3311,7 +3326,7 @@ kubectl proxy
diff --git a/guide/kubernetes-desktop-client.html b/guide/kubernetes-desktop-client.html
index 475b3cae5..6e8bc4940 100644
--- a/guide/kubernetes-desktop-client.html
+++ b/guide/kubernetes-desktop-client.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3307,7 +3322,7 @@
diff --git a/guide/managing-tls-in-a-cluster.html b/guide/managing-tls-in-a-cluster.html
index 379953df1..827233235 100644
--- a/guide/managing-tls-in-a-cluster.html
+++ b/guide/managing-tls-in-a-cluster.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3388,7 +3403,7 @@ my-svc.my-namespace 10m yourname@example.com Approved,Issued
diff --git a/guide/migrating-hadoop-yarn-to-kubernetes.html b/guide/migrating-hadoop-yarn-to-kubernetes.html
index 675354ad5..eace44031 100644
--- a/guide/migrating-hadoop-yarn-to-kubernetes.html
+++ b/guide/migrating-hadoop-yarn-to-kubernetes.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3468,7 +3483,7 @@ kubectl create configmap spark-config \
diff --git a/guide/resource-configuration.html b/guide/resource-configuration.html
index f5378f892..a0eacf411 100644
--- a/guide/resource-configuration.html
+++ b/guide/resource-configuration.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3298,7 +3313,7 @@
diff --git a/guide/resource-quota-management.html b/guide/resource-quota-management.html
index e3840863e..30b3d049d 100644
--- a/guide/resource-quota-management.html
+++ b/guide/resource-quota-management.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3370,7 +3385,7 @@
diff --git a/guide/secret-configuration.html b/guide/secret-configuration.html
index a6c12d03d..41968cc5e 100644
--- a/guide/secret-configuration.html
+++ b/guide/secret-configuration.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3719,7 +3734,7 @@ secret "test-db-secret" created
diff --git a/guide/service-access-application-cluster.html b/guide/service-access-application-cluster.html
index c16fc05d3..05c9fce11 100644
--- a/guide/service-access-application-cluster.html
+++ b/guide/service-access-application-cluster.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3368,7 +3383,7 @@ kubectl describe replicasets
diff --git a/guide/tls-bootstrapping.html b/guide/tls-bootstrapping.html
index 91d489ceb..ed104f6f5 100644
--- a/guide/tls-bootstrapping.html
+++ b/guide/tls-bootstrapping.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3415,7 +3430,7 @@
diff --git a/guide/using-etcdctl-to-access-kubernetes-data.html b/guide/using-etcdctl-to-access-kubernetes-data.html
index 82d77b4fa..6f79d44c0 100644
--- a/guide/using-etcdctl-to-access-kubernetes-data.html
+++ b/guide/using-etcdctl-to-access-kubernetes-data.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3467,7 +3482,7 @@ thirdpartyresources
diff --git a/guide/using-kubectl.html b/guide/using-kubectl.html
index 9fe96abff..2d832fcc5 100644
--- a/guide/using-kubectl.html
+++ b/guide/using-kubectl.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3351,7 +3366,7 @@
diff --git a/guide/using-statefulset.html b/guide/using-statefulset.html
index a7510a48a..350e94469 100644
--- a/guide/using-statefulset.html
+++ b/guide/using-statefulset.html
@@ -155,6 +155,21 @@
+
+
+
+
+
+
+
+ 1.2.
+
+ CNCF - 云原生计算基金会简介
+
+
+
+
+
@@ -3592,7 +3607,7 @@ MY_ID=
var gitbook = gitbook || [];
gitbook.push(function() {
- gitbook.page.hasChanged({"page":{"title":"使用StatefulSet部署用状态应用","level":"4.6.3","depth":2,"next":{"title":"最佳实践概览","level":"5.1","depth":1,"path":"practice/index.md","ref":"practice/index.md","articles":[]},"previous":{"title":"迁移传统应用到Kubernetes中——以Hadoop YARN为例","level":"4.6.2","depth":2,"path":"guide/migrating-hadoop-yarn-to-kubernetes.md","ref":"guide/migrating-hadoop-yarn-to-kubernetes.md","articles":[]},"dir":"ltr"},"config":{"plugins":["github","codesnippet","splitter","page-toc-button","image-captions","editlink","back-to-top-button","-lunr","-search","search-plus","github-buttons@2.1.0","favicon@^0.0.2","tbfed-pagefooter@^0.0.1","3-ba","theme-default","-highlight","prism","prism-themes"],"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"},"pluginsConfig":{"tbfed-pagefooter":{"copyright":"Copyright © jimmysong.io 2017-2018","modify_label":"Updated at ","modify_format":"YYYY-MM-DD HH:mm:ss"},"prism":{"css":["prism-themes/themes/prism-ghcolors.css"]},"github":{"url":"https://github.com/rootsongjc/kubernetes-handbook"},"editlink":{"label":"编辑本页","multilingual":false,"base":"https://github.com/rootsongjc/kubernetes-handbook/blob/master/"},"splitter":{},"codesnippet":{},"fontsettings":{"theme":"white","family":"sans","size":2},"favicon":{"shortcut":"favicon.ico","bookmark":"favicon.ico"},"page-toc-button":{},"back-to-top-button":{},"prism-themes":{},"github-buttons":{"repo":"rootsongjc/kubernetes-handbook","types":["star"],"size":"small"},"3-ba":{"configuration":"auto","token":"11f7d254cfa4e0ca44b175c66d379ecc"},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"showLevel":true,"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"}},"search-plus":{},"image-captions":{"caption":"图片 - _CAPTION_","variable_name":"_pictures"}},"theme":"default","author":"Jimmy Song","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{"_pictures":[{"backlink":"index.html#fig1.1.1","level":"1.1","list_caption":"Figure: Stargazers over time","alt":"Stargazers over time","nro":1,"url":"https://starcharts.herokuapp.com/rootsongjc/kubernetes-handbook.svg","index":1,"caption_template":"图片 - _CAPTION_","label":"Stargazers over time","attributes":{},"skip":false,"key":"1.1.1"},{"backlink":"cloud-native/play-with-kubernetes.html#fig2.1.1","level":"2.1","list_caption":"Figure: Play with Kubernetes网页截图","alt":"Play with Kubernetes网页截图","nro":2,"url":"../images/play-with-kubernetes.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Play with Kubernetes网页截图","attributes":{},"skip":false,"key":"2.1.1"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.1","level":"2.2","list_caption":"Figure: 云计算演进历程","alt":"云计算演进历程","nro":3,"url":"../images/cloud-computing-evolution-road.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"云计算演进历程","attributes":{},"skip":false,"key":"2.2.1"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.2","level":"2.2","list_caption":"Figure: 来自Twitter @MarcWilczek","alt":"来自Twitter @MarcWilczek","nro":4,"url":"../images/cloud-native-comes-of-age.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"来自Twitter @MarcWilczek","attributes":{},"skip":false,"key":"2.2.2"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.3","level":"2.2","list_caption":"Figure: Cloud native思维导图","alt":"Cloud native思维导图","nro":5,"url":"../images/cloud-native-architecutre-mindnode.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Cloud native思维导图","attributes":{},"skip":false,"key":"2.2.3"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.4","level":"2.2","list_caption":"Figure: 十二因素应用","alt":"十二因素应用","nro":6,"url":"../images/12-factor-app.png","index":4,"caption_template":"图片 - _CAPTION_","label":"十二因素应用","attributes":{},"skip":false,"key":"2.2.4"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.5","level":"2.2","list_caption":"Figure: 容器生态","alt":"容器生态","nro":7,"url":"../images/container-ecosystem.png","index":5,"caption_template":"图片 - _CAPTION_","label":"容器生态","attributes":{},"skip":false,"key":"2.2.5"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.6","level":"2.2","list_caption":"Figure: 使用Jenkins进行持续集成与发布流程图","alt":"使用Jenkins进行持续集成与发布流程图","nro":8,"url":"../images/kubernetes-jenkins-ci-cd.png","index":6,"caption_template":"图片 - _CAPTION_","label":"使用Jenkins进行持续集成与发布流程图","attributes":{},"skip":false,"key":"2.2.6"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.7","level":"2.2","list_caption":"Figure: filebeat日志收集架构图","alt":"filebeat日志收集架构图","nro":9,"url":"../images/filebeat-log-collector-arch.png","index":7,"caption_template":"图片 - _CAPTION_","label":"filebeat日志收集架构图","attributes":{},"skip":false,"key":"2.2.7"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.8","level":"2.2","list_caption":"Figure: API文档","alt":"API文档","nro":10,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":8,"caption_template":"图片 - _CAPTION_","label":"API文档","attributes":{},"skip":false,"key":"2.2.8"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.9","level":"2.2","list_caption":"Figure: 迁移步骤示意图","alt":"迁移步骤示意图","nro":11,"url":"../images/migrating-hadoop-yarn-to-kubernetes.png","index":9,"caption_template":"图片 - _CAPTION_","label":"迁移步骤示意图","attributes":{},"skip":false,"key":"2.2.9"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.10","level":"2.2","list_caption":"Figure: service mesh架构图","alt":"service mesh架构图","nro":12,"url":"../images/serivce-mesh-control-plane.png","index":10,"caption_template":"图片 - _CAPTION_","label":"service mesh架构图","attributes":{},"skip":false,"key":"2.2.10"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.11","level":"2.2","list_caption":"Figure: kibana界面","alt":"kibana界面","nro":13,"url":"../images/filebeat-docker-test.jpg","index":11,"caption_template":"图片 - _CAPTION_","label":"kibana界面","attributes":{},"skip":false,"key":"2.2.11"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.12","level":"2.2","list_caption":"Figure: Grafana界面示意图1","alt":"Grafana界面示意图1","nro":14,"url":"../images/kubernetes-devops-example-grafana-1.png","index":12,"caption_template":"图片 - _CAPTION_","label":"Grafana界面示意图1","attributes":{},"skip":false,"key":"2.2.12"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.13","level":"2.2","list_caption":"Figure: Grafana界面示意图2","alt":"Grafana界面示意图2","nro":15,"url":"../images/kubernetes-devops-example-grafana-2.png","index":13,"caption_template":"图片 - _CAPTION_","label":"Grafana界面示意图2","attributes":{},"skip":false,"key":"2.2.13"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.14","level":"2.2","list_caption":"Figure: Grafana界面示意图3","alt":"Grafana界面示意图3","nro":16,"url":"../images/kubernetes-devops-example-grafana-3.png","index":14,"caption_template":"图片 - _CAPTION_","label":"Grafana界面示意图3","attributes":{},"skip":false,"key":"2.2.14"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.15","level":"2.2","list_caption":"Figure: dashboard","alt":"dashboard","nro":17,"url":"../images/spark-job-on-kubernetes-example-1.jpg","index":15,"caption_template":"图片 - _CAPTION_","label":"dashboard","attributes":{},"skip":false,"key":"2.2.15"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.16","level":"2.2","list_caption":"Figure: Grafana","alt":"Grafana","nro":18,"url":"../images/spark-job-on-kubernetes-example-2.jpg","index":16,"caption_template":"图片 - _CAPTION_","label":"Grafana","attributes":{},"skip":false,"key":"2.2.16"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.1","level":"2.3","list_caption":"Figure: Cloud Native容器实验室","alt":"Cloud Native容器实验室","nro":19,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-native-container-lab.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Cloud Native容器实验室","attributes":{},"skip":false,"key":"2.3.1"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.2","level":"2.3","list_caption":"Figure: 容器生态图 Container ecosystem","alt":"容器生态图 Container ecosystem","nro":20,"url":"../images/container-ecosystem.png","index":2,"caption_template":"图片 - _CAPTION_","label":"容器生态图 Container ecosystem","attributes":{},"skip":false,"key":"2.3.2"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.3","level":"2.3","list_caption":"Figure: Cloud Native油井","alt":"Cloud Native油井","nro":21,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-native-oil-well.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Cloud Native油井","attributes":{},"skip":false,"key":"2.3.3"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.4","level":"2.3","list_caption":"Figure: Kuberentes架构","alt":"Kuberentes架构","nro":22,"url":"../images/kubernetes-high-level-component-archtecture.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Kuberentes架构","attributes":{},"skip":false,"key":"2.3.4"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.5","level":"2.3","list_caption":"Figure: Cloud Native Core target","alt":"Cloud Native Core target","nro":23,"url":"../images/cloud-native-core-target.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Core target","attributes":{},"skip":false,"key":"2.3.5"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.6","level":"2.3","list_caption":"Figure: FaaS Landscape","alt":"FaaS Landscape","nro":24,"url":"../images/redpoint-faas-landscape.jpg","index":6,"caption_template":"图片 - _CAPTION_","label":"FaaS Landscape","attributes":{},"skip":false,"key":"2.3.6"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.7","level":"2.3","list_caption":"Figure: Workloads running on Kubernetes","alt":"Workloads running on Kubernetes","nro":25,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/workloads-running-on-kubernetes-2017-thenewstack.jpg","index":7,"caption_template":"图片 - _CAPTION_","label":"Workloads running on Kubernetes","attributes":{},"skip":false,"key":"2.3.7"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.8","level":"2.3","list_caption":"Figure: Gartner技术爆发趋势图2017","alt":"Gartner技术爆发趋势图2017","nro":26,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/gartner-hype-cycle-for-emerging-technologies-2017.jpg","index":8,"caption_template":"图片 - _CAPTION_","label":"Gartner技术爆发趋势图2017","attributes":{},"skip":false,"key":"2.3.8"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.9","level":"2.3","list_caption":"Figure: Microservices concerns","alt":"Microservices concerns","nro":27,"url":"../images/microservices-concerns.jpg","index":9,"caption_template":"图片 - _CAPTION_","label":"Microservices concerns","attributes":{},"skip":false,"key":"2.3.9"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.10","level":"2.3","list_caption":"Figure: 两种服务发现方式","alt":"两种服务发现方式","nro":28,"url":"../images/service-discovery-in-microservices.png","index":10,"caption_template":"图片 - _CAPTION_","label":"两种服务发现方式","attributes":{},"skip":false,"key":"2.3.10"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.11","level":"2.3","list_caption":"Figure: Cloud Native Pipeline","alt":"Cloud Native Pipeline","nro":29,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-natvie-pipeline.jpg","index":11,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Pipeline","attributes":{},"skip":false,"key":"2.3.11"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.12","level":"2.3","list_caption":"Figure: Cloud Native Features","alt":"Cloud Native Features","nro":30,"url":"https://jimmysong.io/kubernetes-handbook/images/cloud-native-architecutre-mindnode.jpg","index":12,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Features","attributes":{},"skip":false,"key":"2.3.12"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.13","level":"2.3","list_caption":"Figure: Cloud Native Landscape v1.0","alt":"Cloud Native Landscape v1.0","nro":31,"url":"https://raw.githubusercontent.com/cncf/landscape/master/landscape/CloudNativeLandscape_v1.0.jpg","index":13,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Landscape v1.0","attributes":{},"skip":false,"key":"2.3.13"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.14","level":"2.3","list_caption":"Figure: Building a Cloud Native Architecture with Kubernetes followed 12 factor app","alt":"Building a Cloud Native Architecture with Kubernetes followed 12 factor app","nro":32,"url":"../images/building-cloud-native-architecture-with-kubernetes.png","index":14,"caption_template":"图片 - _CAPTION_","label":"Building a Cloud Native Architecture with Kubernetes followed 12 factor app","attributes":{},"skip":false,"key":"2.3.14"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.15","level":"2.3","list_caption":"Figure: Creating Kubernetes native app","alt":"Creating Kubernetes native app","nro":33,"url":"../images/creating-kubernetes-native-app.jpg","index":15,"caption_template":"图片 - _CAPTION_","label":"Creating Kubernetes native app","attributes":{},"skip":false,"key":"2.3.15"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.16","level":"2.3","list_caption":"Figure: Service Mesh中国社区slogan","alt":"Service Mesh中国社区slogan","nro":34,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/service-meshes-pro.jpg","index":16,"caption_template":"图片 - _CAPTION_","label":"Service Mesh中国社区slogan","attributes":{},"skip":false,"key":"2.3.16"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.17","level":"2.3","list_caption":"Figure: istio vs linkerd","alt":"istio vs linkerd","nro":35,"url":"../images/istio-vs-linkerd.jpg","index":17,"caption_template":"图片 - _CAPTION_","label":"istio vs linkerd","attributes":{},"skip":false,"key":"2.3.17"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.18","level":"2.3","list_caption":"Figure: Cloud Native factory","alt":"Cloud Native factory","nro":36,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-native-factory.jpg","index":18,"caption_template":"图片 - _CAPTION_","label":"Cloud Native factory","attributes":{},"skip":false,"key":"2.3.18"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.19","level":"2.3","list_caption":"Figure: Deployment pipeline","alt":"Deployment pipeline","nro":37,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/deployment-pipeline-comic.jpg","index":19,"caption_template":"图片 - _CAPTION_","label":"Deployment pipeline","attributes":{},"skip":false,"key":"2.3.19"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.20","level":"2.3","list_caption":"Figure: Spark on Kubernetes with different schedulers","alt":"Spark on Kubernetes with different schedulers","nro":38,"url":"../images/spark-on-kubernetes-with-different-schedulers.jpg","index":20,"caption_template":"图片 - _CAPTION_","label":"Spark on Kubernetes with different schedulers","attributes":{},"skip":false,"key":"2.3.20"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.21","level":"2.3","list_caption":"Figure: Kubernetes solutions","alt":"Kubernetes solutions","nro":39,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/kubernetes-solutions-choices.jpg","index":21,"caption_template":"图片 - _CAPTION_","label":"Kubernetes solutions","attributes":{},"skip":false,"key":"2.3.21"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.22","level":"2.3","list_caption":"Figure: Kubernetes SIG","alt":"Kubernetes SIG","nro":40,"url":"../images/kubernetes-sigs.jpg","index":22,"caption_template":"图片 - _CAPTION_","label":"Kubernetes SIG","attributes":{},"skip":false,"key":"2.3.22"},{"backlink":"concepts/index.html#fig3.1.1","level":"3.1","list_caption":"Figure: Borg架构","alt":"Borg架构","nro":41,"url":"../images/borg.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Borg架构","attributes":{},"skip":false,"key":"3.1.1"},{"backlink":"concepts/index.html#fig3.1.2","level":"3.1","list_caption":"Figure: Kubernetes架构","alt":"Kubernetes架构","nro":42,"url":"../images/architecture.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Kubernetes架构","attributes":{},"skip":false,"key":"3.1.2"},{"backlink":"concepts/index.html#fig3.1.3","level":"3.1","list_caption":"Figure: Kuberentes架构(图片来自于网络)","alt":"Kuberentes架构(图片来自于网络)","nro":43,"url":"../images/kubernetes-high-level-component-archtecture.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Kuberentes架构(图片来自于网络)","attributes":{},"skip":false,"key":"3.1.3"},{"backlink":"concepts/index.html#fig3.1.4","level":"3.1","list_caption":"Figure: kubernetes整体架构示意图","alt":"kubernetes整体架构示意图","nro":44,"url":"../images/kubernetes-whole-arch.png","index":4,"caption_template":"图片 - _CAPTION_","label":"kubernetes整体架构示意图","attributes":{},"skip":false,"key":"3.1.4"},{"backlink":"concepts/index.html#fig3.1.5","level":"3.1","list_caption":"Figure: Kubernetes master架构示意图","alt":"Kubernetes master架构示意图","nro":45,"url":"../images/kubernetes-master-arch.png","index":5,"caption_template":"图片 - _CAPTION_","label":"Kubernetes master架构示意图","attributes":{},"skip":false,"key":"3.1.5"},{"backlink":"concepts/index.html#fig3.1.6","level":"3.1","list_caption":"Figure: kubernetes node架构示意图","alt":"kubernetes node架构示意图","nro":46,"url":"../images/kubernetes-node-arch.png","index":6,"caption_template":"图片 - _CAPTION_","label":"kubernetes node架构示意图","attributes":{},"skip":false,"key":"3.1.6"},{"backlink":"concepts/index.html#fig3.1.7","level":"3.1","list_caption":"Figure: Kubernetes分层架构示意图","alt":"Kubernetes分层架构示意图","nro":47,"url":"../images/kubernetes-layers-arch.jpg","index":7,"caption_template":"图片 - _CAPTION_","label":"Kubernetes分层架构示意图","attributes":{},"skip":false,"key":"3.1.7"},{"backlink":"concepts/concepts.html#fig3.1.1.1","level":"3.1.1","list_caption":"Figure: 分层架构示意图","alt":"分层架构示意图","nro":48,"url":"../images/kubernetes-layers-arch.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"分层架构示意图","attributes":{},"skip":false,"key":"3.1.1.1"},{"backlink":"concepts/open-interfaces.html#fig3.1.3.1","level":"3.1.3","list_caption":"Figure: 开放接口","alt":"开放接口","nro":49,"url":"../images/open-interfaces.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"开放接口","attributes":{},"skip":false,"key":"3.1.3.1"},{"backlink":"concepts/cri.html#fig3.1.3.1.1","level":"3.1.3.1","list_caption":"Figure: CRI架构-图片来自kubernetes blog","alt":"CRI架构-图片来自kubernetes blog","nro":50,"url":"../images/cri-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"CRI架构-图片来自kubernetes blog","attributes":{},"skip":false,"key":"3.1.3.1.1"},{"backlink":"concepts/networking.html#fig3.1.4.1","level":"3.1.4","list_caption":"Figure: flannel网络架构(图片来自openshift)","alt":"flannel网络架构(图片来自openshift)","nro":51,"url":"../images/flannel-networking.png","index":1,"caption_template":"图片 - _CAPTION_","label":"flannel网络架构(图片来自openshift)","attributes":{},"skip":false,"key":"3.1.4.1"},{"backlink":"concepts/calico.html#fig3.1.5.1","level":"3.1.5","list_caption":"Figure: CRI架构-图片来自https://www.jianshu.com/p/f0177b84de66","alt":"CRI架构-图片来自https://www.jianshu.com/p/f0177b84de66","nro":52,"url":"../images/calico.png","index":1,"caption_template":"图片 - _CAPTION_","label":"CRI架构-图片来自https://www.jianshu.com/p/f0177b84de66","attributes":{},"skip":false,"key":"3.1.5.1"},{"backlink":"concepts/pod-overview.html#fig3.1.6.2.1","level":"3.1.6.2","list_caption":"Figure: pod diagram","alt":"pod diagram","nro":53,"url":"../images/pod-overview.png","index":1,"caption_template":"图片 - _CAPTION_","label":"pod diagram","attributes":{},"skip":false,"key":"3.1.6.2.1"},{"backlink":"concepts/pod.html#fig3.1.6.3.1","level":"3.1.6.3","list_caption":"Figure: Pod示意图","alt":"Pod示意图","nro":54,"url":"../images/pod-overview.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Pod示意图","attributes":{},"skip":false,"key":"3.1.6.3.1"},{"backlink":"concepts/pod.html#fig3.1.6.3.2","level":"3.1.6.3","list_caption":"Figure: Pod Cheatsheet","alt":"Pod Cheatsheet","nro":55,"url":"../images/kubernetes-pod-cheatsheet.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Pod Cheatsheet","attributes":{},"skip":false,"key":"3.1.6.3.2"},{"backlink":"concepts/label.html#fig3.1.7.3.1","level":"3.1.7.3","list_caption":"Figure: label示意图","alt":"label示意图","nro":56,"url":"../images/labels.png","index":1,"caption_template":"图片 - _CAPTION_","label":"label示意图","attributes":{},"skip":false,"key":"3.1.7.3.1"},{"backlink":"concepts/deployment.html#fig3.1.8.1.1","level":"3.1.8.1","list_caption":"Figure: kubernetes deployment cheatsheet","alt":"kubernetes deployment cheatsheet","nro":57,"url":"../images/deployment-cheatsheet.png","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes deployment cheatsheet","attributes":{},"skip":false,"key":"3.1.8.1.1"},{"backlink":"concepts/horizontal-pod-autoscaling.html#fig3.1.8.7.1","level":"3.1.8.7","list_caption":"Figure: horizontal-pod-autoscaler","alt":"horizontal-pod-autoscaler","nro":58,"url":"../images/horizontal-pod-autoscaler.png","index":1,"caption_template":"图片 - _CAPTION_","label":"horizontal-pod-autoscaler","attributes":{},"skip":false,"key":"3.1.8.7.1"},{"backlink":"concepts/service.html#fig3.1.9.1.1","level":"3.1.9.1","list_caption":"Figure: userspace代理模式下Service概览图","alt":"userspace代理模式下Service概览图","nro":59,"url":"../images/services-userspace-overview.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"userspace代理模式下Service概览图","attributes":{},"skip":false,"key":"3.1.9.1.1"},{"backlink":"concepts/service.html#fig3.1.9.1.2","level":"3.1.9.1","list_caption":"Figure: iptables代理模式下Service概览图","alt":"iptables代理模式下Service概览图","nro":60,"url":"../images/services-iptables-overview.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"iptables代理模式下Service概览图","attributes":{},"skip":false,"key":"3.1.9.1.2"},{"backlink":"guide/using-kubectl.html#fig4.3.2.1","level":"4.3.2","list_caption":"Figure: kubectl cheatsheet","alt":"kubectl cheatsheet","nro":61,"url":"../images/kubernetes-kubectl-cheatsheet.png","index":1,"caption_template":"图片 - _CAPTION_","label":"kubectl cheatsheet","attributes":{},"skip":false,"key":"4.3.2.1"},{"backlink":"guide/using-kubectl.html#fig4.3.2.2","level":"4.3.2","list_caption":"Figure: 增加kubeclt命令的工具(图片来自网络)","alt":"增加kubeclt命令的工具(图片来自网络)","nro":62,"url":"../images/tools-to-supercharge-kubectl.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"增加kubeclt命令的工具(图片来自网络)","attributes":{},"skip":false,"key":"4.3.2.2"},{"backlink":"guide/using-kubectl.html#fig4.3.2.3","level":"4.3.2","list_caption":"Figure: 增强的kubectl命令","alt":"增强的kubectl命令","nro":63,"url":"../images/supercharged-kubectl.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"增强的kubectl命令","attributes":{},"skip":false,"key":"4.3.2.3"},{"backlink":"guide/using-kubectl.html#fig4.3.2.4","level":"4.3.2","list_caption":"Figure: kube-shell页面","alt":"kube-shell页面","nro":64,"url":"../images/kube-shell.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kube-shell页面","attributes":{},"skip":false,"key":"4.3.2.4"},{"backlink":"guide/ip-masq-agent.html#fig4.4.5.1","level":"4.4.5","list_caption":"Figure: IP伪装代理示意图","alt":"IP伪装代理示意图","nro":65,"url":"../images/ip-masq.png","index":1,"caption_template":"图片 - _CAPTION_","label":"IP伪装代理示意图","attributes":{},"skip":false,"key":"4.4.5.1"},{"backlink":"guide/auth-with-kubeconfig-or-token.html#fig4.4.6.1","level":"4.4.6","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":66,"url":"../images/brand-kubeconfig-yaml.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"4.4.6.1"},{"backlink":"guide/authentication.html#fig4.4.7.1","level":"4.4.7","list_caption":"Figure: Kubernetes OpenID Connect Flow","alt":"Kubernetes OpenID Connect Flow","nro":67,"url":"../images/kubernetes-oidc-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes OpenID Connect Flow","attributes":{},"skip":false,"key":"4.4.7.1"},{"backlink":"guide/cabin-mobile-dashboard-for-kubernetes.html#fig4.5.6.1","level":"4.5.6","list_caption":"Figure: App Store","alt":"App Store","nro":68,"url":"../images/cabin-kubernetes-mobile-dashboard-1.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"App Store","attributes":{},"skip":false,"key":"4.5.6.1"},{"backlink":"guide/cabin-mobile-dashboard-for-kubernetes.html#fig4.5.6.2","level":"4.5.6","list_caption":"Figure: 在手机上操作Kubernetes集群","alt":"在手机上操作Kubernetes集群","nro":69,"url":"../images/cabin-kubernetes-mobile-dashboard-4.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"在手机上操作Kubernetes集群","attributes":{},"skip":false,"key":"4.5.6.2"},{"backlink":"guide/kubernetes-desktop-client.html#fig4.5.7.1","level":"4.5.7","list_caption":"Figure: Kubernetic客户端","alt":"Kubernetic客户端","nro":70,"url":"../images/kubernetic-desktop-ui.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetic客户端","attributes":{},"skip":false,"key":"4.5.7.1"},{"backlink":"guide/kubernator-kubernetes-ui.html#fig4.5.8.1","level":"4.5.8","list_caption":"Figure: Kubernator catalog页面","alt":"Kubernator catalog页面","nro":71,"url":"../images/kubernator-catalog.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernator catalog页面","attributes":{},"skip":false,"key":"4.5.8.1"},{"backlink":"guide/kubernator-kubernetes-ui.html#fig4.5.8.2","level":"4.5.8","list_caption":"Figure: Kubernator rbac页面","alt":"Kubernator rbac页面","nro":72,"url":"../images/kubernator-rbac.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kubernator rbac页面","attributes":{},"skip":false,"key":"4.5.8.2"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.1","level":"4.6.1","list_caption":"Figure: API","alt":"API","nro":73,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"API","attributes":{},"skip":false,"key":"4.6.1.1"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.2","level":"4.6.1","list_caption":"Figure: wercker","alt":"wercker","nro":74,"url":"../images/k8s-app-monitor-agent-wercker.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"wercker","attributes":{},"skip":false,"key":"4.6.1.2"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.3","level":"4.6.1","list_caption":"Figure: 图表","alt":"图表","nro":75,"url":"../images/k8s-app-monitor-agent.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"图表","attributes":{},"skip":false,"key":"4.6.1.3"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig4.6.2.1","level":"4.6.2","list_caption":"Figure: spark on yarn with kubernetes","alt":"spark on yarn with kubernetes","nro":76,"url":"../images/spark-on-yarn-with-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"spark on yarn with kubernetes","attributes":{},"skip":false,"key":"4.6.2.1"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig4.6.2.2","level":"4.6.2","list_caption":"Figure: Terms","alt":"Terms","nro":77,"url":"../images/terms-in-kubernetes-app-deployment.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Terms","attributes":{},"skip":false,"key":"4.6.2.2"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig4.6.2.3","level":"4.6.2","list_caption":"Figure: 分解步骤解析","alt":"分解步骤解析","nro":78,"url":"../images/migrating-hadoop-yarn-to-kubernetes.png","index":3,"caption_template":"图片 - _CAPTION_","label":"分解步骤解析","attributes":{},"skip":false,"key":"4.6.2.3"},{"backlink":"practice/node-installation.html#fig5.2.7.1","level":"5.2.7","list_caption":"Figure: welcome nginx","alt":"welcome nginx","nro":79,"url":"../images/kubernetes-installation-test-nginx.png","index":1,"caption_template":"图片 - _CAPTION_","label":"welcome nginx","attributes":{},"skip":false,"key":"5.2.7.1"},{"backlink":"practice/dashboard-addon-installation.html#fig5.2.9.1","level":"5.2.9","list_caption":"Figure: kubernetes dashboard","alt":"kubernetes dashboard","nro":80,"url":"../images/kubernetes-dashboard-raw.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes dashboard","attributes":{},"skip":false,"key":"5.2.9.1"},{"backlink":"practice/dashboard-addon-installation.html#fig5.2.9.2","level":"5.2.9","list_caption":"Figure: V1.6.3版本的dashboard界面","alt":"V1.6.3版本的dashboard界面","nro":81,"url":"../images/dashboard-v163.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"V1.6.3版本的dashboard界面","attributes":{},"skip":false,"key":"5.2.9.2"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.1","level":"5.2.10","list_caption":"Figure: dashboard-heapster","alt":"dashboard-heapster","nro":82,"url":"../images/kubernetes-dashboard-with-heapster.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"dashboard-heapster","attributes":{},"skip":false,"key":"5.2.10.1"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.2","level":"5.2.10","list_caption":"Figure: grafana","alt":"grafana","nro":83,"url":"../images/kubernetes-heapster-grafana.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"grafana","attributes":{},"skip":false,"key":"5.2.10.2"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.3","level":"5.2.10","list_caption":"Figure: kubernetes-influxdb-heapster","alt":"kubernetes-influxdb-heapster","nro":84,"url":"../images/kubernetes-influxdb-heapster.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"kubernetes-influxdb-heapster","attributes":{},"skip":false,"key":"5.2.10.3"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.4","level":"5.2.10","list_caption":"Figure: 修改grafana模板","alt":"修改grafana模板","nro":85,"url":"../images/grafana-dashboard-setting.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"修改grafana模板","attributes":{},"skip":false,"key":"5.2.10.4"},{"backlink":"practice/efk-addon-installation.html#fig5.2.11.1","level":"5.2.11","list_caption":"Figure: es-setting","alt":"es-setting","nro":86,"url":"../images/es-setting.png","index":1,"caption_template":"图片 - _CAPTION_","label":"es-setting","attributes":{},"skip":false,"key":"5.2.11.1"},{"backlink":"practice/efk-addon-installation.html#fig5.2.11.2","level":"5.2.11","list_caption":"Figure: es-home","alt":"es-home","nro":87,"url":"../images/kubernetes-efk-kibana.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"es-home","attributes":{},"skip":false,"key":"5.2.11.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.1","level":"5.3.1","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":88,"url":"../images/traefik-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.3.1.1"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.2","level":"5.3.1","list_caption":"Figure: traefik-nginx","alt":"traefik-nginx","nro":89,"url":"../images/traefik-nginx.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"traefik-nginx","attributes":{},"skip":false,"key":"5.3.1.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.3","level":"5.3.1","list_caption":"Figure: traefik-guestbook","alt":"traefik-guestbook","nro":90,"url":"../images/traefik-guestbook.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"traefik-guestbook","attributes":{},"skip":false,"key":"5.3.1.3"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.1","level":"5.3.2","list_caption":"Figure: 使用dashboard来扩容","alt":"使用dashboard来扩容","nro":91,"url":"../images/dashbaord-scale.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用dashboard来扩容","attributes":{},"skip":false,"key":"5.3.2.1"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.2","level":"5.3.2","list_caption":"Figure: Traefik的UI","alt":"Traefik的UI","nro":92,"url":"../images/traefik-dashboard-locust.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Traefik的UI","attributes":{},"skip":false,"key":"5.3.2.2"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.3","level":"5.3.2","list_caption":"Figure: Locust启动界面","alt":"Locust启动界面","nro":93,"url":"../images/locust-start-swarming.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Locust启动界面","attributes":{},"skip":false,"key":"5.3.2.3"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.4","level":"5.3.2","list_caption":"Figure: Dashboard查看页面","alt":"Dashboard查看页面","nro":94,"url":"../images/sample-webapp-rc.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Dashboard查看页面","attributes":{},"skip":false,"key":"5.3.2.4"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.5","level":"5.3.2","list_caption":"Figure: Locust测试结果页面","alt":"Locust测试结果页面","nro":95,"url":"../images/locust-dashboard.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Locust测试结果页面","attributes":{},"skip":false,"key":"5.3.2.5"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.3.3.1","level":"5.3.3","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":96,"url":"../images/kubenetes-e2e-test.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.3.3.1"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.3.3.2","level":"5.3.3","list_caption":"Figure: locust测试页面","alt":"locust测试页面","nro":97,"url":"../images/kubernetes-locust-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"locust测试页面","attributes":{},"skip":false,"key":"5.3.3.2"},{"backlink":"practice/edge-node-configuration.html#fig5.3.4.1","level":"5.3.4","list_caption":"Figure: 边缘节点架构","alt":"边缘节点架构","nro":98,"url":"../images/kubernetes-edge-node-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"边缘节点架构","attributes":{},"skip":false,"key":"5.3.4.1"},{"backlink":"practice/edge-node-configuration.html#fig5.3.4.2","level":"5.3.4","list_caption":"Figure: 使用域名来访问Kubernetes中的服务","alt":"使用域名来访问Kubernetes中的服务","nro":99,"url":"../images/accessing-kubernetes-services-with-dns-name.png","index":2,"caption_template":"图片 - _CAPTION_","label":"使用域名来访问Kubernetes中的服务","attributes":{},"skip":false,"key":"5.3.4.2"},{"backlink":"practice/configuring-dns.html#fig5.3.6.1","level":"5.3.6","list_caption":"Figure: DNS lookup flow","alt":"DNS lookup flow","nro":100,"url":"https://d33wubrfki0l68.cloudfront.net/340889cb80e81dcd19a16bc34697a7907e2b229a/24ad0/docs/tasks/administer-cluster/dns-custom-nameservers/dns.png","index":1,"caption_template":"图片 - _CAPTION_","label":"DNS lookup flow","attributes":{},"skip":false,"key":"5.3.6.1"},{"backlink":"practice/app-log-collection.html#fig5.4.2.1","level":"5.4.2","list_caption":"Figure: filebeat日志收集架构图","alt":"filebeat日志收集架构图","nro":101,"url":"../images/filebeat-log-collector.png","index":1,"caption_template":"图片 - _CAPTION_","label":"filebeat日志收集架构图","attributes":{},"skip":false,"key":"5.4.2.1"},{"backlink":"practice/app-log-collection.html#fig5.4.2.2","level":"5.4.2","list_caption":"Figure: Kibana页面","alt":"Kibana页面","nro":102,"url":"../images/filebeat-docker-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kibana页面","attributes":{},"skip":false,"key":"5.4.2.2"},{"backlink":"practice/app-log-collection.html#fig5.4.2.3","level":"5.4.2","list_caption":"Figure: filebeat收集的日志详细信息","alt":"filebeat收集的日志详细信息","nro":103,"url":"../images/kubernetes-filebeat-detail.png","index":3,"caption_template":"图片 - _CAPTION_","label":"filebeat收集的日志详细信息","attributes":{},"skip":false,"key":"5.4.2.3"},{"backlink":"practice/monitor.html#fig5.4.4.1","level":"5.4.4","list_caption":"Figure: Kubernetes集群中的监控","alt":"Kubernetes集群中的监控","nro":104,"url":"../images/monitoring-in-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes集群中的监控","attributes":{},"skip":false,"key":"5.4.4.1"},{"backlink":"practice/monitor.html#fig5.4.4.2","level":"5.4.4","list_caption":"Figure: kubernetes的容器命名规则示意图","alt":"kubernetes的容器命名规则示意图","nro":105,"url":"../images/kubernetes-container-naming-rule.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"kubernetes的容器命名规则示意图","attributes":{},"skip":false,"key":"5.4.4.2"},{"backlink":"practice/monitor.html#fig5.4.4.3","level":"5.4.4","list_caption":"Figure: Heapster架构图(改进版)","alt":"Heapster架构图(改进版)","nro":106,"url":"../images/kubernetes-heapster-monitoring.png","index":3,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图(改进版)","attributes":{},"skip":false,"key":"5.4.4.3"},{"backlink":"practice/monitor.html#fig5.4.4.4","level":"5.4.4","list_caption":"Figure: 应用监控架构图","alt":"应用监控架构图","nro":107,"url":"../images/kubernetes-app-monitoring.png","index":4,"caption_template":"图片 - _CAPTION_","label":"应用监控架构图","attributes":{},"skip":false,"key":"5.4.4.4"},{"backlink":"practice/monitor.html#fig5.4.4.5","level":"5.4.4","list_caption":"Figure: 应用拓扑图","alt":"应用拓扑图","nro":108,"url":"../images/weave-scope-service-topology.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"应用拓扑图","attributes":{},"skip":false,"key":"5.4.4.5"},{"backlink":"practice/data-persistence-problem.html#fig5.4.5.1","level":"5.4.5","list_caption":"Figure: 日志持久化收集解决方案示意图","alt":"日志持久化收集解决方案示意图","nro":109,"url":"../images/log-persistence-logstash.png","index":1,"caption_template":"图片 - _CAPTION_","label":"日志持久化收集解决方案示意图","attributes":{},"skip":false,"key":"5.4.5.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.5.1.2.1","level":"5.5.1.2","list_caption":"Figure: 创建存储","alt":"创建存储","nro":110,"url":"../images/create-gluster-storage.png","index":1,"caption_template":"图片 - _CAPTION_","label":"创建存储","attributes":{},"skip":false,"key":"5.5.1.2.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.5.1.2.2","level":"5.5.1.2","list_caption":"Figure: Screen Shot 2017-03-24 at 11.09.34.png","alt":"Screen Shot 2017-03-24 at 11.09.34.png","nro":111,"url":"https://keithtenzer.files.wordpress.com/2017/03/screen-shot-2017-03-24-at-11-09-341.png?w=440","index":2,"caption_template":"图片 - _CAPTION_","label":"Screen Shot 2017-03-24 at 11.09.34.png","attributes":{},"skip":false,"key":"5.5.1.2.2"},{"backlink":"practice/openebs.html#fig5.5.3.1","level":"5.5.3","list_caption":"Figure: OpenEBS集群数据平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","alt":"OpenEBS集群数据平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","nro":112,"url":"../images/OpenEBS-Data-Plane.png","index":1,"caption_template":"图片 - _CAPTION_","label":"OpenEBS集群数据平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","attributes":{},"skip":false,"key":"5.5.3.1"},{"backlink":"practice/openebs.html#fig5.5.3.2","level":"5.5.3","list_caption":"Figure: OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","alt":"OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","nro":113,"url":"../images/OpenEBS-Control-Plane.png","index":2,"caption_template":"图片 - _CAPTION_","label":"OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","attributes":{},"skip":false,"key":"5.5.3.2"},{"backlink":"practice/using-openebs-for-persistent-storage.html#fig5.5.3.1.1","level":"5.5.3.1","list_caption":"Figure: Kubernetes iSCSI架构","alt":"Kubernetes iSCSI架构","nro":114,"url":"../images/iscsi-on-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes iSCSI架构","attributes":{},"skip":false,"key":"5.5.3.1.1"},{"backlink":"practice/using-heapster-to-get-object-metrics.html#fig5.6.1.1.1","level":"5.6.1.1","list_caption":"Figure: Heapster架构图","alt":"Heapster架构图","nro":115,"url":"../images/heapster-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图","attributes":{},"skip":false,"key":"5.6.1.1.1"},{"backlink":"practice/prometheus.html#fig5.6.2.1","level":"5.6.2","list_caption":"Figure: Prometheus 架构图","alt":"Prometheus 架构图","nro":116,"url":"../images/prometheus-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Prometheus 架构图","attributes":{},"skip":false,"key":"5.6.2.1"},{"backlink":"practice/using-prometheus-to-monitor-kuberentes-cluster.html#fig5.6.2.1.1","level":"5.6.2.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":117,"url":"../images/kubernetes-prometheus-monitoring.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"5.6.2.1.1"},{"backlink":"practice/helm.html#fig5.7.1.1","level":"5.7.1","list_caption":"Figure: Helm chart源","alt":"Helm chart源","nro":118,"url":"../images/helm-charts-repository.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm chart源","attributes":{},"skip":false,"key":"5.7.1.1"},{"backlink":"practice/helm.html#fig5.7.1.2","level":"5.7.1","list_caption":"Figure: TODO应用的Web页面","alt":"TODO应用的Web页面","nro":119,"url":"../images/helm-mean-todo-aholic.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"TODO应用的Web页面","attributes":{},"skip":false,"key":"5.7.1.2"},{"backlink":"practice/create-private-charts-repo.html#fig5.7.2.1","level":"5.7.2","list_caption":"Figure: Helm monocular界面","alt":"Helm monocular界面","nro":120,"url":"../images/helm-monocular-jimmysong.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm monocular界面","attributes":{},"skip":false,"key":"5.7.2.1"},{"backlink":"practice/jenkins-ci-cd.html#fig5.8.1.1","level":"5.8.1","list_caption":"Figure: 基于Jenkins的持续集成与发布","alt":"基于Jenkins的持续集成与发布","nro":121,"url":"../images/kubernetes-jenkins-ci-cd.png","index":1,"caption_template":"图片 - _CAPTION_","label":"基于Jenkins的持续集成与发布","attributes":{},"skip":false,"key":"5.8.1.1"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.1","level":"5.8.2","list_caption":"Figure: OAuth注册","alt":"OAuth注册","nro":122,"url":"../images/github-oauth-register.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OAuth注册","attributes":{},"skip":false,"key":"5.8.2.1"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.2","level":"5.8.2","list_caption":"Figure: OAuth key","alt":"OAuth key","nro":123,"url":"../images/github-oauth-drone-key.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OAuth key","attributes":{},"skip":false,"key":"5.8.2.2"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.3","level":"5.8.2","list_caption":"Figure: Drone登陆界面","alt":"Drone登陆界面","nro":124,"url":"../images/drone-login-github.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Drone登陆界面","attributes":{},"skip":false,"key":"5.8.2.3"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.4","level":"5.8.2","list_caption":"Figure: Github启用repo设置","alt":"Github启用repo设置","nro":125,"url":"../images/drone-github-active.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Github启用repo设置","attributes":{},"skip":false,"key":"5.8.2.4"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.5","level":"5.8.2","list_caption":"Figure: Github单个repo设置","alt":"Github单个repo设置","nro":126,"url":"../images/drone-github-repo-setting.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Github单个repo设置","attributes":{},"skip":false,"key":"5.8.2.5"},{"backlink":"practice/manually-upgrade.html#fig5.9.1.1","level":"5.9.1","list_caption":"Figure: Kubernetes零宕机时间升级建议","alt":"Kubernetes零宕机时间升级建议","nro":127,"url":"../images/zero-downtime-kubernetes-upgrade-tips.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes零宕机时间升级建议","attributes":{},"skip":false,"key":"5.9.1.1"},{"backlink":"practice/manually-upgrade.html#fig5.9.1.2","level":"5.9.1","list_caption":"Figure: Kuberentes API对象的版本演进","alt":"Kuberentes API对象的版本演进","nro":128,"url":"../images/kubernetes-apversions-changes.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kuberentes API对象的版本演进","attributes":{},"skip":false,"key":"5.9.1.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.1","level":"5.9.2","list_caption":"Figure: 登陆界面","alt":"登陆界面","nro":129,"url":"../images/kubernetes-dashboard-1.7.1-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"登陆界面","attributes":{},"skip":false,"key":"5.9.2.1"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.2","level":"5.9.2","list_caption":"Figure: 首页","alt":"首页","nro":130,"url":"../images/kubernetes-dashboard-1.7.1-default-page.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"首页","attributes":{},"skip":false,"key":"5.9.2.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.3","level":"5.9.2","list_caption":"Figure: 用户空间","alt":"用户空间","nro":131,"url":"../images/kubernetes-dashboard-1.7.1-brand.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"用户空间","attributes":{},"skip":false,"key":"5.9.2.3"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.4","level":"5.9.2","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":132,"url":"../images/brand-kubeconfig-yaml.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"5.9.2.4"},{"backlink":"usecases/microservices.html#fig6.2.1","level":"6.2","list_caption":"Figure: 微服务关注的部分","alt":"微服务关注的部分","nro":133,"url":"../images/microservices-concerns.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"微服务关注的部分","attributes":{},"skip":false,"key":"6.2.1"},{"backlink":"usecases/service-discovery-in-microservices.html#fig6.2.1.1","level":"6.2.1","list_caption":"Figure: 微服务中的服务发现","alt":"微服务中的服务发现","nro":134,"url":"../images/service-discovery-in-microservices.png","index":1,"caption_template":"图片 - _CAPTION_","label":"微服务中的服务发现","attributes":{},"skip":false,"key":"6.2.1.1"},{"backlink":"usecases/service-mesh.html#fig6.3.1","level":"6.3","list_caption":"Figure: 下一代异构微服务架构","alt":"下一代异构微服务架构","nro":135,"url":"../images/polyglot-microservices-serivce-mesh.png","index":1,"caption_template":"图片 - _CAPTION_","label":"下一代异构微服务架构","attributes":{},"skip":false,"key":"6.3.1"},{"backlink":"usecases/service-mesh.html#fig6.3.2","level":"6.3","list_caption":"Figure: Service Mesh 架构图","alt":"Service Mesh 架构图","nro":136,"url":"../images/serivce-mesh-control-plane.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Service Mesh 架构图","attributes":{},"skip":false,"key":"6.3.2"},{"backlink":"usecases/service-mesh.html#fig6.3.3","level":"6.3","list_caption":"Figure: Istio vs linkerd","alt":"Istio vs linkerd","nro":137,"url":"../images/istio-vs-linkerd.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Istio vs linkerd","attributes":{},"skip":false,"key":"6.3.3"},{"backlink":"usecases/istio.html#fig6.3.1.1","level":"6.3.1","list_caption":"Figure: Istio架构图","alt":"Istio架构图","nro":138,"url":"../images/istio-arch.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Istio架构图","attributes":{},"skip":false,"key":"6.3.1.1"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.1","level":"6.3.1.1","list_caption":"Figure: BookInfo Sample应用架构图","alt":"BookInfo Sample应用架构图","nro":139,"url":"../images/bookinfo-sample-arch.png","index":1,"caption_template":"图片 - _CAPTION_","label":"BookInfo Sample应用架构图","attributes":{},"skip":false,"key":"6.3.1.1.1"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.2","level":"6.3.1.1","list_caption":"Figure: BookInfo Sample页面","alt":"BookInfo Sample页面","nro":140,"url":"../images/bookinfo-sample.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"BookInfo Sample页面","attributes":{},"skip":false,"key":"6.3.1.1.2"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.3","level":"6.3.1.1","list_caption":"Figure: Istio Grafana界面","alt":"Istio Grafana界面","nro":141,"url":"../images/istio-grafana.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Istio Grafana界面","attributes":{},"skip":false,"key":"6.3.1.1.3"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.4","level":"6.3.1.1","list_caption":"Figure: Prometheus页面","alt":"Prometheus页面","nro":142,"url":"../images/istio-prometheus.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Prometheus页面","attributes":{},"skip":false,"key":"6.3.1.1.4"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.5","level":"6.3.1.1","list_caption":"Figure: Zipkin页面","alt":"Zipkin页面","nro":143,"url":"../images/istio-zipkin.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Zipkin页面","attributes":{},"skip":false,"key":"6.3.1.1.5"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.6","level":"6.3.1.1","list_caption":"Figure: ServiceGraph页面","alt":"ServiceGraph页面","nro":144,"url":"../images/istio-servicegraph.jpg","index":6,"caption_template":"图片 - _CAPTION_","label":"ServiceGraph页面","attributes":{},"skip":false,"key":"6.3.1.1.6"},{"backlink":"usecases/install-and-expand-istio-mesh.html#fig6.3.1.3.1","level":"6.3.1.3","list_caption":"Figure: BookInfo","alt":"BookInfo","nro":145,"url":"../images/noistio.png","index":1,"caption_template":"图片 - _CAPTION_","label":"BookInfo","attributes":{},"skip":false,"key":"6.3.1.3.1"},{"backlink":"usecases/install-and-expand-istio-mesh.html#fig6.3.1.3.2","level":"6.3.1.3","list_caption":"Figure: BookInfo","alt":"BookInfo","nro":146,"url":"../images/noistio.png","index":2,"caption_template":"图片 - _CAPTION_","label":"BookInfo","attributes":{},"skip":false,"key":"6.3.1.3.2"},{"backlink":"usecases/integrating-vms.html#fig6.3.1.4.1","level":"6.3.1.4","list_caption":"Figure: Bookinfo应用的拓展Mesh","alt":"Bookinfo应用的拓展Mesh","nro":147,"url":"../images/istio-mesh-expansion.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Bookinfo应用的拓展Mesh","attributes":{},"skip":false,"key":"6.3.1.4.1"},{"backlink":"usecases/linkerd.html#fig6.3.2.1","level":"6.3.2","list_caption":"Figure: source https://linkerd.io","alt":"source https://linkerd.io","nro":148,"url":"../images/diagram-individual-instance.png","index":1,"caption_template":"图片 - _CAPTION_","label":"source https://linkerd.io","attributes":{},"skip":false,"key":"6.3.2.1"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.1","level":"6.3.2.1","list_caption":"Figure: Jenkins pipeline","alt":"Jenkins pipeline","nro":149,"url":"../images/linkerd-jenkins-pipeline.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Jenkins pipeline","attributes":{},"skip":false,"key":"6.3.2.1.1"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.2","level":"6.3.2.1","list_caption":"Figure: Jenkins config","alt":"Jenkins config","nro":150,"url":"../images/linkerd-jenkins.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Jenkins config","attributes":{},"skip":false,"key":"6.3.2.1.2"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.3","level":"6.3.2.1","list_caption":"Figure: namerd","alt":"namerd","nro":151,"url":"../images/namerd-internal.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"namerd","attributes":{},"skip":false,"key":"6.3.2.1.3"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.4","level":"6.3.2.1","list_caption":"Figure: linkerd监控","alt":"linkerd监控","nro":152,"url":"../images/linkerd-helloworld-outgoing.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"linkerd监控","attributes":{},"skip":false,"key":"6.3.2.1.4"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.5","level":"6.3.2.1","list_caption":"Figure: linkerd监控","alt":"linkerd监控","nro":153,"url":"../images/linkerd-helloworld-incoming.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"linkerd监控","attributes":{},"skip":false,"key":"6.3.2.1.5"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.6","level":"6.3.2.1","list_caption":"Figure: linkerd性能监控","alt":"linkerd性能监控","nro":154,"url":"../images/linkerd-grafana.png","index":6,"caption_template":"图片 - _CAPTION_","label":"linkerd性能监控","attributes":{},"skip":false,"key":"6.3.2.1.6"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.7","level":"6.3.2.1","list_caption":"Figure: Linkerd ingress controller","alt":"Linkerd ingress controller","nro":155,"url":"../images/linkerd-ingress-controller.jpg","index":7,"caption_template":"图片 - _CAPTION_","label":"Linkerd ingress controller","attributes":{},"skip":false,"key":"6.3.2.1.7"},{"backlink":"usecases/conduit-installation.html#fig6.3.3.2.1","level":"6.3.3.2","list_caption":"Figure: Conduit dashboard","alt":"Conduit dashboard","nro":156,"url":"../images/conduit-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Conduit dashboard","attributes":{},"skip":false,"key":"6.3.3.2.1"},{"backlink":"usecases/big-data.html#fig6.4.1","level":"6.4","list_caption":"Figure: Spark on yarn with kubernetes","alt":"Spark on yarn with kubernetes","nro":157,"url":"../images/spark-on-yarn-with-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Spark on yarn with kubernetes","attributes":{},"skip":false,"key":"6.4.1"},{"backlink":"usecases/big-data.html#fig6.4.2","level":"6.4","list_caption":"Figure: 在kubernetes上使用多种调度方式","alt":"在kubernetes上使用多种调度方式","nro":158,"url":"../images/spark-on-kubernetes-with-different-schedulers.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"在kubernetes上使用多种调度方式","attributes":{},"skip":false,"key":"6.4.2"},{"backlink":"usecases/spark-standalone-on-kubernetes.html#fig6.4.1.1","level":"6.4.1","list_caption":"Figure: spark master ui","alt":"spark master ui","nro":159,"url":"../images/spark-ui.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"spark master ui","attributes":{},"skip":false,"key":"6.4.1.1"},{"backlink":"usecases/spark-standalone-on-kubernetes.html#fig6.4.1.2","level":"6.4.1","list_caption":"Figure: zeppelin ui","alt":"zeppelin ui","nro":160,"url":"../images/zeppelin-ui.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"zeppelin ui","attributes":{},"skip":false,"key":"6.4.1.2"},{"backlink":"usecases/serverless.html#fig6.5.1","level":"6.5","list_caption":"Figure: 从物理机到函数计算","alt":"从物理机到函数计算","nro":161,"url":"../images/from-bare-metal-to-functions.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"从物理机到函数计算","attributes":{},"skip":false,"key":"6.5.1"},{"backlink":"usecases/serverless.html#fig6.5.2","level":"6.5","list_caption":"Figure: FaaS Landscape","alt":"FaaS Landscape","nro":162,"url":"../images/redpoint-faas-landscape.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"FaaS Landscape","attributes":{},"skip":false,"key":"6.5.2"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.1","level":"6.5.1","list_caption":"Figure: 服务端软件的运行环境","alt":"服务端软件的运行环境","nro":163,"url":"../images/serverless-server-side-software.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"服务端软件的运行环境","attributes":{},"skip":false,"key":"6.5.1.1"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.2","level":"6.5.1","list_caption":"Figure: FaaS应用架构","alt":"FaaS应用架构","nro":164,"url":"../images/serverless-faas-platform.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"FaaS应用架构","attributes":{},"skip":false,"key":"6.5.1.2"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.3","level":"6.5.1","list_caption":"Figure: 传统应用程序架构","alt":"传统应用程序架构","nro":165,"url":"../images/non-serverless-game-arch.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"传统应用程序架构","attributes":{},"skip":false,"key":"6.5.1.3"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.4","level":"6.5.1","list_caption":"Figure: Serverless架构","alt":"Serverless架构","nro":166,"url":"../images/serverless-game-arch.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Serverless架构","attributes":{},"skip":false,"key":"6.5.1.4"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.1","level":"6.5.2.1","list_caption":"Figure: OpenFaaS架构","alt":"OpenFaaS架构","nro":167,"url":"../images/openfaas-arch.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OpenFaaS架构","attributes":{},"skip":false,"key":"6.5.2.1.1"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.2","level":"6.5.2.1","list_caption":"Figure: OpenFaaS Prometheus","alt":"OpenFaaS Prometheus","nro":168,"url":"../images/openfaas-prometheus.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OpenFaaS Prometheus","attributes":{},"skip":false,"key":"6.5.2.1.2"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.3","level":"6.5.2.1","list_caption":"Figure: OpenFaas Grafana监控","alt":"OpenFaas Grafana监控","nro":169,"url":"../images/openfaas-grafana.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"OpenFaas Grafana监控","attributes":{},"skip":false,"key":"6.5.2.1.3"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.4","level":"6.5.2.1","list_caption":"Figure: OpenFaas Dashboard","alt":"OpenFaas Dashboard","nro":170,"url":"../images/openfaas-deploy-a-function.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"OpenFaas Dashboard","attributes":{},"skip":false,"key":"6.5.2.1.4"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.5","level":"6.5.2.1","list_caption":"Figure: NodeInfo执行结果","alt":"NodeInfo执行结果","nro":171,"url":"../images/openfaas-nodeinfo.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"NodeInfo执行结果","attributes":{},"skip":false,"key":"6.5.2.1.5"},{"backlink":"develop/sigs-and-working-group.html#fig7.2.1","level":"7.2","list_caption":"Figure: Kubernetes SIG","alt":"Kubernetes SIG","nro":172,"url":"../images/kubernetes-sigs.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes SIG","attributes":{},"skip":false,"key":"7.2.1"},{"backlink":"develop/testing.html#fig7.5.1","level":"7.5","list_caption":"Figure: test-infra架构图(图片来自官方GitHub)","alt":"test-infra架构图(图片来自官方GitHub)","nro":173,"url":"../images/kubernetes-test-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"test-infra架构图(图片来自官方GitHub)","attributes":{},"skip":false,"key":"7.5.1"},{"backlink":"develop/client-go-sample.html#fig7.6.1","level":"7.6","list_caption":"Figure: 使用kubernetes dashboard进行故障排查","alt":"使用kubernetes dashboard进行故障排查","nro":174,"url":"../images/kubernetes-client-go-sample-update.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用kubernetes dashboard进行故障排查","attributes":{},"skip":false,"key":"7.6.1"},{"backlink":"appendix/issues.html#fig8.6.1","level":"8.6","list_caption":"Figure: pvc-storage-limit","alt":"pvc-storage-limit","nro":175,"url":"../images/pvc-storage-limit.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"pvc-storage-limit","attributes":{},"skip":false,"key":"8.6.1"}]},"title":"Kubernetes Handbook - jimmysong.io","language":"zh-hans","links":{"sidebar":{"Jimmy Song":"https://jimmysong.io"}},"gitbook":"*","description":"Kubernetes中文指南/实践手册|kubernetes handbook|jimmysong.io|宋净超"},"file":{"path":"guide/using-statefulset.md","mtime":"2017-10-23T08:22:50.488Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2018-02-28T03:35:04.655Z"},"basePath":"..","book":{"language":""}});
+ gitbook.page.hasChanged({"page":{"title":"使用StatefulSet部署用状态应用","level":"4.6.3","depth":2,"next":{"title":"最佳实践概览","level":"5.1","depth":1,"path":"practice/index.md","ref":"practice/index.md","articles":[]},"previous":{"title":"迁移传统应用到Kubernetes中——以Hadoop YARN为例","level":"4.6.2","depth":2,"path":"guide/migrating-hadoop-yarn-to-kubernetes.md","ref":"guide/migrating-hadoop-yarn-to-kubernetes.md","articles":[]},"dir":"ltr"},"config":{"plugins":["github","codesnippet","splitter","page-toc-button","image-captions","editlink","back-to-top-button","-lunr","-search","search-plus","github-buttons@2.1.0","favicon@^0.0.2","tbfed-pagefooter@^0.0.1","3-ba","theme-default","-highlight","prism","prism-themes"],"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"},"pluginsConfig":{"tbfed-pagefooter":{"copyright":"Copyright © jimmysong.io 2017-2018","modify_label":"Updated at ","modify_format":"YYYY-MM-DD HH:mm:ss"},"prism":{"css":["prism-themes/themes/prism-ghcolors.css"]},"github":{"url":"https://github.com/rootsongjc/kubernetes-handbook"},"editlink":{"label":"编辑本页","multilingual":false,"base":"https://github.com/rootsongjc/kubernetes-handbook/blob/master/"},"splitter":{},"codesnippet":{},"fontsettings":{"theme":"white","family":"sans","size":2},"favicon":{"shortcut":"favicon.ico","bookmark":"favicon.ico"},"page-toc-button":{},"back-to-top-button":{},"prism-themes":{},"github-buttons":{"repo":"rootsongjc/kubernetes-handbook","types":["star"],"size":"small"},"3-ba":{"configuration":"auto","token":"11f7d254cfa4e0ca44b175c66d379ecc"},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"showLevel":true,"styles":{"ebook":"styles/ebook.css","epub":"styles/epub.css","mobi":"styles/mobi.css","pdf":"styles/pdf.css","print":"styles/print.css","website":"styles/website.css"}},"search-plus":{},"image-captions":{"caption":"图片 - _CAPTION_","variable_name":"_pictures"}},"theme":"default","author":"Jimmy Song","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{"_pictures":[{"backlink":"index.html#fig1.1.1","level":"1.1","list_caption":"Figure: Stargazers over time","alt":"Stargazers over time","nro":1,"url":"https://starcharts.herokuapp.com/rootsongjc/kubernetes-handbook.svg","index":1,"caption_template":"图片 - _CAPTION_","label":"Stargazers over time","attributes":{},"skip":false,"key":"1.1.1"},{"backlink":"cloud-native/cncf.html#fig1.2.1","level":"1.2","list_caption":"Figure: CNCF landscape","alt":"CNCF landscape","nro":2,"url":"https://github.com/cncf/landscape/raw/master/landscape/CloudNativeLandscape_latest.png","index":1,"caption_template":"图片 - _CAPTION_","label":"CNCF landscape","attributes":{},"skip":false,"key":"1.2.1"},{"backlink":"cloud-native/cncf.html#fig1.2.2","level":"1.2","list_caption":"Figure: CNCF项目成熟度级别","alt":"CNCF项目成熟度级别","nro":3,"url":"../images/cncf-graduation-criteria.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"CNCF项目成熟度级别","attributes":{},"skip":false,"key":"1.2.2"},{"backlink":"cloud-native/play-with-kubernetes.html#fig2.1.1","level":"2.1","list_caption":"Figure: Play with Kubernetes网页截图","alt":"Play with Kubernetes网页截图","nro":4,"url":"../images/play-with-kubernetes.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Play with Kubernetes网页截图","attributes":{},"skip":false,"key":"2.1.1"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.1","level":"2.2","list_caption":"Figure: 云计算演进历程","alt":"云计算演进历程","nro":5,"url":"../images/cloud-computing-evolution-road.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"云计算演进历程","attributes":{},"skip":false,"key":"2.2.1"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.2","level":"2.2","list_caption":"Figure: 来自Twitter @MarcWilczek","alt":"来自Twitter @MarcWilczek","nro":6,"url":"../images/cloud-native-comes-of-age.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"来自Twitter @MarcWilczek","attributes":{},"skip":false,"key":"2.2.2"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.3","level":"2.2","list_caption":"Figure: Cloud native思维导图","alt":"Cloud native思维导图","nro":7,"url":"../images/cloud-native-architecutre-mindnode.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Cloud native思维导图","attributes":{},"skip":false,"key":"2.2.3"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.4","level":"2.2","list_caption":"Figure: 十二因素应用","alt":"十二因素应用","nro":8,"url":"../images/12-factor-app.png","index":4,"caption_template":"图片 - _CAPTION_","label":"十二因素应用","attributes":{},"skip":false,"key":"2.2.4"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.5","level":"2.2","list_caption":"Figure: 容器生态","alt":"容器生态","nro":9,"url":"../images/container-ecosystem.png","index":5,"caption_template":"图片 - _CAPTION_","label":"容器生态","attributes":{},"skip":false,"key":"2.2.5"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.6","level":"2.2","list_caption":"Figure: 使用Jenkins进行持续集成与发布流程图","alt":"使用Jenkins进行持续集成与发布流程图","nro":10,"url":"../images/kubernetes-jenkins-ci-cd.png","index":6,"caption_template":"图片 - _CAPTION_","label":"使用Jenkins进行持续集成与发布流程图","attributes":{},"skip":false,"key":"2.2.6"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.7","level":"2.2","list_caption":"Figure: filebeat日志收集架构图","alt":"filebeat日志收集架构图","nro":11,"url":"../images/filebeat-log-collector-arch.png","index":7,"caption_template":"图片 - _CAPTION_","label":"filebeat日志收集架构图","attributes":{},"skip":false,"key":"2.2.7"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.8","level":"2.2","list_caption":"Figure: API文档","alt":"API文档","nro":12,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":8,"caption_template":"图片 - _CAPTION_","label":"API文档","attributes":{},"skip":false,"key":"2.2.8"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.9","level":"2.2","list_caption":"Figure: 迁移步骤示意图","alt":"迁移步骤示意图","nro":13,"url":"../images/migrating-hadoop-yarn-to-kubernetes.png","index":9,"caption_template":"图片 - _CAPTION_","label":"迁移步骤示意图","attributes":{},"skip":false,"key":"2.2.9"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.10","level":"2.2","list_caption":"Figure: service mesh架构图","alt":"service mesh架构图","nro":14,"url":"../images/serivce-mesh-control-plane.png","index":10,"caption_template":"图片 - _CAPTION_","label":"service mesh架构图","attributes":{},"skip":false,"key":"2.2.10"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.11","level":"2.2","list_caption":"Figure: kibana界面","alt":"kibana界面","nro":15,"url":"../images/filebeat-docker-test.jpg","index":11,"caption_template":"图片 - _CAPTION_","label":"kibana界面","attributes":{},"skip":false,"key":"2.2.11"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.12","level":"2.2","list_caption":"Figure: Grafana界面示意图1","alt":"Grafana界面示意图1","nro":16,"url":"../images/kubernetes-devops-example-grafana-1.png","index":12,"caption_template":"图片 - _CAPTION_","label":"Grafana界面示意图1","attributes":{},"skip":false,"key":"2.2.12"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.13","level":"2.2","list_caption":"Figure: Grafana界面示意图2","alt":"Grafana界面示意图2","nro":17,"url":"../images/kubernetes-devops-example-grafana-2.png","index":13,"caption_template":"图片 - _CAPTION_","label":"Grafana界面示意图2","attributes":{},"skip":false,"key":"2.2.13"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.14","level":"2.2","list_caption":"Figure: Grafana界面示意图3","alt":"Grafana界面示意图3","nro":18,"url":"../images/kubernetes-devops-example-grafana-3.png","index":14,"caption_template":"图片 - _CAPTION_","label":"Grafana界面示意图3","attributes":{},"skip":false,"key":"2.2.14"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.15","level":"2.2","list_caption":"Figure: dashboard","alt":"dashboard","nro":19,"url":"../images/spark-job-on-kubernetes-example-1.jpg","index":15,"caption_template":"图片 - _CAPTION_","label":"dashboard","attributes":{},"skip":false,"key":"2.2.15"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig2.2.16","level":"2.2","list_caption":"Figure: Grafana","alt":"Grafana","nro":20,"url":"../images/spark-job-on-kubernetes-example-2.jpg","index":16,"caption_template":"图片 - _CAPTION_","label":"Grafana","attributes":{},"skip":false,"key":"2.2.16"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.1","level":"2.3","list_caption":"Figure: Cloud Native容器实验室","alt":"Cloud Native容器实验室","nro":21,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-native-container-lab.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Cloud Native容器实验室","attributes":{},"skip":false,"key":"2.3.1"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.2","level":"2.3","list_caption":"Figure: 容器生态图 Container ecosystem","alt":"容器生态图 Container ecosystem","nro":22,"url":"../images/container-ecosystem.png","index":2,"caption_template":"图片 - _CAPTION_","label":"容器生态图 Container ecosystem","attributes":{},"skip":false,"key":"2.3.2"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.3","level":"2.3","list_caption":"Figure: Cloud Native油井","alt":"Cloud Native油井","nro":23,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-native-oil-well.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Cloud Native油井","attributes":{},"skip":false,"key":"2.3.3"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.4","level":"2.3","list_caption":"Figure: Kuberentes架构","alt":"Kuberentes架构","nro":24,"url":"../images/kubernetes-high-level-component-archtecture.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Kuberentes架构","attributes":{},"skip":false,"key":"2.3.4"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.5","level":"2.3","list_caption":"Figure: Cloud Native Core target","alt":"Cloud Native Core target","nro":25,"url":"../images/cloud-native-core-target.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Core target","attributes":{},"skip":false,"key":"2.3.5"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.6","level":"2.3","list_caption":"Figure: FaaS Landscape","alt":"FaaS Landscape","nro":26,"url":"../images/redpoint-faas-landscape.jpg","index":6,"caption_template":"图片 - _CAPTION_","label":"FaaS Landscape","attributes":{},"skip":false,"key":"2.3.6"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.7","level":"2.3","list_caption":"Figure: Workloads running on Kubernetes","alt":"Workloads running on Kubernetes","nro":27,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/workloads-running-on-kubernetes-2017-thenewstack.jpg","index":7,"caption_template":"图片 - _CAPTION_","label":"Workloads running on Kubernetes","attributes":{},"skip":false,"key":"2.3.7"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.8","level":"2.3","list_caption":"Figure: Gartner技术爆发趋势图2017","alt":"Gartner技术爆发趋势图2017","nro":28,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/gartner-hype-cycle-for-emerging-technologies-2017.jpg","index":8,"caption_template":"图片 - _CAPTION_","label":"Gartner技术爆发趋势图2017","attributes":{},"skip":false,"key":"2.3.8"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.9","level":"2.3","list_caption":"Figure: Microservices concerns","alt":"Microservices concerns","nro":29,"url":"../images/microservices-concerns.jpg","index":9,"caption_template":"图片 - _CAPTION_","label":"Microservices concerns","attributes":{},"skip":false,"key":"2.3.9"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.10","level":"2.3","list_caption":"Figure: 两种服务发现方式","alt":"两种服务发现方式","nro":30,"url":"../images/service-discovery-in-microservices.png","index":10,"caption_template":"图片 - _CAPTION_","label":"两种服务发现方式","attributes":{},"skip":false,"key":"2.3.10"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.11","level":"2.3","list_caption":"Figure: Cloud Native Pipeline","alt":"Cloud Native Pipeline","nro":31,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-natvie-pipeline.jpg","index":11,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Pipeline","attributes":{},"skip":false,"key":"2.3.11"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.12","level":"2.3","list_caption":"Figure: Cloud Native Features","alt":"Cloud Native Features","nro":32,"url":"https://jimmysong.io/kubernetes-handbook/images/cloud-native-architecutre-mindnode.jpg","index":12,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Features","attributes":{},"skip":false,"key":"2.3.12"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.13","level":"2.3","list_caption":"Figure: Cloud Native Landscape v1.0","alt":"Cloud Native Landscape v1.0","nro":33,"url":"https://raw.githubusercontent.com/cncf/landscape/master/landscape/CloudNativeLandscape_v1.0.jpg","index":13,"caption_template":"图片 - _CAPTION_","label":"Cloud Native Landscape v1.0","attributes":{},"skip":false,"key":"2.3.13"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.14","level":"2.3","list_caption":"Figure: Building a Cloud Native Architecture with Kubernetes followed 12 factor app","alt":"Building a Cloud Native Architecture with Kubernetes followed 12 factor app","nro":34,"url":"../images/building-cloud-native-architecture-with-kubernetes.png","index":14,"caption_template":"图片 - _CAPTION_","label":"Building a Cloud Native Architecture with Kubernetes followed 12 factor app","attributes":{},"skip":false,"key":"2.3.14"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.15","level":"2.3","list_caption":"Figure: Creating Kubernetes native app","alt":"Creating Kubernetes native app","nro":35,"url":"../images/creating-kubernetes-native-app.jpg","index":15,"caption_template":"图片 - _CAPTION_","label":"Creating Kubernetes native app","attributes":{},"skip":false,"key":"2.3.15"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.16","level":"2.3","list_caption":"Figure: Service Mesh中国社区slogan","alt":"Service Mesh中国社区slogan","nro":36,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/service-meshes-pro.jpg","index":16,"caption_template":"图片 - _CAPTION_","label":"Service Mesh中国社区slogan","attributes":{},"skip":false,"key":"2.3.16"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.17","level":"2.3","list_caption":"Figure: istio vs linkerd","alt":"istio vs linkerd","nro":37,"url":"../images/istio-vs-linkerd.jpg","index":17,"caption_template":"图片 - _CAPTION_","label":"istio vs linkerd","attributes":{},"skip":false,"key":"2.3.17"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.18","level":"2.3","list_caption":"Figure: Cloud Native factory","alt":"Cloud Native factory","nro":38,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/cloud-native-factory.jpg","index":18,"caption_template":"图片 - _CAPTION_","label":"Cloud Native factory","attributes":{},"skip":false,"key":"2.3.18"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.19","level":"2.3","list_caption":"Figure: Deployment pipeline","alt":"Deployment pipeline","nro":39,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/deployment-pipeline-comic.jpg","index":19,"caption_template":"图片 - _CAPTION_","label":"Deployment pipeline","attributes":{},"skip":false,"key":"2.3.19"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.20","level":"2.3","list_caption":"Figure: Spark on Kubernetes with different schedulers","alt":"Spark on Kubernetes with different schedulers","nro":40,"url":"../images/spark-on-kubernetes-with-different-schedulers.jpg","index":20,"caption_template":"图片 - _CAPTION_","label":"Spark on Kubernetes with different schedulers","attributes":{},"skip":false,"key":"2.3.20"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.21","level":"2.3","list_caption":"Figure: Kubernetes solutions","alt":"Kubernetes solutions","nro":41,"url":"https://res.cloudinary.com/jimmysong/image/upload/images/kubernetes-solutions-choices.jpg","index":21,"caption_template":"图片 - _CAPTION_","label":"Kubernetes solutions","attributes":{},"skip":false,"key":"2.3.21"},{"backlink":"cloud-native/from-kubernetes-to-cloud-native.html#fig2.3.22","level":"2.3","list_caption":"Figure: Kubernetes SIG","alt":"Kubernetes SIG","nro":42,"url":"../images/kubernetes-sigs.jpg","index":22,"caption_template":"图片 - _CAPTION_","label":"Kubernetes SIG","attributes":{},"skip":false,"key":"2.3.22"},{"backlink":"concepts/index.html#fig3.1.1","level":"3.1","list_caption":"Figure: Borg架构","alt":"Borg架构","nro":43,"url":"../images/borg.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Borg架构","attributes":{},"skip":false,"key":"3.1.1"},{"backlink":"concepts/index.html#fig3.1.2","level":"3.1","list_caption":"Figure: Kubernetes架构","alt":"Kubernetes架构","nro":44,"url":"../images/architecture.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Kubernetes架构","attributes":{},"skip":false,"key":"3.1.2"},{"backlink":"concepts/index.html#fig3.1.3","level":"3.1","list_caption":"Figure: Kuberentes架构(图片来自于网络)","alt":"Kuberentes架构(图片来自于网络)","nro":45,"url":"../images/kubernetes-high-level-component-archtecture.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Kuberentes架构(图片来自于网络)","attributes":{},"skip":false,"key":"3.1.3"},{"backlink":"concepts/index.html#fig3.1.4","level":"3.1","list_caption":"Figure: kubernetes整体架构示意图","alt":"kubernetes整体架构示意图","nro":46,"url":"../images/kubernetes-whole-arch.png","index":4,"caption_template":"图片 - _CAPTION_","label":"kubernetes整体架构示意图","attributes":{},"skip":false,"key":"3.1.4"},{"backlink":"concepts/index.html#fig3.1.5","level":"3.1","list_caption":"Figure: Kubernetes master架构示意图","alt":"Kubernetes master架构示意图","nro":47,"url":"../images/kubernetes-master-arch.png","index":5,"caption_template":"图片 - _CAPTION_","label":"Kubernetes master架构示意图","attributes":{},"skip":false,"key":"3.1.5"},{"backlink":"concepts/index.html#fig3.1.6","level":"3.1","list_caption":"Figure: kubernetes node架构示意图","alt":"kubernetes node架构示意图","nro":48,"url":"../images/kubernetes-node-arch.png","index":6,"caption_template":"图片 - _CAPTION_","label":"kubernetes node架构示意图","attributes":{},"skip":false,"key":"3.1.6"},{"backlink":"concepts/index.html#fig3.1.7","level":"3.1","list_caption":"Figure: Kubernetes分层架构示意图","alt":"Kubernetes分层架构示意图","nro":49,"url":"../images/kubernetes-layers-arch.jpg","index":7,"caption_template":"图片 - _CAPTION_","label":"Kubernetes分层架构示意图","attributes":{},"skip":false,"key":"3.1.7"},{"backlink":"concepts/concepts.html#fig3.1.1.1","level":"3.1.1","list_caption":"Figure: 分层架构示意图","alt":"分层架构示意图","nro":50,"url":"../images/kubernetes-layers-arch.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"分层架构示意图","attributes":{},"skip":false,"key":"3.1.1.1"},{"backlink":"concepts/open-interfaces.html#fig3.1.3.1","level":"3.1.3","list_caption":"Figure: 开放接口","alt":"开放接口","nro":51,"url":"../images/open-interfaces.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"开放接口","attributes":{},"skip":false,"key":"3.1.3.1"},{"backlink":"concepts/cri.html#fig3.1.3.1.1","level":"3.1.3.1","list_caption":"Figure: CRI架构-图片来自kubernetes blog","alt":"CRI架构-图片来自kubernetes blog","nro":52,"url":"../images/cri-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"CRI架构-图片来自kubernetes blog","attributes":{},"skip":false,"key":"3.1.3.1.1"},{"backlink":"concepts/networking.html#fig3.1.4.1","level":"3.1.4","list_caption":"Figure: flannel网络架构(图片来自openshift)","alt":"flannel网络架构(图片来自openshift)","nro":53,"url":"../images/flannel-networking.png","index":1,"caption_template":"图片 - _CAPTION_","label":"flannel网络架构(图片来自openshift)","attributes":{},"skip":false,"key":"3.1.4.1"},{"backlink":"concepts/calico.html#fig3.1.5.1","level":"3.1.5","list_caption":"Figure: CRI架构-图片来自https://www.jianshu.com/p/f0177b84de66","alt":"CRI架构-图片来自https://www.jianshu.com/p/f0177b84de66","nro":54,"url":"../images/calico.png","index":1,"caption_template":"图片 - _CAPTION_","label":"CRI架构-图片来自https://www.jianshu.com/p/f0177b84de66","attributes":{},"skip":false,"key":"3.1.5.1"},{"backlink":"concepts/pod-overview.html#fig3.1.6.2.1","level":"3.1.6.2","list_caption":"Figure: pod diagram","alt":"pod diagram","nro":55,"url":"../images/pod-overview.png","index":1,"caption_template":"图片 - _CAPTION_","label":"pod diagram","attributes":{},"skip":false,"key":"3.1.6.2.1"},{"backlink":"concepts/pod.html#fig3.1.6.3.1","level":"3.1.6.3","list_caption":"Figure: Pod示意图","alt":"Pod示意图","nro":56,"url":"../images/pod-overview.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Pod示意图","attributes":{},"skip":false,"key":"3.1.6.3.1"},{"backlink":"concepts/pod.html#fig3.1.6.3.2","level":"3.1.6.3","list_caption":"Figure: Pod Cheatsheet","alt":"Pod Cheatsheet","nro":57,"url":"../images/kubernetes-pod-cheatsheet.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Pod Cheatsheet","attributes":{},"skip":false,"key":"3.1.6.3.2"},{"backlink":"concepts/label.html#fig3.1.7.3.1","level":"3.1.7.3","list_caption":"Figure: label示意图","alt":"label示意图","nro":58,"url":"../images/labels.png","index":1,"caption_template":"图片 - _CAPTION_","label":"label示意图","attributes":{},"skip":false,"key":"3.1.7.3.1"},{"backlink":"concepts/deployment.html#fig3.1.8.1.1","level":"3.1.8.1","list_caption":"Figure: kubernetes deployment cheatsheet","alt":"kubernetes deployment cheatsheet","nro":59,"url":"../images/deployment-cheatsheet.png","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes deployment cheatsheet","attributes":{},"skip":false,"key":"3.1.8.1.1"},{"backlink":"concepts/horizontal-pod-autoscaling.html#fig3.1.8.7.1","level":"3.1.8.7","list_caption":"Figure: horizontal-pod-autoscaler","alt":"horizontal-pod-autoscaler","nro":60,"url":"../images/horizontal-pod-autoscaler.png","index":1,"caption_template":"图片 - _CAPTION_","label":"horizontal-pod-autoscaler","attributes":{},"skip":false,"key":"3.1.8.7.1"},{"backlink":"concepts/service.html#fig3.1.9.1.1","level":"3.1.9.1","list_caption":"Figure: userspace代理模式下Service概览图","alt":"userspace代理模式下Service概览图","nro":61,"url":"../images/services-userspace-overview.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"userspace代理模式下Service概览图","attributes":{},"skip":false,"key":"3.1.9.1.1"},{"backlink":"concepts/service.html#fig3.1.9.1.2","level":"3.1.9.1","list_caption":"Figure: iptables代理模式下Service概览图","alt":"iptables代理模式下Service概览图","nro":62,"url":"../images/services-iptables-overview.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"iptables代理模式下Service概览图","attributes":{},"skip":false,"key":"3.1.9.1.2"},{"backlink":"guide/using-kubectl.html#fig4.3.2.1","level":"4.3.2","list_caption":"Figure: kubectl cheatsheet","alt":"kubectl cheatsheet","nro":63,"url":"../images/kubernetes-kubectl-cheatsheet.png","index":1,"caption_template":"图片 - _CAPTION_","label":"kubectl cheatsheet","attributes":{},"skip":false,"key":"4.3.2.1"},{"backlink":"guide/using-kubectl.html#fig4.3.2.2","level":"4.3.2","list_caption":"Figure: 增加kubeclt命令的工具(图片来自网络)","alt":"增加kubeclt命令的工具(图片来自网络)","nro":64,"url":"../images/tools-to-supercharge-kubectl.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"增加kubeclt命令的工具(图片来自网络)","attributes":{},"skip":false,"key":"4.3.2.2"},{"backlink":"guide/using-kubectl.html#fig4.3.2.3","level":"4.3.2","list_caption":"Figure: 增强的kubectl命令","alt":"增强的kubectl命令","nro":65,"url":"../images/supercharged-kubectl.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"增强的kubectl命令","attributes":{},"skip":false,"key":"4.3.2.3"},{"backlink":"guide/using-kubectl.html#fig4.3.2.4","level":"4.3.2","list_caption":"Figure: kube-shell页面","alt":"kube-shell页面","nro":66,"url":"../images/kube-shell.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kube-shell页面","attributes":{},"skip":false,"key":"4.3.2.4"},{"backlink":"guide/ip-masq-agent.html#fig4.4.5.1","level":"4.4.5","list_caption":"Figure: IP伪装代理示意图","alt":"IP伪装代理示意图","nro":67,"url":"../images/ip-masq.png","index":1,"caption_template":"图片 - _CAPTION_","label":"IP伪装代理示意图","attributes":{},"skip":false,"key":"4.4.5.1"},{"backlink":"guide/auth-with-kubeconfig-or-token.html#fig4.4.6.1","level":"4.4.6","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":68,"url":"../images/brand-kubeconfig-yaml.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"4.4.6.1"},{"backlink":"guide/authentication.html#fig4.4.7.1","level":"4.4.7","list_caption":"Figure: Kubernetes OpenID Connect Flow","alt":"Kubernetes OpenID Connect Flow","nro":69,"url":"../images/kubernetes-oidc-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes OpenID Connect Flow","attributes":{},"skip":false,"key":"4.4.7.1"},{"backlink":"guide/cabin-mobile-dashboard-for-kubernetes.html#fig4.5.6.1","level":"4.5.6","list_caption":"Figure: App Store","alt":"App Store","nro":70,"url":"../images/cabin-kubernetes-mobile-dashboard-1.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"App Store","attributes":{},"skip":false,"key":"4.5.6.1"},{"backlink":"guide/cabin-mobile-dashboard-for-kubernetes.html#fig4.5.6.2","level":"4.5.6","list_caption":"Figure: 在手机上操作Kubernetes集群","alt":"在手机上操作Kubernetes集群","nro":71,"url":"../images/cabin-kubernetes-mobile-dashboard-4.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"在手机上操作Kubernetes集群","attributes":{},"skip":false,"key":"4.5.6.2"},{"backlink":"guide/kubernetes-desktop-client.html#fig4.5.7.1","level":"4.5.7","list_caption":"Figure: Kubernetic客户端","alt":"Kubernetic客户端","nro":72,"url":"../images/kubernetic-desktop-ui.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetic客户端","attributes":{},"skip":false,"key":"4.5.7.1"},{"backlink":"guide/kubernator-kubernetes-ui.html#fig4.5.8.1","level":"4.5.8","list_caption":"Figure: Kubernator catalog页面","alt":"Kubernator catalog页面","nro":73,"url":"../images/kubernator-catalog.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernator catalog页面","attributes":{},"skip":false,"key":"4.5.8.1"},{"backlink":"guide/kubernator-kubernetes-ui.html#fig4.5.8.2","level":"4.5.8","list_caption":"Figure: Kubernator rbac页面","alt":"Kubernator rbac页面","nro":74,"url":"../images/kubernator-rbac.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kubernator rbac页面","attributes":{},"skip":false,"key":"4.5.8.2"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.1","level":"4.6.1","list_caption":"Figure: API","alt":"API","nro":75,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"API","attributes":{},"skip":false,"key":"4.6.1.1"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.2","level":"4.6.1","list_caption":"Figure: wercker","alt":"wercker","nro":76,"url":"../images/k8s-app-monitor-agent-wercker.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"wercker","attributes":{},"skip":false,"key":"4.6.1.2"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.3","level":"4.6.1","list_caption":"Figure: 图表","alt":"图表","nro":77,"url":"../images/k8s-app-monitor-agent.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"图表","attributes":{},"skip":false,"key":"4.6.1.3"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig4.6.2.1","level":"4.6.2","list_caption":"Figure: spark on yarn with kubernetes","alt":"spark on yarn with kubernetes","nro":78,"url":"../images/spark-on-yarn-with-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"spark on yarn with kubernetes","attributes":{},"skip":false,"key":"4.6.2.1"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig4.6.2.2","level":"4.6.2","list_caption":"Figure: Terms","alt":"Terms","nro":79,"url":"../images/terms-in-kubernetes-app-deployment.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Terms","attributes":{},"skip":false,"key":"4.6.2.2"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig4.6.2.3","level":"4.6.2","list_caption":"Figure: 分解步骤解析","alt":"分解步骤解析","nro":80,"url":"../images/migrating-hadoop-yarn-to-kubernetes.png","index":3,"caption_template":"图片 - _CAPTION_","label":"分解步骤解析","attributes":{},"skip":false,"key":"4.6.2.3"},{"backlink":"practice/node-installation.html#fig5.2.7.1","level":"5.2.7","list_caption":"Figure: welcome nginx","alt":"welcome nginx","nro":81,"url":"../images/kubernetes-installation-test-nginx.png","index":1,"caption_template":"图片 - _CAPTION_","label":"welcome nginx","attributes":{},"skip":false,"key":"5.2.7.1"},{"backlink":"practice/dashboard-addon-installation.html#fig5.2.9.1","level":"5.2.9","list_caption":"Figure: kubernetes dashboard","alt":"kubernetes dashboard","nro":82,"url":"../images/kubernetes-dashboard-raw.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes dashboard","attributes":{},"skip":false,"key":"5.2.9.1"},{"backlink":"practice/dashboard-addon-installation.html#fig5.2.9.2","level":"5.2.9","list_caption":"Figure: V1.6.3版本的dashboard界面","alt":"V1.6.3版本的dashboard界面","nro":83,"url":"../images/dashboard-v163.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"V1.6.3版本的dashboard界面","attributes":{},"skip":false,"key":"5.2.9.2"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.1","level":"5.2.10","list_caption":"Figure: dashboard-heapster","alt":"dashboard-heapster","nro":84,"url":"../images/kubernetes-dashboard-with-heapster.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"dashboard-heapster","attributes":{},"skip":false,"key":"5.2.10.1"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.2","level":"5.2.10","list_caption":"Figure: grafana","alt":"grafana","nro":85,"url":"../images/kubernetes-heapster-grafana.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"grafana","attributes":{},"skip":false,"key":"5.2.10.2"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.3","level":"5.2.10","list_caption":"Figure: kubernetes-influxdb-heapster","alt":"kubernetes-influxdb-heapster","nro":86,"url":"../images/kubernetes-influxdb-heapster.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"kubernetes-influxdb-heapster","attributes":{},"skip":false,"key":"5.2.10.3"},{"backlink":"practice/heapster-addon-installation.html#fig5.2.10.4","level":"5.2.10","list_caption":"Figure: 修改grafana模板","alt":"修改grafana模板","nro":87,"url":"../images/grafana-dashboard-setting.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"修改grafana模板","attributes":{},"skip":false,"key":"5.2.10.4"},{"backlink":"practice/efk-addon-installation.html#fig5.2.11.1","level":"5.2.11","list_caption":"Figure: es-setting","alt":"es-setting","nro":88,"url":"../images/es-setting.png","index":1,"caption_template":"图片 - _CAPTION_","label":"es-setting","attributes":{},"skip":false,"key":"5.2.11.1"},{"backlink":"practice/efk-addon-installation.html#fig5.2.11.2","level":"5.2.11","list_caption":"Figure: es-home","alt":"es-home","nro":89,"url":"../images/kubernetes-efk-kibana.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"es-home","attributes":{},"skip":false,"key":"5.2.11.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.1","level":"5.3.1","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":90,"url":"../images/traefik-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.3.1.1"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.2","level":"5.3.1","list_caption":"Figure: traefik-nginx","alt":"traefik-nginx","nro":91,"url":"../images/traefik-nginx.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"traefik-nginx","attributes":{},"skip":false,"key":"5.3.1.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.3","level":"5.3.1","list_caption":"Figure: traefik-guestbook","alt":"traefik-guestbook","nro":92,"url":"../images/traefik-guestbook.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"traefik-guestbook","attributes":{},"skip":false,"key":"5.3.1.3"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.1","level":"5.3.2","list_caption":"Figure: 使用dashboard来扩容","alt":"使用dashboard来扩容","nro":93,"url":"../images/dashbaord-scale.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用dashboard来扩容","attributes":{},"skip":false,"key":"5.3.2.1"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.2","level":"5.3.2","list_caption":"Figure: Traefik的UI","alt":"Traefik的UI","nro":94,"url":"../images/traefik-dashboard-locust.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Traefik的UI","attributes":{},"skip":false,"key":"5.3.2.2"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.3","level":"5.3.2","list_caption":"Figure: Locust启动界面","alt":"Locust启动界面","nro":95,"url":"../images/locust-start-swarming.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Locust启动界面","attributes":{},"skip":false,"key":"5.3.2.3"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.4","level":"5.3.2","list_caption":"Figure: Dashboard查看页面","alt":"Dashboard查看页面","nro":96,"url":"../images/sample-webapp-rc.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Dashboard查看页面","attributes":{},"skip":false,"key":"5.3.2.4"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.5","level":"5.3.2","list_caption":"Figure: Locust测试结果页面","alt":"Locust测试结果页面","nro":97,"url":"../images/locust-dashboard.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Locust测试结果页面","attributes":{},"skip":false,"key":"5.3.2.5"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.3.3.1","level":"5.3.3","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":98,"url":"../images/kubenetes-e2e-test.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.3.3.1"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.3.3.2","level":"5.3.3","list_caption":"Figure: locust测试页面","alt":"locust测试页面","nro":99,"url":"../images/kubernetes-locust-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"locust测试页面","attributes":{},"skip":false,"key":"5.3.3.2"},{"backlink":"practice/edge-node-configuration.html#fig5.3.4.1","level":"5.3.4","list_caption":"Figure: 边缘节点架构","alt":"边缘节点架构","nro":100,"url":"../images/kubernetes-edge-node-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"边缘节点架构","attributes":{},"skip":false,"key":"5.3.4.1"},{"backlink":"practice/edge-node-configuration.html#fig5.3.4.2","level":"5.3.4","list_caption":"Figure: 使用域名来访问Kubernetes中的服务","alt":"使用域名来访问Kubernetes中的服务","nro":101,"url":"../images/accessing-kubernetes-services-with-dns-name.png","index":2,"caption_template":"图片 - _CAPTION_","label":"使用域名来访问Kubernetes中的服务","attributes":{},"skip":false,"key":"5.3.4.2"},{"backlink":"practice/configuring-dns.html#fig5.3.6.1","level":"5.3.6","list_caption":"Figure: DNS lookup flow","alt":"DNS lookup flow","nro":102,"url":"https://d33wubrfki0l68.cloudfront.net/340889cb80e81dcd19a16bc34697a7907e2b229a/24ad0/docs/tasks/administer-cluster/dns-custom-nameservers/dns.png","index":1,"caption_template":"图片 - _CAPTION_","label":"DNS lookup flow","attributes":{},"skip":false,"key":"5.3.6.1"},{"backlink":"practice/app-log-collection.html#fig5.4.2.1","level":"5.4.2","list_caption":"Figure: filebeat日志收集架构图","alt":"filebeat日志收集架构图","nro":103,"url":"../images/filebeat-log-collector.png","index":1,"caption_template":"图片 - _CAPTION_","label":"filebeat日志收集架构图","attributes":{},"skip":false,"key":"5.4.2.1"},{"backlink":"practice/app-log-collection.html#fig5.4.2.2","level":"5.4.2","list_caption":"Figure: Kibana页面","alt":"Kibana页面","nro":104,"url":"../images/filebeat-docker-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kibana页面","attributes":{},"skip":false,"key":"5.4.2.2"},{"backlink":"practice/app-log-collection.html#fig5.4.2.3","level":"5.4.2","list_caption":"Figure: filebeat收集的日志详细信息","alt":"filebeat收集的日志详细信息","nro":105,"url":"../images/kubernetes-filebeat-detail.png","index":3,"caption_template":"图片 - _CAPTION_","label":"filebeat收集的日志详细信息","attributes":{},"skip":false,"key":"5.4.2.3"},{"backlink":"practice/monitor.html#fig5.4.4.1","level":"5.4.4","list_caption":"Figure: Kubernetes集群中的监控","alt":"Kubernetes集群中的监控","nro":106,"url":"../images/monitoring-in-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes集群中的监控","attributes":{},"skip":false,"key":"5.4.4.1"},{"backlink":"practice/monitor.html#fig5.4.4.2","level":"5.4.4","list_caption":"Figure: kubernetes的容器命名规则示意图","alt":"kubernetes的容器命名规则示意图","nro":107,"url":"../images/kubernetes-container-naming-rule.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"kubernetes的容器命名规则示意图","attributes":{},"skip":false,"key":"5.4.4.2"},{"backlink":"practice/monitor.html#fig5.4.4.3","level":"5.4.4","list_caption":"Figure: Heapster架构图(改进版)","alt":"Heapster架构图(改进版)","nro":108,"url":"../images/kubernetes-heapster-monitoring.png","index":3,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图(改进版)","attributes":{},"skip":false,"key":"5.4.4.3"},{"backlink":"practice/monitor.html#fig5.4.4.4","level":"5.4.4","list_caption":"Figure: 应用监控架构图","alt":"应用监控架构图","nro":109,"url":"../images/kubernetes-app-monitoring.png","index":4,"caption_template":"图片 - _CAPTION_","label":"应用监控架构图","attributes":{},"skip":false,"key":"5.4.4.4"},{"backlink":"practice/monitor.html#fig5.4.4.5","level":"5.4.4","list_caption":"Figure: 应用拓扑图","alt":"应用拓扑图","nro":110,"url":"../images/weave-scope-service-topology.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"应用拓扑图","attributes":{},"skip":false,"key":"5.4.4.5"},{"backlink":"practice/data-persistence-problem.html#fig5.4.5.1","level":"5.4.5","list_caption":"Figure: 日志持久化收集解决方案示意图","alt":"日志持久化收集解决方案示意图","nro":111,"url":"../images/log-persistence-logstash.png","index":1,"caption_template":"图片 - _CAPTION_","label":"日志持久化收集解决方案示意图","attributes":{},"skip":false,"key":"5.4.5.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.5.1.2.1","level":"5.5.1.2","list_caption":"Figure: 创建存储","alt":"创建存储","nro":112,"url":"../images/create-gluster-storage.png","index":1,"caption_template":"图片 - _CAPTION_","label":"创建存储","attributes":{},"skip":false,"key":"5.5.1.2.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.5.1.2.2","level":"5.5.1.2","list_caption":"Figure: Screen Shot 2017-03-24 at 11.09.34.png","alt":"Screen Shot 2017-03-24 at 11.09.34.png","nro":113,"url":"https://keithtenzer.files.wordpress.com/2017/03/screen-shot-2017-03-24-at-11-09-341.png?w=440","index":2,"caption_template":"图片 - _CAPTION_","label":"Screen Shot 2017-03-24 at 11.09.34.png","attributes":{},"skip":false,"key":"5.5.1.2.2"},{"backlink":"practice/openebs.html#fig5.5.3.1","level":"5.5.3","list_caption":"Figure: OpenEBS集群数据平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","alt":"OpenEBS集群数据平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","nro":114,"url":"../images/OpenEBS-Data-Plane.png","index":1,"caption_template":"图片 - _CAPTION_","label":"OpenEBS集群数据平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","attributes":{},"skip":false,"key":"5.5.3.1"},{"backlink":"practice/openebs.html#fig5.5.3.2","level":"5.5.3","list_caption":"Figure: OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","alt":"OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","nro":115,"url":"../images/OpenEBS-Control-Plane.png","index":2,"caption_template":"图片 - _CAPTION_","label":"OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md)","attributes":{},"skip":false,"key":"5.5.3.2"},{"backlink":"practice/using-openebs-for-persistent-storage.html#fig5.5.3.1.1","level":"5.5.3.1","list_caption":"Figure: Kubernetes iSCSI架构","alt":"Kubernetes iSCSI架构","nro":116,"url":"../images/iscsi-on-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes iSCSI架构","attributes":{},"skip":false,"key":"5.5.3.1.1"},{"backlink":"practice/using-heapster-to-get-object-metrics.html#fig5.6.1.1.1","level":"5.6.1.1","list_caption":"Figure: Heapster架构图","alt":"Heapster架构图","nro":117,"url":"../images/heapster-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图","attributes":{},"skip":false,"key":"5.6.1.1.1"},{"backlink":"practice/prometheus.html#fig5.6.2.1","level":"5.6.2","list_caption":"Figure: Prometheus 架构图","alt":"Prometheus 架构图","nro":118,"url":"../images/prometheus-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Prometheus 架构图","attributes":{},"skip":false,"key":"5.6.2.1"},{"backlink":"practice/using-prometheus-to-monitor-kuberentes-cluster.html#fig5.6.2.1.1","level":"5.6.2.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":119,"url":"../images/kubernetes-prometheus-monitoring.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"5.6.2.1.1"},{"backlink":"practice/helm.html#fig5.7.1.1","level":"5.7.1","list_caption":"Figure: Helm chart源","alt":"Helm chart源","nro":120,"url":"../images/helm-charts-repository.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm chart源","attributes":{},"skip":false,"key":"5.7.1.1"},{"backlink":"practice/helm.html#fig5.7.1.2","level":"5.7.1","list_caption":"Figure: TODO应用的Web页面","alt":"TODO应用的Web页面","nro":121,"url":"../images/helm-mean-todo-aholic.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"TODO应用的Web页面","attributes":{},"skip":false,"key":"5.7.1.2"},{"backlink":"practice/create-private-charts-repo.html#fig5.7.2.1","level":"5.7.2","list_caption":"Figure: Helm monocular界面","alt":"Helm monocular界面","nro":122,"url":"../images/helm-monocular-jimmysong.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm monocular界面","attributes":{},"skip":false,"key":"5.7.2.1"},{"backlink":"practice/jenkins-ci-cd.html#fig5.8.1.1","level":"5.8.1","list_caption":"Figure: 基于Jenkins的持续集成与发布","alt":"基于Jenkins的持续集成与发布","nro":123,"url":"../images/kubernetes-jenkins-ci-cd.png","index":1,"caption_template":"图片 - _CAPTION_","label":"基于Jenkins的持续集成与发布","attributes":{},"skip":false,"key":"5.8.1.1"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.1","level":"5.8.2","list_caption":"Figure: OAuth注册","alt":"OAuth注册","nro":124,"url":"../images/github-oauth-register.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OAuth注册","attributes":{},"skip":false,"key":"5.8.2.1"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.2","level":"5.8.2","list_caption":"Figure: OAuth key","alt":"OAuth key","nro":125,"url":"../images/github-oauth-drone-key.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OAuth key","attributes":{},"skip":false,"key":"5.8.2.2"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.3","level":"5.8.2","list_caption":"Figure: Drone登陆界面","alt":"Drone登陆界面","nro":126,"url":"../images/drone-login-github.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Drone登陆界面","attributes":{},"skip":false,"key":"5.8.2.3"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.4","level":"5.8.2","list_caption":"Figure: Github启用repo设置","alt":"Github启用repo设置","nro":127,"url":"../images/drone-github-active.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Github启用repo设置","attributes":{},"skip":false,"key":"5.8.2.4"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.5","level":"5.8.2","list_caption":"Figure: Github单个repo设置","alt":"Github单个repo设置","nro":128,"url":"../images/drone-github-repo-setting.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Github单个repo设置","attributes":{},"skip":false,"key":"5.8.2.5"},{"backlink":"practice/manually-upgrade.html#fig5.9.1.1","level":"5.9.1","list_caption":"Figure: Kubernetes零宕机时间升级建议","alt":"Kubernetes零宕机时间升级建议","nro":129,"url":"../images/zero-downtime-kubernetes-upgrade-tips.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes零宕机时间升级建议","attributes":{},"skip":false,"key":"5.9.1.1"},{"backlink":"practice/manually-upgrade.html#fig5.9.1.2","level":"5.9.1","list_caption":"Figure: Kuberentes API对象的版本演进","alt":"Kuberentes API对象的版本演进","nro":130,"url":"../images/kubernetes-apversions-changes.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kuberentes API对象的版本演进","attributes":{},"skip":false,"key":"5.9.1.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.1","level":"5.9.2","list_caption":"Figure: 登陆界面","alt":"登陆界面","nro":131,"url":"../images/kubernetes-dashboard-1.7.1-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"登陆界面","attributes":{},"skip":false,"key":"5.9.2.1"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.2","level":"5.9.2","list_caption":"Figure: 首页","alt":"首页","nro":132,"url":"../images/kubernetes-dashboard-1.7.1-default-page.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"首页","attributes":{},"skip":false,"key":"5.9.2.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.3","level":"5.9.2","list_caption":"Figure: 用户空间","alt":"用户空间","nro":133,"url":"../images/kubernetes-dashboard-1.7.1-brand.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"用户空间","attributes":{},"skip":false,"key":"5.9.2.3"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.4","level":"5.9.2","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":134,"url":"../images/brand-kubeconfig-yaml.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"5.9.2.4"},{"backlink":"usecases/microservices.html#fig6.2.1","level":"6.2","list_caption":"Figure: 微服务关注的部分","alt":"微服务关注的部分","nro":135,"url":"../images/microservices-concerns.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"微服务关注的部分","attributes":{},"skip":false,"key":"6.2.1"},{"backlink":"usecases/service-discovery-in-microservices.html#fig6.2.1.1","level":"6.2.1","list_caption":"Figure: 微服务中的服务发现","alt":"微服务中的服务发现","nro":136,"url":"../images/service-discovery-in-microservices.png","index":1,"caption_template":"图片 - _CAPTION_","label":"微服务中的服务发现","attributes":{},"skip":false,"key":"6.2.1.1"},{"backlink":"usecases/service-mesh.html#fig6.3.1","level":"6.3","list_caption":"Figure: 下一代异构微服务架构","alt":"下一代异构微服务架构","nro":137,"url":"../images/polyglot-microservices-serivce-mesh.png","index":1,"caption_template":"图片 - _CAPTION_","label":"下一代异构微服务架构","attributes":{},"skip":false,"key":"6.3.1"},{"backlink":"usecases/service-mesh.html#fig6.3.2","level":"6.3","list_caption":"Figure: Service Mesh 架构图","alt":"Service Mesh 架构图","nro":138,"url":"../images/serivce-mesh-control-plane.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Service Mesh 架构图","attributes":{},"skip":false,"key":"6.3.2"},{"backlink":"usecases/service-mesh.html#fig6.3.3","level":"6.3","list_caption":"Figure: Istio vs linkerd","alt":"Istio vs linkerd","nro":139,"url":"../images/istio-vs-linkerd.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Istio vs linkerd","attributes":{},"skip":false,"key":"6.3.3"},{"backlink":"usecases/istio.html#fig6.3.1.1","level":"6.3.1","list_caption":"Figure: Istio架构图","alt":"Istio架构图","nro":140,"url":"../images/istio-arch.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Istio架构图","attributes":{},"skip":false,"key":"6.3.1.1"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.1","level":"6.3.1.1","list_caption":"Figure: BookInfo Sample应用架构图","alt":"BookInfo Sample应用架构图","nro":141,"url":"../images/bookinfo-sample-arch.png","index":1,"caption_template":"图片 - _CAPTION_","label":"BookInfo Sample应用架构图","attributes":{},"skip":false,"key":"6.3.1.1.1"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.2","level":"6.3.1.1","list_caption":"Figure: BookInfo Sample页面","alt":"BookInfo Sample页面","nro":142,"url":"../images/bookinfo-sample.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"BookInfo Sample页面","attributes":{},"skip":false,"key":"6.3.1.1.2"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.3","level":"6.3.1.1","list_caption":"Figure: Istio Grafana界面","alt":"Istio Grafana界面","nro":143,"url":"../images/istio-grafana.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Istio Grafana界面","attributes":{},"skip":false,"key":"6.3.1.1.3"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.4","level":"6.3.1.1","list_caption":"Figure: Prometheus页面","alt":"Prometheus页面","nro":144,"url":"../images/istio-prometheus.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Prometheus页面","attributes":{},"skip":false,"key":"6.3.1.1.4"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.5","level":"6.3.1.1","list_caption":"Figure: Zipkin页面","alt":"Zipkin页面","nro":145,"url":"../images/istio-zipkin.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Zipkin页面","attributes":{},"skip":false,"key":"6.3.1.1.5"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.6","level":"6.3.1.1","list_caption":"Figure: ServiceGraph页面","alt":"ServiceGraph页面","nro":146,"url":"../images/istio-servicegraph.jpg","index":6,"caption_template":"图片 - _CAPTION_","label":"ServiceGraph页面","attributes":{},"skip":false,"key":"6.3.1.1.6"},{"backlink":"usecases/install-and-expand-istio-mesh.html#fig6.3.1.3.1","level":"6.3.1.3","list_caption":"Figure: BookInfo","alt":"BookInfo","nro":147,"url":"../images/noistio.png","index":1,"caption_template":"图片 - _CAPTION_","label":"BookInfo","attributes":{},"skip":false,"key":"6.3.1.3.1"},{"backlink":"usecases/install-and-expand-istio-mesh.html#fig6.3.1.3.2","level":"6.3.1.3","list_caption":"Figure: BookInfo","alt":"BookInfo","nro":148,"url":"../images/noistio.png","index":2,"caption_template":"图片 - _CAPTION_","label":"BookInfo","attributes":{},"skip":false,"key":"6.3.1.3.2"},{"backlink":"usecases/integrating-vms.html#fig6.3.1.4.1","level":"6.3.1.4","list_caption":"Figure: Bookinfo应用的拓展Mesh","alt":"Bookinfo应用的拓展Mesh","nro":149,"url":"../images/istio-mesh-expansion.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Bookinfo应用的拓展Mesh","attributes":{},"skip":false,"key":"6.3.1.4.1"},{"backlink":"usecases/linkerd.html#fig6.3.2.1","level":"6.3.2","list_caption":"Figure: source https://linkerd.io","alt":"source https://linkerd.io","nro":150,"url":"../images/diagram-individual-instance.png","index":1,"caption_template":"图片 - _CAPTION_","label":"source https://linkerd.io","attributes":{},"skip":false,"key":"6.3.2.1"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.1","level":"6.3.2.1","list_caption":"Figure: Jenkins pipeline","alt":"Jenkins pipeline","nro":151,"url":"../images/linkerd-jenkins-pipeline.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Jenkins pipeline","attributes":{},"skip":false,"key":"6.3.2.1.1"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.2","level":"6.3.2.1","list_caption":"Figure: Jenkins config","alt":"Jenkins config","nro":152,"url":"../images/linkerd-jenkins.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Jenkins config","attributes":{},"skip":false,"key":"6.3.2.1.2"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.3","level":"6.3.2.1","list_caption":"Figure: namerd","alt":"namerd","nro":153,"url":"../images/namerd-internal.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"namerd","attributes":{},"skip":false,"key":"6.3.2.1.3"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.4","level":"6.3.2.1","list_caption":"Figure: linkerd监控","alt":"linkerd监控","nro":154,"url":"../images/linkerd-helloworld-outgoing.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"linkerd监控","attributes":{},"skip":false,"key":"6.3.2.1.4"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.5","level":"6.3.2.1","list_caption":"Figure: linkerd监控","alt":"linkerd监控","nro":155,"url":"../images/linkerd-helloworld-incoming.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"linkerd监控","attributes":{},"skip":false,"key":"6.3.2.1.5"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.6","level":"6.3.2.1","list_caption":"Figure: linkerd性能监控","alt":"linkerd性能监控","nro":156,"url":"../images/linkerd-grafana.png","index":6,"caption_template":"图片 - _CAPTION_","label":"linkerd性能监控","attributes":{},"skip":false,"key":"6.3.2.1.6"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.7","level":"6.3.2.1","list_caption":"Figure: Linkerd ingress controller","alt":"Linkerd ingress controller","nro":157,"url":"../images/linkerd-ingress-controller.jpg","index":7,"caption_template":"图片 - _CAPTION_","label":"Linkerd ingress controller","attributes":{},"skip":false,"key":"6.3.2.1.7"},{"backlink":"usecases/conduit-installation.html#fig6.3.3.2.1","level":"6.3.3.2","list_caption":"Figure: Conduit dashboard","alt":"Conduit dashboard","nro":158,"url":"../images/conduit-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Conduit dashboard","attributes":{},"skip":false,"key":"6.3.3.2.1"},{"backlink":"usecases/big-data.html#fig6.4.1","level":"6.4","list_caption":"Figure: Spark on yarn with kubernetes","alt":"Spark on yarn with kubernetes","nro":159,"url":"../images/spark-on-yarn-with-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Spark on yarn with kubernetes","attributes":{},"skip":false,"key":"6.4.1"},{"backlink":"usecases/big-data.html#fig6.4.2","level":"6.4","list_caption":"Figure: 在kubernetes上使用多种调度方式","alt":"在kubernetes上使用多种调度方式","nro":160,"url":"../images/spark-on-kubernetes-with-different-schedulers.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"在kubernetes上使用多种调度方式","attributes":{},"skip":false,"key":"6.4.2"},{"backlink":"usecases/spark-standalone-on-kubernetes.html#fig6.4.1.1","level":"6.4.1","list_caption":"Figure: spark master ui","alt":"spark master ui","nro":161,"url":"../images/spark-ui.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"spark master ui","attributes":{},"skip":false,"key":"6.4.1.1"},{"backlink":"usecases/spark-standalone-on-kubernetes.html#fig6.4.1.2","level":"6.4.1","list_caption":"Figure: zeppelin ui","alt":"zeppelin ui","nro":162,"url":"../images/zeppelin-ui.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"zeppelin ui","attributes":{},"skip":false,"key":"6.4.1.2"},{"backlink":"usecases/serverless.html#fig6.5.1","level":"6.5","list_caption":"Figure: 从物理机到函数计算","alt":"从物理机到函数计算","nro":163,"url":"../images/from-bare-metal-to-functions.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"从物理机到函数计算","attributes":{},"skip":false,"key":"6.5.1"},{"backlink":"usecases/serverless.html#fig6.5.2","level":"6.5","list_caption":"Figure: FaaS Landscape","alt":"FaaS Landscape","nro":164,"url":"../images/redpoint-faas-landscape.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"FaaS Landscape","attributes":{},"skip":false,"key":"6.5.2"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.1","level":"6.5.1","list_caption":"Figure: 服务端软件的运行环境","alt":"服务端软件的运行环境","nro":165,"url":"../images/serverless-server-side-software.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"服务端软件的运行环境","attributes":{},"skip":false,"key":"6.5.1.1"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.2","level":"6.5.1","list_caption":"Figure: FaaS应用架构","alt":"FaaS应用架构","nro":166,"url":"../images/serverless-faas-platform.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"FaaS应用架构","attributes":{},"skip":false,"key":"6.5.1.2"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.3","level":"6.5.1","list_caption":"Figure: 传统应用程序架构","alt":"传统应用程序架构","nro":167,"url":"../images/non-serverless-game-arch.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"传统应用程序架构","attributes":{},"skip":false,"key":"6.5.1.3"},{"backlink":"usecases/understanding-serverless.html#fig6.5.1.4","level":"6.5.1","list_caption":"Figure: Serverless架构","alt":"Serverless架构","nro":168,"url":"../images/serverless-game-arch.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Serverless架构","attributes":{},"skip":false,"key":"6.5.1.4"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.1","level":"6.5.2.1","list_caption":"Figure: OpenFaaS架构","alt":"OpenFaaS架构","nro":169,"url":"../images/openfaas-arch.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OpenFaaS架构","attributes":{},"skip":false,"key":"6.5.2.1.1"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.2","level":"6.5.2.1","list_caption":"Figure: OpenFaaS Prometheus","alt":"OpenFaaS Prometheus","nro":170,"url":"../images/openfaas-prometheus.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OpenFaaS Prometheus","attributes":{},"skip":false,"key":"6.5.2.1.2"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.3","level":"6.5.2.1","list_caption":"Figure: OpenFaas Grafana监控","alt":"OpenFaas Grafana监控","nro":171,"url":"../images/openfaas-grafana.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"OpenFaas Grafana监控","attributes":{},"skip":false,"key":"6.5.2.1.3"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.4","level":"6.5.2.1","list_caption":"Figure: OpenFaas Dashboard","alt":"OpenFaas Dashboard","nro":172,"url":"../images/openfaas-deploy-a-function.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"OpenFaas Dashboard","attributes":{},"skip":false,"key":"6.5.2.1.4"},{"backlink":"usecases/openfaas-quick-start.html#fig6.5.2.1.5","level":"6.5.2.1","list_caption":"Figure: NodeInfo执行结果","alt":"NodeInfo执行结果","nro":173,"url":"../images/openfaas-nodeinfo.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"NodeInfo执行结果","attributes":{},"skip":false,"key":"6.5.2.1.5"},{"backlink":"develop/sigs-and-working-group.html#fig7.2.1","level":"7.2","list_caption":"Figure: Kubernetes SIG","alt":"Kubernetes SIG","nro":174,"url":"../images/kubernetes-sigs.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes SIG","attributes":{},"skip":false,"key":"7.2.1"},{"backlink":"develop/testing.html#fig7.5.1","level":"7.5","list_caption":"Figure: test-infra架构图(图片来自官方GitHub)","alt":"test-infra架构图(图片来自官方GitHub)","nro":175,"url":"../images/kubernetes-test-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"test-infra架构图(图片来自官方GitHub)","attributes":{},"skip":false,"key":"7.5.1"},{"backlink":"develop/client-go-sample.html#fig7.6.1","level":"7.6","list_caption":"Figure: 使用kubernetes dashboard进行故障排查","alt":"使用kubernetes dashboard进行故障排查","nro":176,"url":"../images/kubernetes-client-go-sample-update.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用kubernetes dashboard进行故障排查","attributes":{},"skip":false,"key":"7.6.1"},{"backlink":"appendix/issues.html#fig8.6.1","level":"8.6","list_caption":"Figure: pvc-storage-limit","alt":"pvc-storage-limit","nro":177,"url":"../images/pvc-storage-limit.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"pvc-storage-limit","attributes":{},"skip":false,"key":"8.6.1"}]},"title":"Kubernetes Handbook - jimmysong.io","language":"zh-hans","links":{"sidebar":{"Jimmy Song":"https://jimmysong.io"}},"gitbook":"*","description":"Kubernetes中文指南/实践手册|kubernetes handbook|jimmysong.io|宋净超"},"file":{"path":"guide/using-statefulset.md","mtime":"2017-10-23T08:22:50.488Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2018-03-04T10:00:06.861Z"},"basePath":"..","book":{"language":""}});
});
diff --git a/images/cncf-graduation-criteria.jpg b/images/cncf-graduation-criteria.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..3cdee44ab471f8c30214530c72396fe67c56adcd
GIT binary patch
literal 221005
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