From 114d8129402ad1f5973cac6ad4c5bcaa92d7f5ae Mon Sep 17 00:00:00 2001
From: rootsongjc
Date: Thu, 15 Mar 2018 10:15:02 +0800
Subject: [PATCH] add spring boot note spots
---
appendix/debug-kubernetes-services.html | 2 +-
appendix/docker-best-practice.html | 2 +-
appendix/index.html | 2 +-
appendix/issues.html | 2 +-
appendix/kubernetes-1.7-changelog.html | 2 +-
appendix/kubernetes-1.8-changelog.html | 2 +-
appendix/kubernetes-1.9-changelog.html | 2 +-
...e-summary-in-2017-and-outlook-for-2018.html | 2 +-
appendix/kubernetes-changelog.html | 2 +-
appendix/material-share.html | 2 +-
appendix/summary-and-outlook.html | 2 +-
appendix/tricks.html | 2 +-
cloud-native/cncf.html | 2 +-
.../from-kubernetes-to-cloud-native.html | 2 +-
...bernetes-and-cloud-native-app-overview.html | 2 +-
cloud-native/play-with-kubernetes.html | 2 +-
concepts/aggregated-api-server.html | 2 +-
concepts/annotation.html | 2 +-
concepts/apiservice.html | 2 +-
concepts/authentication-and-permission.html | 2 +-
concepts/calico.html | 2 +-
concepts/cluster.html | 2 +-
concepts/cni.html | 2 +-
concepts/concepts.html | 2 +-
concepts/configmap-hot-update.html | 2 +-
concepts/configmap.html | 2 +-
concepts/controllers.html | 2 +-
concepts/cri.html | 2 +-
concepts/cronjob.html | 2 +-
concepts/csi.html | 2 +-
concepts/custom-metrics-hpa.html | 2 +-
concepts/custom-resource.html | 2 +-
concepts/daemonset.html | 2 +-
concepts/deployment.html | 2 +-
concepts/etcd.html | 2 +-
concepts/extension.html | 2 +-
concepts/garbage-collection.html | 2 +-
concepts/horizontal-pod-autoscaling.html | 2 +-
concepts/index.html | 2 +-
concepts/ingress.html | 2 +-
concepts/init-containers.html | 2 +-
concepts/job.html | 2 +-
concepts/label.html | 2 +-
concepts/namespace.html | 2 +-
concepts/network-policy.html | 2 +-
concepts/networking.html | 2 +-
concepts/node.html | 2 +-
concepts/objects.html | 2 +-
concepts/open-interfaces.html | 2 +-
concepts/persistent-volume.html | 2 +-
concepts/pod-disruption-budget.html | 2 +-
concepts/pod-hook.html | 2 +-
concepts/pod-lifecycle.html | 6 ++++--
concepts/pod-overview.html | 2 +-
concepts/pod-preset.html | 2 +-
concepts/pod-security-policy.html | 2 +-
concepts/pod-state-and-lifecycle.html | 2 +-
concepts/pod.html | 2 +-
concepts/rbac.html | 2 +-
concepts/replicaset.html | 2 +-
concepts/scheduling.html | 2 +-
concepts/secret.html | 2 +-
concepts/service-discovery.html | 2 +-
concepts/service.html | 2 +-
concepts/serviceaccount.html | 2 +-
concepts/statefulset.html | 2 +-
concepts/storage.html | 2 +-
concepts/storageclass.html | 2 +-
concepts/taint-and-toleration.html | 2 +-
concepts/traefik-ingress-controller.html | 2 +-
concepts/volume.html | 2 +-
develop/advance-developer.html | 2 +-
develop/client-go-sample.html | 2 +-
develop/contribute.html | 2 +-
develop/developing-environment.html | 2 +-
develop/index.html | 2 +-
develop/minikube.html | 2 +-
develop/operator.html | 2 +-
develop/sigs-and-working-group.html | 2 +-
develop/testing.html | 2 +-
...vagrant-and-virtualbox-for-development.html | 2 +-
guide/access-cluster.html | 2 +-
guide/access-kubernetes-cluster.html | 2 +-
...netes-pods-from-outside-of-the-cluster.html | 2 +-
...pplication-development-deployment-flow.html | 2 +-
guide/auth-with-kubeconfig-or-token.html | 2 +-
...uthenticate-across-clusters-kubeconfig.html | 2 +-
guide/authentication.html | 2 +-
.../cabin-mobile-dashboard-for-kubernetes.html | 2 +-
guide/cluster-security-management.html | 2 +-
guide/command-usage.html | 2 +-
guide/configure-liveness-readiness-probes.html | 2 +-
guide/configure-pod-service-account.html | 2 +-
...onnecting-to-applications-port-forward.html | 2 +-
guide/deploy-applications-in-kubernetes.html | 2 +-
guide/docker-cli-to-kubectl.html | 2 +-
guide/index.html | 2 +-
guide/ip-masq-agent.html | 2 +-
guide/kubectl-cheatsheet.html | 2 +-
...ectl-user-authentication-authorization.html | 2 +-
.../kubelet-authentication-authorization.html | 2 +-
guide/kubernator-kubernetes-ui.html | 2 +-
guide/kubernetes-desktop-client.html | 2 +-
guide/managing-tls-in-a-cluster.html | 2 +-
guide/migrating-hadoop-yarn-to-kubernetes.html | 2 +-
guide/resource-configuration.html | 2 +-
guide/resource-quota-management.html | 2 +-
guide/secret-configuration.html | 2 +-
guide/service-access-application-cluster.html | 2 +-
guide/tls-bootstrapping.html | 2 +-
...sing-etcdctl-to-access-kubernetes-data.html | 2 +-
guide/using-kubectl.html | 2 +-
guide/using-statefulset.html | 2 +-
images/kubernetes-pod-life-cycle.jpg | Bin 0 -> 75865 bytes
images/spring-boot-note-spots.png | Bin 0 -> 309565 bytes
index.html | 2 +-
practice/app-log-collection.html | 2 +-
practice/cephfs.html | 2 +-
practice/ci-cd.html | 2 +-
practice/configuration-best-practice.html | 2 +-
practice/configuring-dns.html | 2 +-
practice/create-kubeconfig.html | 2 +-
practice/create-private-charts-repo.html | 2 +-
practice/create-tls-and-secret-key.html | 2 +-
practice/dashboard-addon-installation.html | 2 +-
practice/dashboard-upgrade.html | 2 +-
practice/data-persistence-problem.html | 2 +-
practice/distributed-load-test.html | 2 +-
practice/drone-ci-cd.html | 2 +-
practice/edge-node-configuration.html | 2 +-
practice/efk-addon-installation.html | 2 +-
practice/etcd-cluster-installation.html | 2 +-
practice/federation.html | 2 +-
practice/flannel-installation.html | 2 +-
practice/glusterfs.html | 2 +-
practice/heapster-addon-installation.html | 2 +-
practice/heapster.html | 2 +-
practice/helm.html | 2 +-
practice/index.html | 2 +-
practice/install-kubernetes-on-centos.html | 2 +-
practice/jenkins-ci-cd.html | 2 +-
practice/kubectl-installation.html | 2 +-
practice/kubedns-addon-installation.html | 2 +-
.../manage-compute-resources-container.html | 2 +-
practice/manually-upgrade.html | 2 +-
practice/master-installation.html | 2 +-
practice/monitor.html | 2 +-
practice/monitoring.html | 2 +-
.../network-and-cluster-perfermance-test.html | 2 +-
practice/nginx-ingress-installation.html | 2 +-
practice/node-installation.html | 2 +-
practice/openebs.html | 2 +-
practice/operation.html | 2 +-
practice/prometheus.html | 2 +-
practice/rook.html | 2 +-
.../service-discovery-and-loadbalancing.html | 2 +-
practice/service-rolling-update.html | 2 +-
practice/services-management-tool.html | 2 +-
...tainers-using-glusterfs-with-openshift.html | 2 +-
practice/storage.html | 2 +-
practice/traefik-ingress-installation.html | 2 +-
practice/update-and-upgrade.html | 2 +-
.../using-ceph-for-persistent-storage.html | 2 +-
...using-glusterfs-for-persistent-storage.html | 2 +-
.../using-heapster-to-get-object-metrics.html | 2 +-
.../using-openebs-for-persistent-storage.html | 2 +-
...ometheus-to-monitor-kuberentes-cluster.html | 2 +-
search_plus_index.json | 2 +-
usecases/big-data.html | 2 +-
usecases/conduit-installation.html | 2 +-
usecases/conduit-overview.html | 2 +-
usecases/conduit.html | 2 +-
usecases/configuring-request-routing.html | 2 +-
usecases/edge-computing.html | 2 +-
usecases/faas.html | 2 +-
usecases/index.html | 2 +-
usecases/install-and-expand-istio-mesh.html | 2 +-
usecases/integrating-vms.html | 2 +-
usecases/istio-installation.html | 2 +-
usecases/istio.html | 2 +-
usecases/linkerd-user-guide.html | 2 +-
usecases/linkerd.html | 2 +-
.../microservices-for-java-developers.html | 9 ++++++---
usecases/microservices.html | 2 +-
usecases/openfaas-quick-start.html | 2 +-
...spark-with-kubernetes-native-scheduler.html | 2 +-
usecases/serverless.html | 2 +-
.../service-discovery-in-microservices.html | 2 +-
usecases/service-mesh.html | 2 +-
usecases/spark-standalone-on-kubernetes.html | 2 +-
usecases/spring-boot-quick-start-guide.html | 10 +++++-----
usecases/understanding-serverless.html | 2 +-
192 files changed, 202 insertions(+), 197 deletions(-)
create mode 100644 images/kubernetes-pod-life-cycle.jpg
create mode 100644 images/spring-boot-note-spots.png
diff --git a/appendix/debug-kubernetes-services.html b/appendix/debug-kubernetes-services.html
index db61e5faa..45deae525 100644
--- a/appendix/debug-kubernetes-services.html
+++ b/appendix/debug-kubernetes-services.html
@@ -3416,7 +3416,7 @@ kubectl top pod POD_NAME --containers
diff --git a/appendix/docker-best-practice.html b/appendix/docker-best-practice.html
index a2da2aa30..632a14bed 100644
--- a/appendix/docker-best-practice.html
+++ b/appendix/docker-best-practice.html
@@ -3464,7 +3464,7 @@
diff --git a/appendix/index.html b/appendix/index.html
index a350f521e..bb85eab25 100644
--- a/appendix/index.html
+++ b/appendix/index.html
@@ -3393,7 +3393,7 @@
diff --git a/appendix/issues.html b/appendix/issues.html
index 00320aeb7..6f2fafe16 100644
--- a/appendix/issues.html
+++ b/appendix/issues.html
@@ -3455,7 +3455,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 ebf0405a7..ee77dbf61 100644
--- a/appendix/kubernetes-1.7-changelog.html
+++ b/appendix/kubernetes-1.7-changelog.html
@@ -3422,7 +3422,7 @@
diff --git a/appendix/kubernetes-1.8-changelog.html b/appendix/kubernetes-1.8-changelog.html
index 8b1746cfe..644fa8159 100644
--- a/appendix/kubernetes-1.8-changelog.html
+++ b/appendix/kubernetes-1.8-changelog.html
@@ -3399,7 +3399,7 @@
diff --git a/appendix/kubernetes-1.9-changelog.html b/appendix/kubernetes-1.9-changelog.html
index acf173627..1df85f9e4 100644
--- a/appendix/kubernetes-1.9-changelog.html
+++ b/appendix/kubernetes-1.9-changelog.html
@@ -3405,7 +3405,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 da74ca172..965bbb4c6 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
@@ -3453,7 +3453,7 @@
diff --git a/appendix/kubernetes-changelog.html b/appendix/kubernetes-changelog.html
index 90fa7bdb9..db4971066 100644
--- a/appendix/kubernetes-changelog.html
+++ b/appendix/kubernetes-changelog.html
@@ -3392,7 +3392,7 @@
diff --git a/appendix/material-share.html b/appendix/material-share.html
index 58cb2f100..906d473b7 100644
--- a/appendix/material-share.html
+++ b/appendix/material-share.html
@@ -3455,7 +3455,7 @@
diff --git a/appendix/summary-and-outlook.html b/appendix/summary-and-outlook.html
index d0ef65a58..8da9cef66 100644
--- a/appendix/summary-and-outlook.html
+++ b/appendix/summary-and-outlook.html
@@ -3385,7 +3385,7 @@
diff --git a/appendix/tricks.html b/appendix/tricks.html
index f71fbdbc1..9baab8ea6 100644
--- a/appendix/tricks.html
+++ b/appendix/tricks.html
@@ -3598,7 +3598,7 @@
diff --git a/cloud-native/cncf.html b/cloud-native/cncf.html
index 27514e4e2..afe321bdd 100644
--- a/cloud-native/cncf.html
+++ b/cloud-native/cncf.html
@@ -3435,7 +3435,7 @@
diff --git a/cloud-native/from-kubernetes-to-cloud-native.html b/cloud-native/from-kubernetes-to-cloud-native.html
index 50cf7a9d9..908b8270b 100644
--- a/cloud-native/from-kubernetes-to-cloud-native.html
+++ b/cloud-native/from-kubernetes-to-cloud-native.html
@@ -3646,7 +3646,7 @@
diff --git a/cloud-native/kubernetes-and-cloud-native-app-overview.html b/cloud-native/kubernetes-and-cloud-native-app-overview.html
index a4bc894d2..d64e7173d 100644
--- a/cloud-native/kubernetes-and-cloud-native-app-overview.html
+++ b/cloud-native/kubernetes-and-cloud-native-app-overview.html
@@ -3737,7 +3737,7 @@
diff --git a/cloud-native/play-with-kubernetes.html b/cloud-native/play-with-kubernetes.html
index fd8dcb13f..da04fd4ea 100644
--- a/cloud-native/play-with-kubernetes.html
+++ b/cloud-native/play-with-kubernetes.html
@@ -3423,7 +3423,7 @@
diff --git a/concepts/aggregated-api-server.html b/concepts/aggregated-api-server.html
index 9737e91ca..4317065cd 100644
--- a/concepts/aggregated-api-server.html
+++ b/concepts/aggregated-api-server.html
@@ -3403,7 +3403,7 @@
diff --git a/concepts/annotation.html b/concepts/annotation.html
index 2919fb4f8..c11833fb2 100644
--- a/concepts/annotation.html
+++ b/concepts/annotation.html
@@ -3449,7 +3449,7 @@
diff --git a/concepts/apiservice.html b/concepts/apiservice.html
index 063d7c08a..d8a22864b 100644
--- a/concepts/apiservice.html
+++ b/concepts/apiservice.html
@@ -3495,7 +3495,7 @@ v1
diff --git a/concepts/authentication-and-permission.html b/concepts/authentication-and-permission.html
index d00412877..3ebc89f45 100644
--- a/concepts/authentication-and-permission.html
+++ b/concepts/authentication-and-permission.html
@@ -3385,7 +3385,7 @@
diff --git a/concepts/calico.html b/concepts/calico.html
index b56e5381e..eef14366c 100644
--- a/concepts/calico.html
+++ b/concepts/calico.html
@@ -3420,7 +3420,7 @@ calicoctl get node
diff --git a/concepts/cluster.html b/concepts/cluster.html
index 0c6b6bdd7..96919b3a4 100644
--- a/concepts/cluster.html
+++ b/concepts/cluster.html
@@ -3385,7 +3385,7 @@
diff --git a/concepts/cni.html b/concepts/cni.html
index 6644e495f..e3cda71bb 100644
--- a/concepts/cni.html
+++ b/concepts/cni.html
@@ -3489,7 +3489,7 @@
diff --git a/concepts/concepts.html b/concepts/concepts.html
index 7139d6572..082443ad9 100644
--- a/concepts/concepts.html
+++ b/concepts/concepts.html
@@ -3466,7 +3466,7 @@
diff --git a/concepts/configmap-hot-update.html b/concepts/configmap-hot-update.html
index 75e56108b..436bfbc7f 100644
--- a/concepts/configmap-hot-update.html
+++ b/concepts/configmap-hot-update.html
@@ -3690,7 +3690,7 @@ DEBUG
diff --git a/concepts/configmap.html b/concepts/configmap.html
index d4e52a6c3..b291472e5 100644
--- a/concepts/configmap.html
+++ b/concepts/configmap.html
@@ -3671,7 +3671,7 @@ log_level=INFO
diff --git a/concepts/controllers.html b/concepts/controllers.html
index fbc8199ab..ca1064438 100644
--- a/concepts/controllers.html
+++ b/concepts/controllers.html
@@ -3385,7 +3385,7 @@
diff --git a/concepts/cri.html b/concepts/cri.html
index 2454e2b0a..312ea0fcb 100644
--- a/concepts/cri.html
+++ b/concepts/cri.html
@@ -3510,7 +3510,7 @@ service ImageService {
diff --git a/concepts/cronjob.html b/concepts/cronjob.html
index 01da624eb..9b2b734d1 100644
--- a/concepts/cronjob.html
+++ b/concepts/cronjob.html
@@ -3478,7 +3478,7 @@ job "hello-1202039034" deleted
diff --git a/concepts/csi.html b/concepts/csi.html
index 4ae648e59..12ea6f0f1 100644
--- a/concepts/csi.html
+++ b/concepts/csi.html
@@ -3475,7 +3475,7 @@
diff --git a/concepts/custom-metrics-hpa.html b/concepts/custom-metrics-hpa.html
index 7882c81c0..20399b409 100644
--- a/concepts/custom-metrics-hpa.html
+++ b/concepts/custom-metrics-hpa.html
@@ -3435,7 +3435,7 @@
diff --git a/concepts/custom-resource.html b/concepts/custom-resource.html
index fe22fede6..5d2a88bfc 100644
--- a/concepts/custom-resource.html
+++ b/concepts/custom-resource.html
@@ -3495,7 +3495,7 @@
diff --git a/concepts/daemonset.html b/concepts/daemonset.html
index 153dbb29c..a98ebae36 100644
--- a/concepts/daemonset.html
+++ b/concepts/daemonset.html
@@ -3457,7 +3457,7 @@
diff --git a/concepts/deployment.html b/concepts/deployment.html
index dfd099f97..27a96bb49 100644
--- a/concepts/deployment.html
+++ b/concepts/deployment.html
@@ -3935,7 +3935,7 @@ $ echo $?
diff --git a/concepts/etcd.html b/concepts/etcd.html
index 73b226bf2..d8d82917c 100644
--- a/concepts/etcd.html
+++ b/concepts/etcd.html
@@ -3456,7 +3456,7 @@ thirdpartyresources
diff --git a/concepts/extension.html b/concepts/extension.html
index 9c1541e9d..0a5fa3bfc 100644
--- a/concepts/extension.html
+++ b/concepts/extension.html
@@ -3385,7 +3385,7 @@
diff --git a/concepts/garbage-collection.html b/concepts/garbage-collection.html
index a737e88bd..44f9b10ce 100644
--- a/concepts/garbage-collection.html
+++ b/concepts/garbage-collection.html
@@ -3474,7 +3474,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 42a87d5c8..9ee6e0dc9 100644
--- a/concepts/horizontal-pod-autoscaling.html
+++ b/concepts/horizontal-pod-autoscaling.html
@@ -3496,7 +3496,7 @@ kubectl delete hpa
diff --git a/concepts/index.html b/concepts/index.html
index 16e7313f7..a867aa7f5 100644
--- a/concepts/index.html
+++ b/concepts/index.html
@@ -3453,7 +3453,7 @@ Kubernetes 还提供完善的管理]
diff --git a/concepts/ingress.html b/concepts/ingress.html
index ea39c7568..063a9f4ba 100644
--- a/concepts/ingress.html
+++ b/concepts/ingress.html
@@ -3606,7 +3606,7 @@ NAME RULE BACKEND ADDRESS
diff --git a/concepts/init-containers.html b/concepts/init-containers.html
index f998ad95e..6227f75e3 100644
--- a/concepts/init-containers.html
+++ b/concepts/init-containers.html
@@ -3580,7 +3580,7 @@ myapp-pod 1/1 Running 0 9m
diff --git a/concepts/job.html b/concepts/job.html
index 96ebe3dc0..87b80c9ae 100644
--- a/concepts/job.html
+++ b/concepts/job.html
@@ -3418,7 +3418,7 @@ $ kubectl logs $pods
diff --git a/concepts/label.html b/concepts/label.html
index fc323a813..f6f8890bb 100644
--- a/concepts/label.html
+++ b/concepts/label.html
@@ -3463,7 +3463,7 @@ $ kubectl get pods -l 'environment,environment n
diff --git a/concepts/namespace.html b/concepts/namespace.html
index 1f93d879b..844e489f1 100644
--- a/concepts/namespace.html
+++ b/concepts/namespace.html
@@ -3394,7 +3394,7 @@
diff --git a/concepts/network-policy.html b/concepts/network-policy.html
index a565d42a6..57c1df010 100644
--- a/concepts/network-policy.html
+++ b/concepts/network-policy.html
@@ -3447,7 +3447,7 @@
diff --git a/concepts/networking.html b/concepts/networking.html
index 9e374652c..9eaae19bc 100644
--- a/concepts/networking.html
+++ b/concepts/networking.html
@@ -3703,7 +3703,7 @@ target prot opt source des
diff --git a/concepts/node.html b/concepts/node.html
index f885df64e..855eb2edf 100644
--- a/concepts/node.html
+++ b/concepts/node.html
@@ -3417,7 +3417,7 @@
diff --git a/concepts/objects.html b/concepts/objects.html
index 7fffd2fc3..f4d0b7a95 100644
--- a/concepts/objects.html
+++ b/concepts/objects.html
@@ -3484,7 +3484,7 @@
diff --git a/concepts/open-interfaces.html b/concepts/open-interfaces.html
index 696f56e75..43d74d27d 100644
--- a/concepts/open-interfaces.html
+++ b/concepts/open-interfaces.html
@@ -3392,7 +3392,7 @@
diff --git a/concepts/persistent-volume.html b/concepts/persistent-volume.html
index b93369ec9..71886dbfc 100644
--- a/concepts/persistent-volume.html
+++ b/concepts/persistent-volume.html
@@ -3923,7 +3923,7 @@ Finalizers: [kubernetes.io/pvc-protect
diff --git a/concepts/pod-disruption-budget.html b/concepts/pod-disruption-budget.html
index edb8beac5..55650eaf0 100644
--- a/concepts/pod-disruption-budget.html
+++ b/concepts/pod-disruption-budget.html
@@ -3608,7 +3608,7 @@
diff --git a/concepts/pod-hook.html b/concepts/pod-hook.html
index 654682f65..6f8ae2018 100644
--- a/concepts/pod-hook.html
+++ b/concepts/pod-hook.html
@@ -3416,7 +3416,7 @@
diff --git a/concepts/pod-lifecycle.html b/concepts/pod-lifecycle.html
index 42b0720d0..5ac4414db 100644
--- a/concepts/pod-lifecycle.html
+++ b/concepts/pod-lifecycle.html
@@ -3351,6 +3351,8 @@
失败(Failed):Pod 中的所有容器都已终止了,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退出或者被系统终止。
未知(Unkonwn):因为某些原因无法取得 Pod 的状态,通常是因为与 Pod 所在主机通信失败。
+下图是Pod的生命周期示意图,从图中可以看到Pod状态的变化。
+
Pod 状态
Pod 有一个 PodStatus 对象,其中包含一个 PodCondition 数组。 PodCondition 数组的每个元素都有一个 type
字段和一个 status
字段。type
字段是字符串,可能的值有 PodScheduled、Ready、Initialized 和 Unschedulable。status
字段是一个字符串,可能的值有 True、False 和 Unknown。
容器探针
@@ -3495,7 +3497,7 @@
原文地址:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/
翻译:rootsongjc
@@ -3539,7 +3541,7 @@
diff --git a/concepts/pod-overview.html b/concepts/pod-overview.html
index 04cd5ac07..96787eb5b 100644
--- a/concepts/pod-overview.html
+++ b/concepts/pod-overview.html
@@ -3429,7 +3429,7 @@
diff --git a/concepts/pod-preset.html b/concepts/pod-preset.html
index 9ce1e7336..0efde2968 100644
--- a/concepts/pod-preset.html
+++ b/concepts/pod-preset.html
@@ -3422,7 +3422,7 @@
diff --git a/concepts/pod-security-policy.html b/concepts/pod-security-policy.html
index a42b699bf..326e1371d 100644
--- a/concepts/pod-security-policy.html
+++ b/concepts/pod-security-policy.html
@@ -3590,7 +3590,7 @@ podsecuritypolicy "permissive" delet
diff --git a/concepts/pod-state-and-lifecycle.html b/concepts/pod-state-and-lifecycle.html
index af666cfbd..841271128 100644
--- a/concepts/pod-state-and-lifecycle.html
+++ b/concepts/pod-state-and-lifecycle.html
@@ -3392,7 +3392,7 @@
diff --git a/concepts/pod.html b/concepts/pod.html
index e3f3b42cf..52a7257b5 100644
--- a/concepts/pod.html
+++ b/concepts/pod.html
@@ -3470,7 +3470,7 @@
diff --git a/concepts/rbac.html b/concepts/rbac.html
index f77f0df54..dcbde0f15 100644
--- a/concepts/rbac.html
+++ b/concepts/rbac.html
@@ -3912,7 +3912,7 @@
diff --git a/concepts/replicaset.html b/concepts/replicaset.html
index de9f08ca1..79cc4e2ce 100644
--- a/concepts/replicaset.html
+++ b/concepts/replicaset.html
@@ -3434,7 +3434,7 @@
diff --git a/concepts/scheduling.html b/concepts/scheduling.html
index 2c882ab26..ae6ae4b0a 100644
--- a/concepts/scheduling.html
+++ b/concepts/scheduling.html
@@ -3392,7 +3392,7 @@
diff --git a/concepts/secret.html b/concepts/secret.html
index 5e8e5365a..daa6adc00 100644
--- a/concepts/secret.html
+++ b/concepts/secret.html
@@ -3512,7 +3512,7 @@ token
diff --git a/concepts/service-discovery.html b/concepts/service-discovery.html
index 9ddbe4088..e290bad87 100644
--- a/concepts/service-discovery.html
+++ b/concepts/service-discovery.html
@@ -3385,7 +3385,7 @@
diff --git a/concepts/service.html b/concepts/service.html
index 38aae29e9..9bbf67361 100644
--- a/concepts/service.html
+++ b/concepts/service.html
@@ -3717,7 +3717,7 @@ iptables 代理不会隐藏 Kubernetes 集
diff --git a/concepts/serviceaccount.html b/concepts/serviceaccount.html
index 1e2df966d..187d5a963 100644
--- a/concepts/serviceaccount.html
+++ b/concepts/serviceaccount.html
@@ -3533,7 +3533,7 @@ serviceaccounts/default
diff --git a/concepts/statefulset.html b/concepts/statefulset.html
index f3b1b4bd1..aef11327b 100644
--- a/concepts/statefulset.html
+++ b/concepts/statefulset.html
@@ -3852,7 +3852,7 @@ zk-0 10.254.98.14
var gitbook = gitbook || [];
gitbook.push(function() {
- gitbook.page.hasChanged({"page":{"title":"StatefulSet","level":"3.6.2","depth":2,"next":{"title":"DaemonSet","level":"3.6.3","depth":2,"path":"concepts/daemonset.md","ref":"concepts/daemonset.md","articles":[]},"previous":{"title":"Deployment","level":"3.6.1","depth":2,"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.2.1.1","level":"3.2.1","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.2.1.1"},{"backlink":"concepts/calico.html#fig3.2.2.1","level":"3.2.2","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.2.2.1"},{"backlink":"concepts/pod-overview.html#fig3.4.1.1","level":"3.4.1","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.4.1.1"},{"backlink":"concepts/pod.html#fig3.4.2.1","level":"3.4.2","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.4.2.1"},{"backlink":"concepts/pod.html#fig3.4.2.2","level":"3.4.2","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.4.2.2"},{"backlink":"concepts/label.html#fig3.5.3.1","level":"3.5.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.5.3.1"},{"backlink":"concepts/deployment.html#fig3.6.1.1","level":"3.6.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.6.1.1"},{"backlink":"concepts/horizontal-pod-autoscaling.html#fig3.6.7.1","level":"3.6.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.6.7.1"},{"backlink":"concepts/service.html#fig3.7.1.1","level":"3.7.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.7.1.1"},{"backlink":"concepts/service.html#fig3.7.1.2","level":"3.7.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.7.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/microservices-for-java-developers.html#fig6.2.2.1","level":"6.2.2","list_caption":"Figure: Spring技术栈","alt":"Spring技术栈","nro":137,"url":"../images/spring-stack.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Spring技术栈","attributes":{},"skip":false,"key":"6.2.2.1"},{"backlink":"usecases/service-mesh.html#fig6.3.1","level":"6.3","list_caption":"Figure: 下一代异构微服务架构","alt":"下一代异构微服务架构","nro":138,"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":139,"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":140,"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":141,"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":142,"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":143,"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":144,"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":145,"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":146,"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":147,"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":148,"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":149,"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":150,"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":151,"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":152,"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":153,"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":154,"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":155,"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":156,"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":157,"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":158,"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":159,"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":160,"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":161,"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":162,"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":163,"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":164,"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":165,"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":166,"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":167,"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":168,"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":169,"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":170,"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":171,"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":172,"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":173,"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":174,"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":175,"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":176,"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":177,"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":178,"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-14T06:49:20.893Z"},"basePath":"..","book":{"language":""}});
+ gitbook.page.hasChanged({"page":{"title":"StatefulSet","level":"3.6.2","depth":2,"next":{"title":"DaemonSet","level":"3.6.3","depth":2,"path":"concepts/daemonset.md","ref":"concepts/daemonset.md","articles":[]},"previous":{"title":"Deployment","level":"3.6.1","depth":2,"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.2.1.1","level":"3.2.1","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.2.1.1"},{"backlink":"concepts/calico.html#fig3.2.2.1","level":"3.2.2","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.2.2.1"},{"backlink":"concepts/pod-overview.html#fig3.4.1.1","level":"3.4.1","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.4.1.1"},{"backlink":"concepts/pod.html#fig3.4.2.1","level":"3.4.2","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.4.2.1"},{"backlink":"concepts/pod.html#fig3.4.2.2","level":"3.4.2","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.4.2.2"},{"backlink":"concepts/pod-lifecycle.html#fig3.4.5.1","level":"3.4.5","list_caption":"Figure: Pod的生命周期示意图(图片来自网络)","alt":"Pod的生命周期示意图(图片来自网络)","nro":58,"url":"../images/kubernetes-pod-life-cycle.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Pod的生命周期示意图(图片来自网络)","attributes":{},"skip":false,"key":"3.4.5.1"},{"backlink":"concepts/label.html#fig3.5.3.1","level":"3.5.3","list_caption":"Figure: label示意图","alt":"label示意图","nro":59,"url":"../images/labels.png","index":1,"caption_template":"图片 - _CAPTION_","label":"label示意图","attributes":{},"skip":false,"key":"3.5.3.1"},{"backlink":"concepts/deployment.html#fig3.6.1.1","level":"3.6.1","list_caption":"Figure: kubernetes deployment cheatsheet","alt":"kubernetes deployment cheatsheet","nro":60,"url":"../images/deployment-cheatsheet.png","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes deployment cheatsheet","attributes":{},"skip":false,"key":"3.6.1.1"},{"backlink":"concepts/horizontal-pod-autoscaling.html#fig3.6.7.1","level":"3.6.7","list_caption":"Figure: horizontal-pod-autoscaler","alt":"horizontal-pod-autoscaler","nro":61,"url":"../images/horizontal-pod-autoscaler.png","index":1,"caption_template":"图片 - _CAPTION_","label":"horizontal-pod-autoscaler","attributes":{},"skip":false,"key":"3.6.7.1"},{"backlink":"concepts/service.html#fig3.7.1.1","level":"3.7.1","list_caption":"Figure: userspace代理模式下Service概览图","alt":"userspace代理模式下Service概览图","nro":62,"url":"../images/services-userspace-overview.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"userspace代理模式下Service概览图","attributes":{},"skip":false,"key":"3.7.1.1"},{"backlink":"concepts/service.html#fig3.7.1.2","level":"3.7.1","list_caption":"Figure: iptables代理模式下Service概览图","alt":"iptables代理模式下Service概览图","nro":63,"url":"../images/services-iptables-overview.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"iptables代理模式下Service概览图","attributes":{},"skip":false,"key":"3.7.1.2"},{"backlink":"guide/using-kubectl.html#fig4.3.2.1","level":"4.3.2","list_caption":"Figure: kubectl cheatsheet","alt":"kubectl cheatsheet","nro":64,"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":65,"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":66,"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":67,"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":68,"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":69,"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":70,"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":71,"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":72,"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":73,"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":74,"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":75,"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":76,"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":77,"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":78,"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":79,"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":80,"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":81,"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":82,"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":83,"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":84,"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":85,"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":86,"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":87,"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":88,"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":89,"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":90,"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":91,"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":92,"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":93,"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":94,"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":95,"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":96,"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":97,"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":98,"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":99,"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":100,"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":101,"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":102,"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":103,"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":104,"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":105,"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":106,"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":107,"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":108,"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":109,"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":110,"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":111,"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":112,"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":113,"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":114,"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":115,"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":116,"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":117,"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":118,"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":119,"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":120,"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":121,"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":122,"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":123,"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":124,"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":125,"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":126,"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":127,"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":128,"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":129,"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":130,"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":131,"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":132,"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":133,"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":134,"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":135,"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":136,"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":137,"url":"../images/service-discovery-in-microservices.png","index":1,"caption_template":"图片 - _CAPTION_","label":"微服务中的服务发现","attributes":{},"skip":false,"key":"6.2.1.1"},{"backlink":"usecases/microservices-for-java-developers.html#fig6.2.2.1","level":"6.2.2","list_caption":"Figure: Spring技术栈","alt":"Spring技术栈","nro":138,"url":"../images/spring-stack.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Spring技术栈","attributes":{},"skip":false,"key":"6.2.2.1"},{"backlink":"usecases/microservices-for-java-developers.html#fig6.2.2.2","level":"6.2.2","list_caption":"Figure: Spring Boot的知识点","alt":"Spring Boot的知识点","nro":139,"url":"../images/spring-boot-note-spots.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Spring Boot的知识点","attributes":{},"skip":false,"key":"6.2.2.2"},{"backlink":"usecases/service-mesh.html#fig6.3.1","level":"6.3","list_caption":"Figure: 下一代异构微服务架构","alt":"下一代异构微服务架构","nro":140,"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":141,"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":142,"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":143,"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":144,"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":145,"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":146,"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":147,"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":148,"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":149,"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":150,"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":151,"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":152,"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":153,"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":154,"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":155,"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":156,"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":157,"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":158,"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":159,"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":160,"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":161,"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":162,"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":163,"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":164,"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":165,"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":166,"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":167,"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":168,"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":169,"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":170,"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":171,"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":172,"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":173,"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":174,"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":175,"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":176,"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":177,"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":178,"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":179,"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":180,"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-15T02:13:21.525Z"},"basePath":"..","book":{"language":""}});
});
diff --git a/concepts/storage.html b/concepts/storage.html
index 32d7e10ef..65725a817 100644
--- a/concepts/storage.html
+++ b/concepts/storage.html
@@ -3385,7 +3385,7 @@
diff --git a/concepts/storageclass.html b/concepts/storageclass.html
index 202d42507..5663abbfe 100644
--- a/concepts/storageclass.html
+++ b/concepts/storageclass.html
@@ -3525,7 +3525,7 @@
diff --git a/concepts/taint-and-toleration.html b/concepts/taint-and-toleration.html
index cd4a3cb1c..c422d56c7 100644
--- a/concepts/taint-and-toleration.html
+++ b/concepts/taint-and-toleration.html
@@ -3427,7 +3427,7 @@ kubectl taint nodes node1 key2:NoSchedule-
diff --git a/concepts/traefik-ingress-controller.html b/concepts/traefik-ingress-controller.html
index ae71f0eb2..0b074141d 100644
--- a/concepts/traefik-ingress-controller.html
+++ b/concepts/traefik-ingress-controller.html
@@ -3438,7 +3438,7 @@
diff --git a/concepts/volume.html b/concepts/volume.html
index 4004ee94c..0e4f595ee 100644
--- a/concepts/volume.html
+++ b/concepts/volume.html
@@ -3965,7 +3965,7 @@
diff --git a/develop/advance-developer.html b/develop/advance-developer.html
index 523667e83..574a09548 100644
--- a/develop/advance-developer.html
+++ b/develop/advance-developer.html
@@ -3463,7 +3463,7 @@
diff --git a/develop/client-go-sample.html b/develop/client-go-sample.html
index bc56a48e5..4738058ca 100644
--- a/develop/client-go-sample.html
+++ b/develop/client-go-sample.html
@@ -3624,7 +3624,7 @@ Events:
diff --git a/develop/contribute.html b/develop/contribute.html
index 6974598af..66a8f4fd2 100644
--- a/develop/contribute.html
+++ b/develop/contribute.html
@@ -3392,7 +3392,7 @@
diff --git a/develop/developing-environment.html b/develop/developing-environment.html
index b23e44b17..31edfaf77 100644
--- a/develop/developing-environment.html
+++ b/develop/developing-environment.html
@@ -3405,7 +3405,7 @@
diff --git a/develop/index.html b/develop/index.html
index 7b70fe9e8..496f8da81 100644
--- a/develop/index.html
+++ b/develop/index.html
@@ -3385,7 +3385,7 @@
diff --git a/develop/minikube.html b/develop/minikube.html
index 9654e48e8..d628e5536 100644
--- a/develop/minikube.html
+++ b/develop/minikube.html
@@ -3429,7 +3429,7 @@ Kubectl is now configured to use the cluster.
diff --git a/develop/operator.html b/develop/operator.html
index 341af2326..2bc44fc87 100644
--- a/develop/operator.html
+++ b/develop/operator.html
@@ -3419,7 +3419,7 @@
diff --git a/develop/sigs-and-working-group.html b/develop/sigs-and-working-group.html
index 12832b53b..7ca578388 100644
--- a/develop/sigs-and-working-group.html
+++ b/develop/sigs-and-working-group.html
@@ -3429,7 +3429,7 @@
diff --git a/develop/testing.html b/develop/testing.html
index 8978b18ef..47476276c 100644
--- a/develop/testing.html
+++ b/develop/testing.html
@@ -3504,7 +3504,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 75f6a4bc5..c49b09dde 100644
--- a/develop/using-vagrant-and-virtualbox-for-development.html
+++ b/develop/using-vagrant-and-virtualbox-for-development.html
@@ -3496,7 +3496,7 @@ kubectl get nodes
diff --git a/guide/access-cluster.html b/guide/access-cluster.html
index fae87856d..88845f6c6 100644
--- a/guide/access-cluster.html
+++ b/guide/access-cluster.html
@@ -3595,7 +3595,7 @@ $ curl $APISERVER/api --header
diff --git a/guide/access-kubernetes-cluster.html b/guide/access-kubernetes-cluster.html
index 64b55d548..380270195 100644
--- a/guide/access-kubernetes-cluster.html
+++ b/guide/access-kubernetes-cluster.html
@@ -3391,7 +3391,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 f498a1dab..ae30acace 100644
--- a/guide/accessing-kubernetes-pods-from-outside-of-the-cluster.html
+++ b/guide/accessing-kubernetes-pods-from-outside-of-the-cluster.html
@@ -3507,7 +3507,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 10f2f9718..1e7b4bcf4 100644
--- a/guide/application-development-deployment-flow.html
+++ b/guide/application-development-deployment-flow.html
@@ -3386,7 +3386,7 @@
diff --git a/guide/auth-with-kubeconfig-or-token.html b/guide/auth-with-kubeconfig-or-token.html
index f7879be8a..193ed7b36 100644
--- a/guide/auth-with-kubeconfig-or-token.html
+++ b/guide/auth-with-kubeconfig-or-token.html
@@ -3471,7 +3471,7 @@ ca.crt: 1310 bytes
diff --git a/guide/authenticate-across-clusters-kubeconfig.html b/guide/authenticate-across-clusters-kubeconfig.html
index 10ef580da..8c2b291fc 100644
--- a/guide/authenticate-across-clusters-kubeconfig.html
+++ b/guide/authenticate-across-clusters-kubeconfig.html
@@ -3610,7 +3610,7 @@ $ kubectl config use-context federal-context
diff --git a/guide/authentication.html b/guide/authentication.html
index b0bb4d501..5dee98255 100644
--- a/guide/authentication.html
+++ b/guide/authentication.html
@@ -3886,7 +3886,7 @@ node "mynode" draine
diff --git a/guide/cabin-mobile-dashboard-for-kubernetes.html b/guide/cabin-mobile-dashboard-for-kubernetes.html
index f18039d60..339c6e9ba 100644
--- a/guide/cabin-mobile-dashboard-for-kubernetes.html
+++ b/guide/cabin-mobile-dashboard-for-kubernetes.html
@@ -3397,7 +3397,7 @@
diff --git a/guide/cluster-security-management.html b/guide/cluster-security-management.html
index 8a659cab9..480ef4283 100644
--- a/guide/cluster-security-management.html
+++ b/guide/cluster-security-management.html
@@ -3385,7 +3385,7 @@
diff --git a/guide/command-usage.html b/guide/command-usage.html
index 59d73413e..94057f48d 100644
--- a/guide/command-usage.html
+++ b/guide/command-usage.html
@@ -3385,7 +3385,7 @@
diff --git a/guide/configure-liveness-readiness-probes.html b/guide/configure-liveness-readiness-probes.html
index 36f3896ea..2e6b201db 100644
--- a/guide/configure-liveness-readiness-probes.html
+++ b/guide/configure-liveness-readiness-probes.html
@@ -3574,7 +3574,7 @@ the Container has been restarted:
diff --git a/guide/configure-pod-service-account.html b/guide/configure-pod-service-account.html
index 519cb680d..34b22eff0 100644
--- a/guide/configure-pod-service-account.html
+++ b/guide/configure-pod-service-account.html
@@ -3532,7 +3532,7 @@ serviceaccounts/default
diff --git a/guide/connecting-to-applications-port-forward.html b/guide/connecting-to-applications-port-forward.html
index 0e9a90fd0..7d1e8055d 100644
--- a/guide/connecting-to-applications-port-forward.html
+++ b/guide/connecting-to-applications-port-forward.html
@@ -3424,7 +3424,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 102958187..43bf21eff 100644
--- a/guide/deploy-applications-in-kubernetes.html
+++ b/guide/deploy-applications-in-kubernetes.html
@@ -3424,7 +3424,7 @@
diff --git a/guide/docker-cli-to-kubectl.html b/guide/docker-cli-to-kubectl.html
index cd481dd4b..56d28dbc4 100644
--- a/guide/docker-cli-to-kubectl.html
+++ b/guide/docker-cli-to-kubectl.html
@@ -3561,7 +3561,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 cea689109..8cb715622 100644
--- a/guide/index.html
+++ b/guide/index.html
@@ -3389,7 +3389,7 @@
diff --git a/guide/ip-masq-agent.html b/guide/ip-masq-agent.html
index 337665e7a..1a3561f69 100644
--- a/guide/ip-masq-agent.html
+++ b/guide/ip-masq-agent.html
@@ -3449,7 +3449,7 @@ MASQUERADE all -- anywhere anywhere /* ip-masq-agent:
diff --git a/guide/kubectl-cheatsheet.html b/guide/kubectl-cheatsheet.html
index dc0505770..e150e28d4 100644
--- a/guide/kubectl-cheatsheet.html
+++ b/guide/kubectl-cheatsheet.html
@@ -3791,7 +3791,7 @@ $ kubectl taint nodes foo dedicated=special-
diff --git a/guide/kubectl-user-authentication-authorization.html b/guide/kubectl-user-authentication-authorization.html
index fc1d6aa95..80e02ad00 100644
--- a/guide/kubectl-user-authentication-authorization.html
+++ b/guide/kubectl-user-authentication-authorization.html
@@ -3483,7 +3483,7 @@ No resources found.
diff --git a/guide/kubelet-authentication-authorization.html b/guide/kubelet-authentication-authorization.html
index 773536378..23df96913 100644
--- a/guide/kubelet-authentication-authorization.html
+++ b/guide/kubelet-authentication-authorization.html
@@ -3497,7 +3497,7 @@
diff --git a/guide/kubernator-kubernetes-ui.html b/guide/kubernator-kubernetes-ui.html
index 4b37eb054..5b6c7943b 100644
--- a/guide/kubernator-kubernetes-ui.html
+++ b/guide/kubernator-kubernetes-ui.html
@@ -3398,7 +3398,7 @@ kubectl proxy
diff --git a/guide/kubernetes-desktop-client.html b/guide/kubernetes-desktop-client.html
index 15c5a3b3e..17d282538 100644
--- a/guide/kubernetes-desktop-client.html
+++ b/guide/kubernetes-desktop-client.html
@@ -3394,7 +3394,7 @@
diff --git a/guide/managing-tls-in-a-cluster.html b/guide/managing-tls-in-a-cluster.html
index ede328130..fa8628d02 100644
--- a/guide/managing-tls-in-a-cluster.html
+++ b/guide/managing-tls-in-a-cluster.html
@@ -3475,7 +3475,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 3ef99d9ad..c1960bbb7 100644
--- a/guide/migrating-hadoop-yarn-to-kubernetes.html
+++ b/guide/migrating-hadoop-yarn-to-kubernetes.html
@@ -3555,7 +3555,7 @@ kubectl create configmap spark-config \
diff --git a/guide/resource-configuration.html b/guide/resource-configuration.html
index 85cda91ba..ab1c90123 100644
--- a/guide/resource-configuration.html
+++ b/guide/resource-configuration.html
@@ -3385,7 +3385,7 @@
diff --git a/guide/resource-quota-management.html b/guide/resource-quota-management.html
index f76e2ace3..03e1dab57 100644
--- a/guide/resource-quota-management.html
+++ b/guide/resource-quota-management.html
@@ -3457,7 +3457,7 @@
diff --git a/guide/secret-configuration.html b/guide/secret-configuration.html
index c90d8382e..d6b3049b6 100644
--- a/guide/secret-configuration.html
+++ b/guide/secret-configuration.html
@@ -3806,7 +3806,7 @@ secret "test-db-secret" created
diff --git a/guide/service-access-application-cluster.html b/guide/service-access-application-cluster.html
index b56685554..f15750459 100644
--- a/guide/service-access-application-cluster.html
+++ b/guide/service-access-application-cluster.html
@@ -3455,7 +3455,7 @@ kubectl describe replicasets
diff --git a/guide/tls-bootstrapping.html b/guide/tls-bootstrapping.html
index 50a20ac65..aee1e6e4a 100644
--- a/guide/tls-bootstrapping.html
+++ b/guide/tls-bootstrapping.html
@@ -3502,7 +3502,7 @@
diff --git a/guide/using-etcdctl-to-access-kubernetes-data.html b/guide/using-etcdctl-to-access-kubernetes-data.html
index b721c47c2..e63628ed1 100644
--- a/guide/using-etcdctl-to-access-kubernetes-data.html
+++ b/guide/using-etcdctl-to-access-kubernetes-data.html
@@ -3554,7 +3554,7 @@ thirdpartyresources
diff --git a/guide/using-kubectl.html b/guide/using-kubectl.html
index 24eff35d0..4b4b7db41 100644
--- a/guide/using-kubectl.html
+++ b/guide/using-kubectl.html
@@ -3438,7 +3438,7 @@
diff --git a/guide/using-statefulset.html b/guide/using-statefulset.html
index 75e67cd1e..f9e448d81 100644
--- a/guide/using-statefulset.html
+++ b/guide/using-statefulset.html
@@ -3679,7 +3679,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/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.2.1.1","level":"3.2.1","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.2.1.1"},{"backlink":"concepts/calico.html#fig3.2.2.1","level":"3.2.2","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.2.2.1"},{"backlink":"concepts/pod-overview.html#fig3.4.1.1","level":"3.4.1","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.4.1.1"},{"backlink":"concepts/pod.html#fig3.4.2.1","level":"3.4.2","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.4.2.1"},{"backlink":"concepts/pod.html#fig3.4.2.2","level":"3.4.2","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.4.2.2"},{"backlink":"concepts/label.html#fig3.5.3.1","level":"3.5.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.5.3.1"},{"backlink":"concepts/deployment.html#fig3.6.1.1","level":"3.6.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.6.1.1"},{"backlink":"concepts/horizontal-pod-autoscaling.html#fig3.6.7.1","level":"3.6.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.6.7.1"},{"backlink":"concepts/service.html#fig3.7.1.1","level":"3.7.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.7.1.1"},{"backlink":"concepts/service.html#fig3.7.1.2","level":"3.7.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.7.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/microservices-for-java-developers.html#fig6.2.2.1","level":"6.2.2","list_caption":"Figure: Spring技术栈","alt":"Spring技术栈","nro":137,"url":"../images/spring-stack.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Spring技术栈","attributes":{},"skip":false,"key":"6.2.2.1"},{"backlink":"usecases/service-mesh.html#fig6.3.1","level":"6.3","list_caption":"Figure: 下一代异构微服务架构","alt":"下一代异构微服务架构","nro":138,"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":139,"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":140,"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":141,"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":142,"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":143,"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":144,"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":145,"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":146,"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":147,"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":148,"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":149,"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":150,"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":151,"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":152,"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":153,"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":154,"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":155,"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":156,"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":157,"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":158,"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":159,"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":160,"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":161,"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":162,"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":163,"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":164,"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":165,"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":166,"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":167,"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":168,"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":169,"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":170,"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":171,"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":172,"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":173,"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":174,"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":175,"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":176,"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":177,"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":178,"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-14T06:49:20.893Z"},"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.2.1.1","level":"3.2.1","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.2.1.1"},{"backlink":"concepts/calico.html#fig3.2.2.1","level":"3.2.2","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.2.2.1"},{"backlink":"concepts/pod-overview.html#fig3.4.1.1","level":"3.4.1","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.4.1.1"},{"backlink":"concepts/pod.html#fig3.4.2.1","level":"3.4.2","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.4.2.1"},{"backlink":"concepts/pod.html#fig3.4.2.2","level":"3.4.2","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.4.2.2"},{"backlink":"concepts/pod-lifecycle.html#fig3.4.5.1","level":"3.4.5","list_caption":"Figure: Pod的生命周期示意图(图片来自网络)","alt":"Pod的生命周期示意图(图片来自网络)","nro":58,"url":"../images/kubernetes-pod-life-cycle.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Pod的生命周期示意图(图片来自网络)","attributes":{},"skip":false,"key":"3.4.5.1"},{"backlink":"concepts/label.html#fig3.5.3.1","level":"3.5.3","list_caption":"Figure: label示意图","alt":"label示意图","nro":59,"url":"../images/labels.png","index":1,"caption_template":"图片 - _CAPTION_","label":"label示意图","attributes":{},"skip":false,"key":"3.5.3.1"},{"backlink":"concepts/deployment.html#fig3.6.1.1","level":"3.6.1","list_caption":"Figure: kubernetes deployment cheatsheet","alt":"kubernetes deployment cheatsheet","nro":60,"url":"../images/deployment-cheatsheet.png","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes deployment cheatsheet","attributes":{},"skip":false,"key":"3.6.1.1"},{"backlink":"concepts/horizontal-pod-autoscaling.html#fig3.6.7.1","level":"3.6.7","list_caption":"Figure: horizontal-pod-autoscaler","alt":"horizontal-pod-autoscaler","nro":61,"url":"../images/horizontal-pod-autoscaler.png","index":1,"caption_template":"图片 - _CAPTION_","label":"horizontal-pod-autoscaler","attributes":{},"skip":false,"key":"3.6.7.1"},{"backlink":"concepts/service.html#fig3.7.1.1","level":"3.7.1","list_caption":"Figure: userspace代理模式下Service概览图","alt":"userspace代理模式下Service概览图","nro":62,"url":"../images/services-userspace-overview.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"userspace代理模式下Service概览图","attributes":{},"skip":false,"key":"3.7.1.1"},{"backlink":"concepts/service.html#fig3.7.1.2","level":"3.7.1","list_caption":"Figure: iptables代理模式下Service概览图","alt":"iptables代理模式下Service概览图","nro":63,"url":"../images/services-iptables-overview.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"iptables代理模式下Service概览图","attributes":{},"skip":false,"key":"3.7.1.2"},{"backlink":"guide/using-kubectl.html#fig4.3.2.1","level":"4.3.2","list_caption":"Figure: kubectl cheatsheet","alt":"kubectl cheatsheet","nro":64,"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":65,"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":66,"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":67,"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":68,"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":69,"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":70,"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":71,"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":72,"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":73,"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":74,"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":75,"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":76,"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":77,"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":78,"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":79,"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":80,"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":81,"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":82,"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":83,"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":84,"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":85,"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":86,"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":87,"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":88,"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":89,"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":90,"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":91,"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":92,"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":93,"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":94,"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":95,"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":96,"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":97,"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":98,"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":99,"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":100,"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":101,"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":102,"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":103,"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":104,"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":105,"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":106,"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":107,"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":108,"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":109,"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":110,"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":111,"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":112,"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":113,"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":114,"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":115,"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":116,"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":117,"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":118,"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":119,"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":120,"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":121,"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":122,"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":123,"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":124,"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":125,"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":126,"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":127,"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":128,"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":129,"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":130,"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":131,"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":132,"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":133,"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":134,"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":135,"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":136,"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":137,"url":"../images/service-discovery-in-microservices.png","index":1,"caption_template":"图片 - _CAPTION_","label":"微服务中的服务发现","attributes":{},"skip":false,"key":"6.2.1.1"},{"backlink":"usecases/microservices-for-java-developers.html#fig6.2.2.1","level":"6.2.2","list_caption":"Figure: Spring技术栈","alt":"Spring技术栈","nro":138,"url":"../images/spring-stack.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Spring技术栈","attributes":{},"skip":false,"key":"6.2.2.1"},{"backlink":"usecases/microservices-for-java-developers.html#fig6.2.2.2","level":"6.2.2","list_caption":"Figure: Spring Boot的知识点","alt":"Spring Boot的知识点","nro":139,"url":"../images/spring-boot-note-spots.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Spring Boot的知识点","attributes":{},"skip":false,"key":"6.2.2.2"},{"backlink":"usecases/service-mesh.html#fig6.3.1","level":"6.3","list_caption":"Figure: 下一代异构微服务架构","alt":"下一代异构微服务架构","nro":140,"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":141,"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":142,"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":143,"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":144,"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":145,"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":146,"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":147,"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":148,"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":149,"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":150,"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":151,"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":152,"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":153,"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":154,"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":155,"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":156,"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":157,"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":158,"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":159,"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":160,"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":161,"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":162,"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":163,"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":164,"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":165,"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":166,"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":167,"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":168,"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":169,"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":170,"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":171,"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":172,"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":173,"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":174,"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":175,"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":176,"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":177,"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":178,"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":179,"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":180,"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-15T02:13:21.525Z"},"basePath":"..","book":{"language":""}});
});
diff --git a/images/kubernetes-pod-life-cycle.jpg b/images/kubernetes-pod-life-cycle.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..461282c8a3016a5ce9b29d88f022e7c82ea62944
GIT binary patch
literal 75865
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