From e8c7d06a2b82b82c56b0de4ab692c2c8442ad1da Mon Sep 17 00:00:00 2001
From: rootsongjc
Date: Sun, 22 Apr 2018 21:36:38 +0800
Subject: [PATCH] add service catalog
---
appendix/debug-kubernetes-services.html | 17 +-
appendix/docker-best-practice.html | 17 +-
appendix/index.html | 17 +-
appendix/issues.html | 17 +-
appendix/kubernetes-1.10-changelog.html | 17 +-
appendix/kubernetes-1.7-changelog.html | 17 +-
appendix/kubernetes-1.8-changelog.html | 17 +-
appendix/kubernetes-1.9-changelog.html | 17 +-
...-summary-in-2017-and-outlook-for-2018.html | 17 +-
appendix/kubernetes-changelog.html | 17 +-
appendix/material-share.html | 17 +-
appendix/summary-and-outlook.html | 17 +-
appendix/tricks.html | 17 +-
cloud-native/cncf.html | 17 +-
.../from-kubernetes-to-cloud-native.html | 17 +-
...ernetes-and-cloud-native-app-overview.html | 17 +-
cloud-native/play-with-kubernetes.html | 17 +-
concepts/aggregated-api-server.html | 17 +-
concepts/annotation.html | 17 +-
concepts/apiservice.html | 21 +-
concepts/authentication-and-permission.html | 17 +-
concepts/calico.html | 17 +-
concepts/cluster.html | 17 +-
concepts/cni.html | 17 +-
concepts/concepts.html | 17 +-
concepts/configmap-hot-update.html | 17 +-
concepts/configmap.html | 17 +-
concepts/controllers.html | 17 +-
concepts/cri.html | 17 +-
concepts/cronjob.html | 17 +-
concepts/csi.html | 17 +-
concepts/custom-metrics-hpa.html | 17 +-
concepts/custom-resource.html | 17 +-
concepts/daemonset.html | 17 +-
concepts/deployment.html | 17 +-
concepts/etcd.html | 17 +-
concepts/extension.html | 17 +-
concepts/garbage-collection.html | 17 +-
concepts/horizontal-pod-autoscaling.html | 17 +-
concepts/index.html | 17 +-
concepts/ingress.html | 17 +-
concepts/init-containers.html | 17 +-
concepts/job.html | 17 +-
concepts/label.html | 17 +-
concepts/local-persistent-storage.html | 17 +-
concepts/namespace.html | 17 +-
concepts/network-policy.html | 17 +-
concepts/networking.html | 17 +-
concepts/node.html | 17 +-
concepts/objects.html | 17 +-
concepts/open-interfaces.html | 17 +-
concepts/pause-container.html | 17 +-
concepts/persistent-volume.html | 17 +-
concepts/pod-disruption-budget.html | 17 +-
concepts/pod-hook.html | 17 +-
concepts/pod-lifecycle.html | 17 +-
concepts/pod-overview.html | 17 +-
concepts/pod-preset.html | 17 +-
concepts/pod-security-policy.html | 17 +-
concepts/pod-state-and-lifecycle.html | 17 +-
concepts/pod.html | 17 +-
concepts/rbac.html | 17 +-
concepts/replicaset.html | 17 +-
concepts/scheduling.html | 21 +-
concepts/secret.html | 17 +-
concepts/service-catalog.html | 3913 +++++++++++++++++
concepts/service-discovery.html | 17 +-
concepts/service.html | 17 +-
concepts/serviceaccount.html | 17 +-
concepts/statefulset.html | 17 +-
concepts/storage.html | 17 +-
concepts/storageclass.html | 17 +-
concepts/taint-and-toleration.html | 17 +-
concepts/traefik-ingress-controller.html | 17 +-
concepts/volume.html | 17 +-
develop/advance-developer.html | 17 +-
develop/client-go-sample.html | 17 +-
develop/contribute.html | 17 +-
develop/developing-environment.html | 17 +-
develop/index.html | 17 +-
develop/minikube.html | 17 +-
develop/operator.html | 17 +-
develop/sigs-and-working-group.html | 17 +-
develop/testing.html | 17 +-
...agrant-and-virtualbox-for-development.html | 17 +-
guide/access-cluster.html | 17 +-
guide/access-kubernetes-cluster.html | 17 +-
...etes-pods-from-outside-of-the-cluster.html | 17 +-
...plication-development-deployment-flow.html | 17 +-
guide/auth-with-kubeconfig-or-token.html | 17 +-
...thenticate-across-clusters-kubeconfig.html | 17 +-
guide/authentication.html | 17 +-
...cabin-mobile-dashboard-for-kubernetes.html | 17 +-
guide/cluster-security-management.html | 17 +-
guide/command-usage.html | 17 +-
.../configure-liveness-readiness-probes.html | 17 +-
guide/configure-pod-service-account.html | 17 +-
...nnecting-to-applications-port-forward.html | 17 +-
guide/deploy-applications-in-kubernetes.html | 17 +-
guide/docker-cli-to-kubectl.html | 17 +-
guide/index.html | 17 +-
guide/ip-masq-agent.html | 17 +-
guide/kubectl-cheatsheet.html | 17 +-
...ctl-user-authentication-authorization.html | 17 +-
.../kubelet-authentication-authorization.html | 17 +-
guide/kubernator-kubernetes-ui.html | 17 +-
guide/kubernetes-desktop-client.html | 17 +-
guide/managing-tls-in-a-cluster.html | 17 +-
.../migrating-hadoop-yarn-to-kubernetes.html | 17 +-
guide/resource-configuration.html | 17 +-
guide/resource-quota-management.html | 17 +-
guide/secret-configuration.html | 17 +-
guide/service-access-application-cluster.html | 17 +-
guide/tls-bootstrapping.html | 17 +-
...ing-etcdctl-to-access-kubernetes-data.html | 17 +-
guide/using-kubectl.html | 17 +-
guide/using-statefulset.html | 17 +-
images/service-catalog-architecture.jpg | Bin 0 -> 310828 bytes
images/service-catalog-bind.jpg | Bin 0 -> 94715 bytes
images/service-catalog-list.jpg | Bin 0 -> 121683 bytes
images/service-catalog-map.jpg | Bin 0 -> 228480 bytes
images/service-catalog-provision.jpg | Bin 0 -> 103371 bytes
index.html | 17 +-
practice/app-log-collection.html | 17 +-
practice/ceph-helm-install-guide-zh.html | 17 +-
practice/ceph.html | 17 +-
practice/ci-cd.html | 17 +-
practice/configuration-best-practice.html | 17 +-
practice/configuring-dns.html | 17 +-
practice/coredns.html | 17 +-
practice/create-kubeconfig.html | 17 +-
practice/create-private-charts-repo.html | 17 +-
practice/create-tls-and-secret-key.html | 17 +-
practice/dashboard-addon-installation.html | 17 +-
practice/dashboard-upgrade.html | 17 +-
practice/data-persistence-problem.html | 17 +-
practice/distributed-load-test.html | 17 +-
practice/dns-installation.html | 17 +-
practice/drone-ci-cd.html | 17 +-
practice/edge-node-configuration.html | 17 +-
practice/efk-addon-installation.html | 17 +-
practice/etcd-cluster-installation.html | 17 +-
practice/federation.html | 17 +-
practice/flannel-installation.html | 17 +-
practice/glusterfs.html | 17 +-
practice/heapster-addon-installation.html | 17 +-
practice/heapster.html | 17 +-
practice/helm.html | 17 +-
practice/index.html | 17 +-
practice/install-kubernetes-on-centos.html | 17 +-
...s-on-ubuntu-server-16.04-with-kubeadm.html | 17 +-
practice/install-kubernetes-with-kubeadm.html | 17 +-
practice/jenkins-ci-cd.html | 17 +-
practice/kubectl-installation.html | 17 +-
practice/kubedns-addon-installation.html | 17 +-
.../manage-compute-resources-container.html | 17 +-
practice/manually-upgrade.html | 17 +-
practice/master-ha.html | 17 +-
practice/master-installation.html | 17 +-
practice/monitor.html | 17 +-
practice/monitoring.html | 17 +-
.../network-and-cluster-perfermance-test.html | 17 +-
practice/nfs.html | 17 +-
practice/nginx-ingress-installation.html | 17 +-
practice/node-installation.html | 17 +-
practice/openebs.html | 17 +-
practice/operation.html | 17 +-
practice/prometheus.html | 17 +-
practice/rook.html | 17 +-
.../service-discovery-and-loadbalancing.html | 17 +-
practice/service-rolling-update.html | 17 +-
practice/services-management-tool.html | 17 +-
...ainers-using-glusterfs-with-openshift.html | 17 +-
practice/storage.html | 17 +-
practice/traefik-ingress-installation.html | 17 +-
practice/update-and-upgrade.html | 17 +-
.../using-ceph-for-persistent-storage.html | 17 +-
...sing-glusterfs-for-persistent-storage.html | 17 +-
.../using-heapster-to-get-object-metrics.html | 17 +-
...heketi-gluster-for-persistent-storage.html | 17 +-
.../using-nfs-for-persistent-storage.html | 17 +-
.../using-openebs-for-persistent-storage.html | 17 +-
...metheus-to-monitor-kuberentes-cluster.html | 17 +-
search_plus_index.json | 2 +-
usecases/ai.html | 17 +-
usecases/big-data.html | 17 +-
usecases/conduit-installation.html | 17 +-
usecases/conduit-overview.html | 17 +-
usecases/conduit.html | 17 +-
usecases/configuring-request-routing.html | 17 +-
usecases/edge-computing.html | 17 +-
usecases/envoy-front-proxy.html | 17 +-
usecases/envoy.html | 17 +-
usecases/faas.html | 17 +-
usecases/index.html | 17 +-
usecases/install-and-expand-istio-mesh.html | 17 +-
usecases/integrating-vms.html | 17 +-
usecases/istio-community-tips.html | 17 +-
usecases/istio-installation.html | 17 +-
usecases/istio-tutorial.html | 17 +-
usecases/istio.html | 17 +-
usecases/linkerd-user-guide.html | 17 +-
usecases/linkerd.html | 17 +-
.../microservices-for-java-developers.html | 17 +-
usecases/microservices.html | 17 +-
usecases/openfaas-quick-start.html | 17 +-
...park-with-kubernetes-native-scheduler.html | 17 +-
usecases/serverless.html | 17 +-
.../service-discovery-in-microservices.html | 17 +-
usecases/service-mesh.html | 17 +-
usecases/sidecar-spec-in-istio.html | 17 +-
usecases/spark-standalone-on-kubernetes.html | 17 +-
usecases/spring-boot-quick-start-guide.html | 17 +-
usecases/understanding-serverless.html | 17 +-
214 files changed, 7230 insertions(+), 212 deletions(-)
create mode 100644 concepts/service-catalog.html
create mode 100644 images/service-catalog-architecture.jpg
create mode 100644 images/service-catalog-bind.jpg
create mode 100644 images/service-catalog-list.jpg
create mode 100644 images/service-catalog-map.jpg
create mode 100644 images/service-catalog-provision.jpg
diff --git a/appendix/debug-kubernetes-services.html b/appendix/debug-kubernetes-services.html
index 621d7cb56..d5902eb61 100644
--- a/appendix/debug-kubernetes-services.html
+++ b/appendix/debug-kubernetes-services.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3710,7 +3725,7 @@ kubectl top pod POD_NAME --containers
diff --git a/appendix/docker-best-practice.html b/appendix/docker-best-practice.html
index 1d8b17f40..1df722b19 100644
--- a/appendix/docker-best-practice.html
+++ b/appendix/docker-best-practice.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3758,7 +3773,7 @@
diff --git a/appendix/index.html b/appendix/index.html
index cebc2c959..248b0fcc8 100644
--- a/appendix/index.html
+++ b/appendix/index.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3687,7 +3702,7 @@
diff --git a/appendix/issues.html b/appendix/issues.html
index 43835ceca..e3fad28b2 100644
--- a/appendix/issues.html
+++ b/appendix/issues.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3749,7 +3764,7 @@ kubectl patch deploy --namespace kube-system tiller-deploy -p
diff --git a/appendix/kubernetes-1.10-changelog.html b/appendix/kubernetes-1.10-changelog.html
index e9dd969a5..78ae7b349 100644
--- a/appendix/kubernetes-1.10-changelog.html
+++ b/appendix/kubernetes-1.10-changelog.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3700,7 +3715,7 @@
diff --git a/appendix/kubernetes-1.7-changelog.html b/appendix/kubernetes-1.7-changelog.html
index 3b7e34a2d..73fb5d3d6 100644
--- a/appendix/kubernetes-1.7-changelog.html
+++ b/appendix/kubernetes-1.7-changelog.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3716,7 +3731,7 @@
diff --git a/appendix/kubernetes-1.8-changelog.html b/appendix/kubernetes-1.8-changelog.html
index b06eae301..4e63b37ec 100644
--- a/appendix/kubernetes-1.8-changelog.html
+++ b/appendix/kubernetes-1.8-changelog.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3693,7 +3708,7 @@
diff --git a/appendix/kubernetes-1.9-changelog.html b/appendix/kubernetes-1.9-changelog.html
index 0c66992d0..9b5d06825 100644
--- a/appendix/kubernetes-1.9-changelog.html
+++ b/appendix/kubernetes-1.9-changelog.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3699,7 +3714,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 ffa433d9c..5a284a791 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
@@ -1155,6 +1155,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3747,7 +3762,7 @@
diff --git a/appendix/kubernetes-changelog.html b/appendix/kubernetes-changelog.html
index 067090028..797d3ca4a 100644
--- a/appendix/kubernetes-changelog.html
+++ b/appendix/kubernetes-changelog.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3686,7 +3701,7 @@
diff --git a/appendix/material-share.html b/appendix/material-share.html
index c8567f49d..88216f811 100644
--- a/appendix/material-share.html
+++ b/appendix/material-share.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3749,7 +3764,7 @@
diff --git a/appendix/summary-and-outlook.html b/appendix/summary-and-outlook.html
index 250a76d96..bf6dd30a0 100644
--- a/appendix/summary-and-outlook.html
+++ b/appendix/summary-and-outlook.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3679,7 +3694,7 @@
diff --git a/appendix/tricks.html b/appendix/tricks.html
index 3ca3d03e7..c3d78f08a 100644
--- a/appendix/tricks.html
+++ b/appendix/tricks.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3892,7 +3907,7 @@
diff --git a/cloud-native/cncf.html b/cloud-native/cncf.html
index df1404f0c..3f5ad62f2 100644
--- a/cloud-native/cncf.html
+++ b/cloud-native/cncf.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3729,7 +3744,7 @@
diff --git a/cloud-native/from-kubernetes-to-cloud-native.html b/cloud-native/from-kubernetes-to-cloud-native.html
index cc8ed3621..38dc22788 100644
--- a/cloud-native/from-kubernetes-to-cloud-native.html
+++ b/cloud-native/from-kubernetes-to-cloud-native.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3940,7 +3955,7 @@
diff --git a/cloud-native/kubernetes-and-cloud-native-app-overview.html b/cloud-native/kubernetes-and-cloud-native-app-overview.html
index cf4373bbb..62b8bbdf6 100644
--- a/cloud-native/kubernetes-and-cloud-native-app-overview.html
+++ b/cloud-native/kubernetes-and-cloud-native-app-overview.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -4031,7 +4046,7 @@
diff --git a/cloud-native/play-with-kubernetes.html b/cloud-native/play-with-kubernetes.html
index a8a4e21da..a872215be 100644
--- a/cloud-native/play-with-kubernetes.html
+++ b/cloud-native/play-with-kubernetes.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3717,7 +3732,7 @@
diff --git a/concepts/aggregated-api-server.html b/concepts/aggregated-api-server.html
index 023b88555..d2c9c8b6f 100644
--- a/concepts/aggregated-api-server.html
+++ b/concepts/aggregated-api-server.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3697,7 +3712,7 @@
diff --git a/concepts/annotation.html b/concepts/annotation.html
index 40ace5cad..b848b6b69 100644
--- a/concepts/annotation.html
+++ b/concepts/annotation.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3743,7 +3758,7 @@
diff --git a/concepts/apiservice.html b/concepts/apiservice.html
index 0c957b481..ee2402534 100644
--- a/concepts/apiservice.html
+++ b/concepts/apiservice.html
@@ -79,7 +79,7 @@
-
+
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3778,7 +3793,7 @@ v1
-
+
@@ -3789,7 +3804,7 @@ v1
diff --git a/concepts/authentication-and-permission.html b/concepts/authentication-and-permission.html
index f0ba14935..cd27e58f1 100644
--- a/concepts/authentication-and-permission.html
+++ b/concepts/authentication-and-permission.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3679,7 +3694,7 @@
diff --git a/concepts/calico.html b/concepts/calico.html
index 37b90d324..ba684dad7 100644
--- a/concepts/calico.html
+++ b/concepts/calico.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3714,7 +3729,7 @@ calicoctl get node
diff --git a/concepts/cluster.html b/concepts/cluster.html
index 83903fada..12eb52050 100644
--- a/concepts/cluster.html
+++ b/concepts/cluster.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3679,7 +3694,7 @@
diff --git a/concepts/cni.html b/concepts/cni.html
index c2ecdabd3..e966d7991 100644
--- a/concepts/cni.html
+++ b/concepts/cni.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3783,7 +3798,7 @@
diff --git a/concepts/concepts.html b/concepts/concepts.html
index 075b30e85..d9b3b665c 100644
--- a/concepts/concepts.html
+++ b/concepts/concepts.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3760,7 +3775,7 @@
diff --git a/concepts/configmap-hot-update.html b/concepts/configmap-hot-update.html
index a53985bbb..c6c08b8a3 100644
--- a/concepts/configmap-hot-update.html
+++ b/concepts/configmap-hot-update.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3990,7 +4005,7 @@ DEBUG
diff --git a/concepts/configmap.html b/concepts/configmap.html
index 7f95e74b7..cb03c8cce 100644
--- a/concepts/configmap.html
+++ b/concepts/configmap.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3965,7 +3980,7 @@ log_level=INFO
diff --git a/concepts/controllers.html b/concepts/controllers.html
index f776d106f..0eaf6b574 100644
--- a/concepts/controllers.html
+++ b/concepts/controllers.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3679,7 +3694,7 @@
diff --git a/concepts/cri.html b/concepts/cri.html
index 2d001c4c7..dccd36cf4 100644
--- a/concepts/cri.html
+++ b/concepts/cri.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3804,7 +3819,7 @@ service ImageService {
diff --git a/concepts/cronjob.html b/concepts/cronjob.html
index 7cd033147..5cf40c75e 100644
--- a/concepts/cronjob.html
+++ b/concepts/cronjob.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3772,7 +3787,7 @@ job "hello-1202039034" deleted
diff --git a/concepts/csi.html b/concepts/csi.html
index 895f21854..5bbf4785f 100644
--- a/concepts/csi.html
+++ b/concepts/csi.html
@@ -1155,6 +1155,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3769,7 +3784,7 @@
diff --git a/concepts/custom-metrics-hpa.html b/concepts/custom-metrics-hpa.html
index c2ff87c7f..de991ea31 100644
--- a/concepts/custom-metrics-hpa.html
+++ b/concepts/custom-metrics-hpa.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3729,7 +3744,7 @@
diff --git a/concepts/custom-resource.html b/concepts/custom-resource.html
index 9e5adb3d1..29981432e 100644
--- a/concepts/custom-resource.html
+++ b/concepts/custom-resource.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3789,7 +3804,7 @@
diff --git a/concepts/daemonset.html b/concepts/daemonset.html
index a43789357..970e74edd 100644
--- a/concepts/daemonset.html
+++ b/concepts/daemonset.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3751,7 +3766,7 @@
diff --git a/concepts/deployment.html b/concepts/deployment.html
index a5af984de..a4bc90f26 100644
--- a/concepts/deployment.html
+++ b/concepts/deployment.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -4229,7 +4244,7 @@ $ echo $?
diff --git a/concepts/etcd.html b/concepts/etcd.html
index 3ea997ccc..1f29c9c7b 100644
--- a/concepts/etcd.html
+++ b/concepts/etcd.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3755,7 +3770,7 @@ thirdpartyresources
diff --git a/concepts/extension.html b/concepts/extension.html
index 8f6473a10..a0eee4e74 100644
--- a/concepts/extension.html
+++ b/concepts/extension.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3679,7 +3694,7 @@
diff --git a/concepts/garbage-collection.html b/concepts/garbage-collection.html
index dabf1aa84..744757417 100644
--- a/concepts/garbage-collection.html
+++ b/concepts/garbage-collection.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3768,7 +3783,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 dc50c5d02..cdc3770be 100644
--- a/concepts/horizontal-pod-autoscaling.html
+++ b/concepts/horizontal-pod-autoscaling.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3790,7 +3805,7 @@ kubectl delete hpa
diff --git a/concepts/index.html b/concepts/index.html
index be75d0251..aa6d1e897 100644
--- a/concepts/index.html
+++ b/concepts/index.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3747,7 +3762,7 @@ Kubernetes 还提供完善的管理]
diff --git a/concepts/ingress.html b/concepts/ingress.html
index 98eb59193..b49d7154e 100644
--- a/concepts/ingress.html
+++ b/concepts/ingress.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3900,7 +3915,7 @@ NAME RULE BACKEND ADDRESS
diff --git a/concepts/init-containers.html b/concepts/init-containers.html
index d3bcfe7cb..86d0c6875 100644
--- a/concepts/init-containers.html
+++ b/concepts/init-containers.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3874,7 +3889,7 @@ myapp-pod 1/1 Running 0 9m
diff --git a/concepts/job.html b/concepts/job.html
index 8df8c0f2d..ebbce3d8c 100644
--- a/concepts/job.html
+++ b/concepts/job.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3712,7 +3727,7 @@ $ kubectl logs $pods
diff --git a/concepts/label.html b/concepts/label.html
index 0148db1ec..cf6a66538 100644
--- a/concepts/label.html
+++ b/concepts/label.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3757,7 +3772,7 @@ $ kubectl get pods -l 'environment,environment n
diff --git a/concepts/local-persistent-storage.html b/concepts/local-persistent-storage.html
index 4690497b4..9d63df69f 100644
--- a/concepts/local-persistent-storage.html
+++ b/concepts/local-persistent-storage.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3881,7 +3896,7 @@ Events: < none
diff --git a/concepts/namespace.html b/concepts/namespace.html
index e5b1f595b..7d694c174 100644
--- a/concepts/namespace.html
+++ b/concepts/namespace.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3688,7 +3703,7 @@
diff --git a/concepts/network-policy.html b/concepts/network-policy.html
index 0202b0f2c..05b9e5305 100644
--- a/concepts/network-policy.html
+++ b/concepts/network-policy.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3741,7 +3756,7 @@
diff --git a/concepts/networking.html b/concepts/networking.html
index 2736859bd..c5f4ee8fc 100644
--- a/concepts/networking.html
+++ b/concepts/networking.html
@@ -1155,6 +1155,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3997,7 +4012,7 @@ target prot opt source des
diff --git a/concepts/node.html b/concepts/node.html
index ff6448248..51868f1d1 100644
--- a/concepts/node.html
+++ b/concepts/node.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3711,7 +3726,7 @@
diff --git a/concepts/objects.html b/concepts/objects.html
index f61681081..3d191789c 100644
--- a/concepts/objects.html
+++ b/concepts/objects.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3778,7 +3793,7 @@
diff --git a/concepts/open-interfaces.html b/concepts/open-interfaces.html
index 0ff700eed..0c0faf736 100644
--- a/concepts/open-interfaces.html
+++ b/concepts/open-interfaces.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3686,7 +3701,7 @@
diff --git a/concepts/pause-container.html b/concepts/pause-container.html
index 152f80667..0c5c3301b 100644
--- a/concepts/pause-container.html
+++ b/concepts/pause-container.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3744,7 +3759,7 @@ root 87 0.0 0.0 17500 2080 pts/0 R+ 14:10 0:00
diff --git a/concepts/persistent-volume.html b/concepts/persistent-volume.html
index 5b927c8cd..adf856cb4 100644
--- a/concepts/persistent-volume.html
+++ b/concepts/persistent-volume.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -4217,7 +4232,7 @@ Finalizers: [ kubernetes.io/pvc-protect
diff --git a/concepts/pod-disruption-budget.html b/concepts/pod-disruption-budget.html
index 8c4cc3f9b..85c40d721 100644
--- a/concepts/pod-disruption-budget.html
+++ b/concepts/pod-disruption-budget.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3902,7 +3917,7 @@
diff --git a/concepts/pod-hook.html b/concepts/pod-hook.html
index 6d78cd046..2d78b331f 100644
--- a/concepts/pod-hook.html
+++ b/concepts/pod-hook.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3710,7 +3725,7 @@
diff --git a/concepts/pod-lifecycle.html b/concepts/pod-lifecycle.html
index 9d71ee3b8..f0a8f3392 100644
--- a/concepts/pod-lifecycle.html
+++ b/concepts/pod-lifecycle.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3835,7 +3850,7 @@
diff --git a/concepts/pod-overview.html b/concepts/pod-overview.html
index 0889bd042..27dfdd58d 100644
--- a/concepts/pod-overview.html
+++ b/concepts/pod-overview.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3722,7 +3737,7 @@
diff --git a/concepts/pod-preset.html b/concepts/pod-preset.html
index bc0598277..08ff33846 100644
--- a/concepts/pod-preset.html
+++ b/concepts/pod-preset.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3716,7 +3731,7 @@
diff --git a/concepts/pod-security-policy.html b/concepts/pod-security-policy.html
index fc3479450..9cba91778 100644
--- a/concepts/pod-security-policy.html
+++ b/concepts/pod-security-policy.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3884,7 +3899,7 @@ podsecuritypolicy "permissive" delet
diff --git a/concepts/pod-state-and-lifecycle.html b/concepts/pod-state-and-lifecycle.html
index ddc6b166a..d00660628 100644
--- a/concepts/pod-state-and-lifecycle.html
+++ b/concepts/pod-state-and-lifecycle.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3686,7 +3701,7 @@
diff --git a/concepts/pod.html b/concepts/pod.html
index 2f1fb2537..ae0fc0f6b 100644
--- a/concepts/pod.html
+++ b/concepts/pod.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3764,7 +3779,7 @@
diff --git a/concepts/rbac.html b/concepts/rbac.html
index 7f39fed77..d1657b377 100644
--- a/concepts/rbac.html
+++ b/concepts/rbac.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -4206,7 +4221,7 @@
diff --git a/concepts/replicaset.html b/concepts/replicaset.html
index 96716c9ce..d42d74dd8 100644
--- a/concepts/replicaset.html
+++ b/concepts/replicaset.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3728,7 +3743,7 @@
diff --git a/concepts/scheduling.html b/concepts/scheduling.html
index 4c1afdfa7..384a0c85a 100644
--- a/concepts/scheduling.html
+++ b/concepts/scheduling.html
@@ -82,7 +82,7 @@
-
+
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3670,7 +3685,7 @@
-
+
@@ -3686,7 +3701,7 @@
diff --git a/concepts/secret.html b/concepts/secret.html
index bde3edb9b..9c04f3ee5 100644
--- a/concepts/secret.html
+++ b/concepts/secret.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3806,7 +3821,7 @@ token
diff --git a/concepts/service-catalog.html b/concepts/service-catalog.html
new file mode 100644
index 000000000..751713a6b
--- /dev/null
+++ b/concepts/service-catalog.html
@@ -0,0 +1,3913 @@
+
+
+
+
+
+
+ Service Catalog · Kubernetes Handbook - jimmysong.io
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 服务目录(Service Catalog)
+服务目录(Service Catalog)是Kubernetes的扩展API,它使运行在Kubernetes集群中的应用程序可以轻松使用外部托管软件产品,例如由云提供商提供的数据存储服务。
+它提供列表清单、提供(provision)和绑定(binding)来自服务代理(Service Brokers)的外部托管服务,而不需要关心如何创建或管理这些服务的详细情况。
+由Open Service Broker API规范定义的Service broker是由第三方提供和维护的一组托管服务的端点(endpoint),该第三方可以是AWS,GCP或Azure等云提供商。
+托管服务可以是Microsoft Azure Cloud Queue,Amazon Simple Queue Service和Google Cloud Pub/Sub等,它们可以是应用可以使用的提供的各种软件。
+通过Service Catalog,集群运营者可以浏览由Service Broker提供的托管服务列表,提供的托管服务实例,并与其绑定,使其可被Kubernetes集群中的应用程序所使用。
+场景样例
+应用程序开发人员编写基于Kubernetes集群的应用程序,他们希望使用消息队列作为其应用程序的一部分。但是,他们不想自己配置和管理这个服务服务。恰好,有一家云提供商通过其服务代理(Service Broker)提供消息队列服务。
+集群运营商可以设置Service Catalog并使用它与云提供商的Service Broker进行通信,以调配消息排队服务的实例并使其可用于Kubernetes集群内的应用程序。因此,应用程序开发人员不需要关心消息队列的实现细节或管理,可以简单地像服务一样使用它。
+架构
+Service Catalog使用Open Service Broker API 与Service Broker进行通信,充当Kubernetes API服务器的中介,发起供应并返回应用程序使用托管服务所需的凭据。
+Service Catalog通过扩展API服务器和控制器实现,使用etcd进行存储。它还使用Kubernetes 1.7+中提供的聚合层来呈现其API。
+图片 - Service Catalog Architecture
+API资源
+Service Catalog安装servicecatalog.k8s.ioAPI并提供以以下Kubernetes资源:
+
+ClusterServiceBroker:作为service broker的群集内代理,封装其服务器连接详细信息。这些由集群运营者创建和管理,希望使用broker服务在其集群中提供新类型的托管服务。
+
+ClusterServiceClass:由特定service broker提供的托管服务。将新ClusterServiceBroker资源添加到群集时,Service catalog controller将连接到service broker以获取可用托管服务的列表清单。然后它会创建新的ClusterServiceClass资源,与每个托管服务相对应。
+
+ClusterServicePlan:托管服务的特定产品。例如,托管服务可能有不同的可用套餐,例如免费套餐或付费套餐,或者可能有不同的配置选项,例如使用SSD存储或拥有更多资源。同向群集添加ClusterServiceClass一样,当添加一个新的ClusterServiceBroker时,Service Catalog会创建一个新的ClusterServicePlan资源,与每个托管服务可用的每个服务套餐对应。
+
+ServiceInstance:一个提供好的ClusterServiceClass实例。这些是由集群运营者创建的托管服务的特定实例,供一个或多个集群内应用程序使用。当创建一个新的ServiceInstance资源时,Service Catalog controller连接到相应的服务代理并指示它提供服务实例。
+
+ServiceBinding:访问ServiceInstance的凭据。由想让他们的应用利用ServiceInstance的集群集运营者创建。创建之后,Service Catalog controller将创建一个与此服务实例对应的Kubernetes的Secret,包含此服务实例的连接详细信息和凭证 ,可以挂载到Pod中。
+
+
+鉴权认证
+Service Catalog 支持这些认证方法:
+
+用法
+群集运营者可以使用Service Catalog API资源来提供托管服务,并使其在Kubernetes群集中可用。涉及的步骤是:
+
+列出Service Broker提供的托管服务清单和服务套餐。
+提供托管服务的新实例。
+绑定到托管服务,该服务返回连接凭证。
+将连接凭证映射到应用程序中。
+
+列出托管服务和服务套餐
+首先,群集运营者必须在servicecatalog.k8s.io群组内创建ClusterServiceBroker资源。此资源包含访问服务代理端点所需的URL和连接详细信息。
+这是一个ClusterServiceBroker资源的例子:
+apiVersion : servicecatalog.k8s.io/v1beta1
+kind : ClusterServiceBroker
+metadata :
+ name : cloud- broker
+spec :
+
+ url : https: //servicebroker.somecloudprovider.com/v1alpha1/projects/service- catalog/brokers/default
+
+
+
+
+
+以下是说明从一个service broker列出托管服务和套餐所涉及步骤的顺序图:
+图片 - List Services
+
+将ClusterServiceBroker资源添加到Service catalog中,它会触发对外部Service Broker的调用以获取可用服务的清单。
+Service Broker返回可用托管服务的清单和服务套餐的列表,它们分别在本地缓存为ClusterServiceClass
资源和ClusterServicePlan
资源。
+然后,集群运营者可以使用以下命令获取可用托管服务的清单:
+ kubectl get clusterserviceclasses -o=custom-columns=SERVICE\ NAME:.metadata.name,EXTERNAL\ NAME:.spec.externalName
+
它应该输出一个类似于以下格式的服务名称列表:
+ SERVICE NAME EXTERNAL NAME
+ 4f6e6cf6-ffdd-425f-a2c7-3c9258ad2468 cloud-provider-service
+ ... ...
+
他们还可以使用以下命令查看可用的服务套餐:
+ kubectl get clusterserviceplans -o=custom-columns=PLAN\ NAME:.metadata.name,EXTERNAL\ NAME:.spec.externalName
+
它应该输出一个类似于以下格式的套餐名称列表:
+ PLAN NAME EXTERNAL NAME
+ 86064792-7ea2-467b-af93-ac9694d96d52 service-plan-name
+ ... ...
+
+
+提供新的实例
+集群运营者可以通过创建ServiceInstance资源来启动新实例的供应。
+如下是一个ServiceInstance资源的例子:
+apiVersion : servicecatalog.k8s.io/v1beta1
+kind : ServiceInstance
+metadata :
+ name : cloud- queue- instance
+ namespace : cloud- apps
+spec :
+
+ clusterServiceClassExternalName : cloud- provider- service
+ clusterServicePlanExternalName : service- plan- name
+
+
+
+
+
+以下序列图说明了提供一个新的托管服务的实例所涉及的步骤:
+图片 - Provision a Service
+
+当ServiceInstance
资源创建后,Service Catalog发起到外部service broker来提供服务的一个实例。
+service broker创建托管服务的新实例并返回HTTP响应。
+然后,群集运营者可以检查实例的状态,来确认它是否准备就绪。
+
+绑定到托管服务
+在提供新实例后,群集运营者必须绑定到托管服务才能获取到应用程序使用服务所需的连接凭证和服务帐户详细信息。这是通过创建ServiceBinding
资源完成的。
+以下是一个ServiceBinding
资源的例子:
+apiVersion : servicecatalog.k8s.io/v1beta1
+kind : ServiceBinding
+metadata :
+ name : cloud- queue- binding
+ namespace : cloud- apps
+spec :
+ instanceRef :
+ name : cloud- queue- instance
+
+
+
+
+
+以下序列图说明了绑定到托管服务实例所涉及的步骤:
+图片 - Bind to a managed service
+
+在ServiceBinding创建后,Service Catalog给外部service broker发一个调用请求,获取与服务实例绑定所需的信息。
+
+service broker为相应的服务帐户启用应用程序权限/角色。
+
+service broker返回连接和访问托管服务实例所需的信息。根据不同的提供商和不同的服务,返回的信息可能在服务提供商和其管理服务之间有所不同。
+
+
+映射连接凭证
+绑定后,最后一步是将连接凭证和服务特定的信息映射到应用程序中。这些信息存储在secret中,应用程序可以用来访问并与托管服务连接。
+图片 - Map connection credentials
+Pod配置文件
+执行此映射的一种方法是使用声明式Pod配置文件。
+以下示例描述了如何将服务帐户凭证映射到应用程序中。被调用的sa-key密钥存储在名为provider-cloud-key的卷中,并且应用程序将此卷挂载到/var/secrets/provider/key.json。环境变量PROVIDER_APPLICATION_CREDENTIALS是从挂载文件的值映射而来的。
+...
+ spec :
+ volumes :
+ - name : provider- cloud- key
+ secret :
+ secretName : sa- key
+ containers :
+...
+ volumeMounts :
+ - name : provider- cloud- key
+ mountPath : /var/secrets/provider
+ env :
+ - name : PROVIDER_APPLICATION_CREDENTIALS
+ value : "/var/secrets/provider/key.json"
+
+以下示例描述如何将secret值映射到应用程序环境变量。在此示例中,消息传递队列topic
名称从名为provider-queue-credentials
的secret的key topic值映射到环境变量TOPIC
。
+...
+ env :
+ - name : "TOPIC"
+ valueFrom :
+ secretKeyRef :
+ name : provider- queue- credentials
+ key : topic
+
+下一步
+
+本文翻译自官方文档
+
+
+
+
+
+
+
+
+
results matching " "
+
+
+
+
+
+
No results matching " "
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/concepts/service-discovery.html b/concepts/service-discovery.html
index 7d1846676..59ca81a75 100644
--- a/concepts/service-discovery.html
+++ b/concepts/service-discovery.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3679,7 +3694,7 @@
diff --git a/concepts/service.html b/concepts/service.html
index 37f6df490..37ac1a2aa 100644
--- a/concepts/service.html
+++ b/concepts/service.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -4011,7 +4026,7 @@ iptables 代理不会隐藏 Kubernetes 集
diff --git a/concepts/serviceaccount.html b/concepts/serviceaccount.html
index 7ed3a043a..069340229 100644
--- a/concepts/serviceaccount.html
+++ b/concepts/serviceaccount.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3827,7 +3842,7 @@ serviceaccounts/default
diff --git a/concepts/statefulset.html b/concepts/statefulset.html
index 132fd6482..98417008b 100644
--- a/concepts/statefulset.html
+++ b/concepts/statefulset.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -4146,7 +4161,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/pause-container.html#fig3.4.4.1","level":"3.4.4","list_caption":"Figure: Pause容器","alt":"Pause容器","nro":58,"url":"../images/pause-container.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Pause容器","attributes":{},"skip":false,"key":"3.4.4.1"},{"backlink":"concepts/pod-lifecycle.html#fig3.4.6.1","level":"3.4.6","list_caption":"Figure: Pod的生命周期示意图(图片来自网络)","alt":"Pod的生命周期示意图(图片来自网络)","nro":59,"url":"../images/kubernetes-pod-life-cycle.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Pod的生命周期示意图(图片来自网络)","attributes":{},"skip":false,"key":"3.4.6.1"},{"backlink":"concepts/label.html#fig3.5.3.1","level":"3.5.3","list_caption":"Figure: label示意图","alt":"label示意图","nro":60,"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":61,"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":62,"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":63,"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":64,"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":65,"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":66,"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":67,"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":68,"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":69,"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":70,"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":71,"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":72,"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":73,"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":74,"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":75,"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":76,"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: 流程图","alt":"流程图","nro":77,"url":"../images/how-to-use-kubernetes-with-istio.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"流程图","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: API","alt":"API","nro":78,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"API","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: wercker构建页面","alt":"wercker构建页面","nro":79,"url":"../images/k8s-app-monitor-agent-wercker.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"wercker构建页面","attributes":{},"skip":false,"key":"4.6.1.3"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.4","level":"4.6.1","list_caption":"Figure: 图表","alt":"图表","nro":80,"url":"../images/k8s-app-monitor-agent.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"图表","attributes":{},"skip":false,"key":"4.6.1.4"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.5","level":"4.6.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":81,"url":"../images/k8s-app-monitor-istio-grafana.png","index":5,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"4.6.1.5"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.6","level":"4.6.1","list_caption":"Figure: servicegraph页面","alt":"servicegraph页面","nro":82,"url":"../images/k8s-app-monitor-istio-servicegraph-dotviz.png","index":6,"caption_template":"图片 - _CAPTION_","label":"servicegraph页面","attributes":{},"skip":false,"key":"4.6.1.6"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.7","level":"4.6.1","list_caption":"Figure: Zipkin页面","alt":"Zipkin页面","nro":83,"url":"../images/k8s-app-monitor-istio-zipkin.png","index":7,"caption_template":"图片 - _CAPTION_","label":"Zipkin页面","attributes":{},"skip":false,"key":"4.6.1.7"},{"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":84,"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":85,"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":86,"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":87,"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":88,"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":89,"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":90,"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":91,"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":92,"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":93,"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":94,"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":95,"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.4.1.1","level":"5.4.1","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":96,"url":"../images/traefik-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.4.1.1"},{"backlink":"practice/traefik-ingress-installation.html#fig5.4.1.2","level":"5.4.1","list_caption":"Figure: traefik-nginx","alt":"traefik-nginx","nro":97,"url":"../images/traefik-nginx.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"traefik-nginx","attributes":{},"skip":false,"key":"5.4.1.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.4.1.3","level":"5.4.1","list_caption":"Figure: traefik-guestbook","alt":"traefik-guestbook","nro":98,"url":"../images/traefik-guestbook.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"traefik-guestbook","attributes":{},"skip":false,"key":"5.4.1.3"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.1","level":"5.4.2","list_caption":"Figure: 使用dashboard来扩容","alt":"使用dashboard来扩容","nro":99,"url":"../images/dashbaord-scale.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用dashboard来扩容","attributes":{},"skip":false,"key":"5.4.2.1"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.2","level":"5.4.2","list_caption":"Figure: Traefik的UI","alt":"Traefik的UI","nro":100,"url":"../images/traefik-dashboard-locust.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Traefik的UI","attributes":{},"skip":false,"key":"5.4.2.2"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.3","level":"5.4.2","list_caption":"Figure: Locust启动界面","alt":"Locust启动界面","nro":101,"url":"../images/locust-start-swarming.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Locust启动界面","attributes":{},"skip":false,"key":"5.4.2.3"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.4","level":"5.4.2","list_caption":"Figure: Dashboard查看页面","alt":"Dashboard查看页面","nro":102,"url":"../images/sample-webapp-rc.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Dashboard查看页面","attributes":{},"skip":false,"key":"5.4.2.4"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.5","level":"5.4.2","list_caption":"Figure: Locust测试结果页面","alt":"Locust测试结果页面","nro":103,"url":"../images/locust-dashboard.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Locust测试结果页面","attributes":{},"skip":false,"key":"5.4.2.5"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.4.3.1","level":"5.4.3","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":104,"url":"../images/kubenetes-e2e-test.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.4.3.1"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.4.3.2","level":"5.4.3","list_caption":"Figure: locust测试页面","alt":"locust测试页面","nro":105,"url":"../images/kubernetes-locust-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"locust测试页面","attributes":{},"skip":false,"key":"5.4.3.2"},{"backlink":"practice/edge-node-configuration.html#fig5.4.4.1","level":"5.4.4","list_caption":"Figure: 边缘节点架构","alt":"边缘节点架构","nro":106,"url":"../images/kubernetes-edge-node-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"边缘节点架构","attributes":{},"skip":false,"key":"5.4.4.1"},{"backlink":"practice/edge-node-configuration.html#fig5.4.4.2","level":"5.4.4","list_caption":"Figure: 使用域名来访问Kubernetes中的服务","alt":"使用域名来访问Kubernetes中的服务","nro":107,"url":"../images/accessing-kubernetes-services-with-dns-name.png","index":2,"caption_template":"图片 - _CAPTION_","label":"使用域名来访问Kubernetes中的服务","attributes":{},"skip":false,"key":"5.4.4.2"},{"backlink":"practice/configuring-dns.html#fig5.4.6.1.1","level":"5.4.6.1","list_caption":"Figure: DNS lookup flow","alt":"DNS lookup flow","nro":108,"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.4.6.1.1"},{"backlink":"practice/master-ha.html#fig5.5.1.1","level":"5.5.1","list_caption":"Figure: Master HA架构图","alt":"Master HA架构图","nro":109,"url":"../images/master-ha.JPG","index":1,"caption_template":"图片 - _CAPTION_","label":"Master HA架构图","attributes":{},"skip":false,"key":"5.5.1.1"},{"backlink":"practice/app-log-collection.html#fig5.5.3.1","level":"5.5.3","list_caption":"Figure: filebeat日志收集架构图","alt":"filebeat日志收集架构图","nro":110,"url":"../images/filebeat-log-collector.png","index":1,"caption_template":"图片 - _CAPTION_","label":"filebeat日志收集架构图","attributes":{},"skip":false,"key":"5.5.3.1"},{"backlink":"practice/app-log-collection.html#fig5.5.3.2","level":"5.5.3","list_caption":"Figure: Kibana页面","alt":"Kibana页面","nro":111,"url":"../images/filebeat-docker-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kibana页面","attributes":{},"skip":false,"key":"5.5.3.2"},{"backlink":"practice/app-log-collection.html#fig5.5.3.3","level":"5.5.3","list_caption":"Figure: filebeat收集的日志详细信息","alt":"filebeat收集的日志详细信息","nro":112,"url":"../images/kubernetes-filebeat-detail.png","index":3,"caption_template":"图片 - _CAPTION_","label":"filebeat收集的日志详细信息","attributes":{},"skip":false,"key":"5.5.3.3"},{"backlink":"practice/monitor.html#fig5.5.5.1","level":"5.5.5","list_caption":"Figure: Kubernetes集群中的监控","alt":"Kubernetes集群中的监控","nro":113,"url":"../images/monitoring-in-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes集群中的监控","attributes":{},"skip":false,"key":"5.5.5.1"},{"backlink":"practice/monitor.html#fig5.5.5.2","level":"5.5.5","list_caption":"Figure: kubernetes的容器命名规则示意图","alt":"kubernetes的容器命名规则示意图","nro":114,"url":"../images/kubernetes-container-naming-rule.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"kubernetes的容器命名规则示意图","attributes":{},"skip":false,"key":"5.5.5.2"},{"backlink":"practice/monitor.html#fig5.5.5.3","level":"5.5.5","list_caption":"Figure: Heapster架构图(改进版)","alt":"Heapster架构图(改进版)","nro":115,"url":"../images/kubernetes-heapster-monitoring.png","index":3,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图(改进版)","attributes":{},"skip":false,"key":"5.5.5.3"},{"backlink":"practice/monitor.html#fig5.5.5.4","level":"5.5.5","list_caption":"Figure: 应用监控架构图","alt":"应用监控架构图","nro":116,"url":"../images/kubernetes-app-monitoring.png","index":4,"caption_template":"图片 - _CAPTION_","label":"应用监控架构图","attributes":{},"skip":false,"key":"5.5.5.4"},{"backlink":"practice/monitor.html#fig5.5.5.5","level":"5.5.5","list_caption":"Figure: 应用拓扑图","alt":"应用拓扑图","nro":117,"url":"../images/weave-scope-service-topology.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"应用拓扑图","attributes":{},"skip":false,"key":"5.5.5.5"},{"backlink":"practice/data-persistence-problem.html#fig5.5.6.1","level":"5.5.6","list_caption":"Figure: 日志持久化收集解决方案示意图","alt":"日志持久化收集解决方案示意图","nro":118,"url":"../images/log-persistence-logstash.png","index":1,"caption_template":"图片 - _CAPTION_","label":"日志持久化收集解决方案示意图","attributes":{},"skip":false,"key":"5.5.6.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.6.1.3.1","level":"5.6.1.3","list_caption":"Figure: 创建存储","alt":"创建存储","nro":119,"url":"../images/create-gluster-storage.png","index":1,"caption_template":"图片 - _CAPTION_","label":"创建存储","attributes":{},"skip":false,"key":"5.6.1.3.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.6.1.3.2","level":"5.6.1.3","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":120,"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.6.1.3.2"},{"backlink":"practice/openebs.html#fig5.6.3.1","level":"5.6.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":121,"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.6.3.1"},{"backlink":"practice/openebs.html#fig5.6.3.2","level":"5.6.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":122,"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.6.3.2"},{"backlink":"practice/using-openebs-for-persistent-storage.html#fig5.6.3.1.1","level":"5.6.3.1","list_caption":"Figure: Kubernetes iSCSI架构","alt":"Kubernetes iSCSI架构","nro":123,"url":"../images/iscsi-on-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes iSCSI架构","attributes":{},"skip":false,"key":"5.6.3.1.1"},{"backlink":"practice/using-heapster-to-get-object-metrics.html#fig5.7.1.1.1","level":"5.7.1.1","list_caption":"Figure: Heapster架构图","alt":"Heapster架构图","nro":124,"url":"../images/heapster-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图","attributes":{},"skip":false,"key":"5.7.1.1.1"},{"backlink":"practice/prometheus.html#fig5.7.2.1","level":"5.7.2","list_caption":"Figure: Prometheus 架构图","alt":"Prometheus 架构图","nro":125,"url":"../images/prometheus-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Prometheus 架构图","attributes":{},"skip":false,"key":"5.7.2.1"},{"backlink":"practice/using-prometheus-to-monitor-kuberentes-cluster.html#fig5.7.2.1.1","level":"5.7.2.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":126,"url":"../images/kubernetes-prometheus-monitoring.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"5.7.2.1.1"},{"backlink":"practice/helm.html#fig5.8.1.1","level":"5.8.1","list_caption":"Figure: Helm chart源","alt":"Helm chart源","nro":127,"url":"../images/helm-charts-repository.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm chart源","attributes":{},"skip":false,"key":"5.8.1.1"},{"backlink":"practice/helm.html#fig5.8.1.2","level":"5.8.1","list_caption":"Figure: TODO应用的Web页面","alt":"TODO应用的Web页面","nro":128,"url":"../images/helm-mean-todo-aholic.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"TODO应用的Web页面","attributes":{},"skip":false,"key":"5.8.1.2"},{"backlink":"practice/create-private-charts-repo.html#fig5.8.2.1","level":"5.8.2","list_caption":"Figure: Helm monocular界面","alt":"Helm monocular界面","nro":129,"url":"../images/helm-monocular-jimmysong.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm monocular界面","attributes":{},"skip":false,"key":"5.8.2.1"},{"backlink":"practice/jenkins-ci-cd.html#fig5.9.1.1","level":"5.9.1","list_caption":"Figure: 基于Jenkins的持续集成与发布","alt":"基于Jenkins的持续集成与发布","nro":130,"url":"../images/kubernetes-jenkins-ci-cd.png","index":1,"caption_template":"图片 - _CAPTION_","label":"基于Jenkins的持续集成与发布","attributes":{},"skip":false,"key":"5.9.1.1"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.1","level":"5.9.2","list_caption":"Figure: OAuth注册","alt":"OAuth注册","nro":131,"url":"../images/github-oauth-register.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OAuth注册","attributes":{},"skip":false,"key":"5.9.2.1"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.2","level":"5.9.2","list_caption":"Figure: OAuth key","alt":"OAuth key","nro":132,"url":"../images/github-oauth-drone-key.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OAuth key","attributes":{},"skip":false,"key":"5.9.2.2"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.3","level":"5.9.2","list_caption":"Figure: Drone登陆界面","alt":"Drone登陆界面","nro":133,"url":"../images/drone-login-github.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Drone登陆界面","attributes":{},"skip":false,"key":"5.9.2.3"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.4","level":"5.9.2","list_caption":"Figure: Github启用repo设置","alt":"Github启用repo设置","nro":134,"url":"../images/drone-github-active.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Github启用repo设置","attributes":{},"skip":false,"key":"5.9.2.4"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.5","level":"5.9.2","list_caption":"Figure: Github单个repo设置","alt":"Github单个repo设置","nro":135,"url":"../images/drone-github-repo-setting.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Github单个repo设置","attributes":{},"skip":false,"key":"5.9.2.5"},{"backlink":"practice/manually-upgrade.html#fig5.10.1.1","level":"5.10.1","list_caption":"Figure: Kubernetes零宕机时间升级建议","alt":"Kubernetes零宕机时间升级建议","nro":136,"url":"../images/zero-downtime-kubernetes-upgrade-tips.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes零宕机时间升级建议","attributes":{},"skip":false,"key":"5.10.1.1"},{"backlink":"practice/manually-upgrade.html#fig5.10.1.2","level":"5.10.1","list_caption":"Figure: Kuberentes API对象的版本演进","alt":"Kuberentes API对象的版本演进","nro":137,"url":"../images/kubernetes-apversions-changes.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kuberentes API对象的版本演进","attributes":{},"skip":false,"key":"5.10.1.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.1","level":"5.10.2","list_caption":"Figure: 登陆界面","alt":"登陆界面","nro":138,"url":"../images/kubernetes-dashboard-1.7.1-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"登陆界面","attributes":{},"skip":false,"key":"5.10.2.1"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.2","level":"5.10.2","list_caption":"Figure: 首页","alt":"首页","nro":139,"url":"../images/kubernetes-dashboard-1.7.1-default-page.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"首页","attributes":{},"skip":false,"key":"5.10.2.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.3","level":"5.10.2","list_caption":"Figure: 用户空间","alt":"用户空间","nro":140,"url":"../images/kubernetes-dashboard-1.7.1-brand.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"用户空间","attributes":{},"skip":false,"key":"5.10.2.3"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.4","level":"5.10.2","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":141,"url":"../images/brand-kubeconfig-yaml.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"5.10.2.4"},{"backlink":"usecases/microservices.html#fig6.2.1","level":"6.2","list_caption":"Figure: 微服务关注的部分","alt":"微服务关注的部分","nro":142,"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":143,"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":144,"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":145,"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":146,"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":147,"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":148,"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的mindmap","alt":"Istio的mindmap","nro":149,"url":"../images/istio-mindmap.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Istio的mindmap","attributes":{},"skip":false,"key":"6.3.1.1"},{"backlink":"usecases/istio.html#fig6.3.1.2","level":"6.3.1","list_caption":"Figure: Istio架构图","alt":"Istio架构图","nro":150,"url":"../images/istio-arch-v0.1.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Istio架构图","attributes":{},"skip":false,"key":"6.3.1.2"},{"backlink":"usecases/istio.html#fig6.3.1.3","level":"6.3.1","list_caption":"Figure: Istio的控制平面和数据平面","alt":"Istio的控制平面和数据平面","nro":151,"url":"../images/istio-arch.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Istio的控制平面和数据平面","attributes":{},"skip":false,"key":"6.3.1.3"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.1","level":"6.3.1.1","list_caption":"Figure: BookInfo Sample应用架构图","alt":"BookInfo Sample应用架构图","nro":152,"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":153,"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":154,"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":155,"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":156,"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":157,"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":158,"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":159,"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":160,"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/istio-tutorial.html#fig6.3.1.7.1","level":"6.3.1.7","list_caption":"Figure: Jaeger query UI","alt":"Jaeger query UI","nro":161,"url":"../images/jaeger-query-ui.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Jaeger query UI","attributes":{},"skip":false,"key":"6.3.1.7.1"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.2","level":"6.3.1.7","list_caption":"Figure: 分布式追踪","alt":"分布式追踪","nro":162,"url":"../images/istio-tutorial-zipkin-trace.png","index":2,"caption_template":"图片 - _CAPTION_","label":"分布式追踪","attributes":{},"skip":false,"key":"6.3.1.7.2"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.3","level":"6.3.1.7","list_caption":"Figure: 依赖关系","alt":"依赖关系","nro":163,"url":"../images/istio-tutorial-zipkin-dependency.png","index":3,"caption_template":"图片 - _CAPTION_","label":"依赖关系","attributes":{},"skip":false,"key":"6.3.1.7.3"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.4","level":"6.3.1.7","list_caption":"Figure: 服务关系图和QPS","alt":"服务关系图和QPS","nro":164,"url":"../images/istio-tutorial-serivcegraph-dotviz.png","index":4,"caption_template":"图片 - _CAPTION_","label":"服务关系图和QPS","attributes":{},"skip":false,"key":"6.3.1.7.4"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.5","level":"6.3.1.7","list_caption":"Figure: Grafana 监控","alt":"Grafana 监控","nro":165,"url":"../images/istio-tutorial-grafana.png","index":5,"caption_template":"图片 - _CAPTION_","label":"Grafana 监控","attributes":{},"skip":false,"key":"6.3.1.7.5"},{"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":166,"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.html#fig6.3.2.2","level":"6.3.2","list_caption":"Figure: Linkerd 部署架构(图片来自https://buoyant.io/2016/10/14/a-service-mesh-for-kubernetes-part-ii-pods-are-great-until-theyre-not/)","alt":"Linkerd 部署架构(图片来自https://buoyant.io/2016/10/14/a-service-mesh-for-kubernetes-part-ii-pods-are-great-until-theyre-not/)","nro":167,"url":"https://buoyant.io/wp-content/uploads/2017/07/buoyant-k8s-daemonset-mesh.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Linkerd 部署架构(图片来自https://buoyant.io/2016/10/14/a-service-mesh-for-kubernetes-part-ii-pods-are-great-until-theyre-not/)","attributes":{},"skip":false,"key":"6.3.2.2"},{"backlink":"usecases/linkerd.html#fig6.3.2.3","level":"6.3.2","list_caption":"Figure: 基于 dtab 的路由规则配置阶段发布","alt":"基于 dtab 的路由规则配置阶段发布","nro":168,"url":"https://buoyant.io/wp-content/uploads/2017/07/buoyant-4_override.png","index":3,"caption_template":"图片 - _CAPTION_","label":"基于 dtab 的路由规则配置阶段发布","attributes":{},"skip":false,"key":"6.3.2.3"},{"backlink":"usecases/linkerd.html#fig6.3.2.4","level":"6.3.2","list_caption":"Figure: Linkerd ingress controller","alt":"Linkerd ingress controller","nro":169,"url":"https://buoyant.io/wp-content/uploads/2017/07/buoyant-k8s-hello-world-ingress-controller-1.png","index":4,"caption_template":"图片 - _CAPTION_","label":"Linkerd ingress controller","attributes":{},"skip":false,"key":"6.3.2.4"},{"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":170,"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":171,"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":172,"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":173,"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":174,"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":175,"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":176,"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":177,"url":"../images/conduit-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Conduit dashboard","attributes":{},"skip":false,"key":"6.3.3.2.1"},{"backlink":"usecases/envoy-front-proxy.html#fig6.3.4.1.1","level":"6.3.4.1","list_caption":"Figure: Front proxy 部署结构图(转自https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/front_proxy)","alt":"Front proxy 部署结构图(转自https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/front_proxy)","nro":178,"url":"../images/envoyproxy-docker-compose.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Front proxy 部署结构图(转自https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/front_proxy)","attributes":{},"skip":false,"key":"6.3.4.1.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":179,"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":180,"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":181,"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":182,"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":183,"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":184,"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":185,"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":186,"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":187,"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":188,"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":189,"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":190,"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":191,"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":192,"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":193,"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":194,"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":195,"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":196,"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":197,"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-04-20T08:39:54.677Z"},"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/pause-container.html#fig3.4.4.1","level":"3.4.4","list_caption":"Figure: Pause容器","alt":"Pause容器","nro":58,"url":"../images/pause-container.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Pause容器","attributes":{},"skip":false,"key":"3.4.4.1"},{"backlink":"concepts/pod-lifecycle.html#fig3.4.6.1","level":"3.4.6","list_caption":"Figure: Pod的生命周期示意图(图片来自网络)","alt":"Pod的生命周期示意图(图片来自网络)","nro":59,"url":"../images/kubernetes-pod-life-cycle.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Pod的生命周期示意图(图片来自网络)","attributes":{},"skip":false,"key":"3.4.6.1"},{"backlink":"concepts/label.html#fig3.5.3.1","level":"3.5.3","list_caption":"Figure: label示意图","alt":"label示意图","nro":60,"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":61,"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":62,"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":63,"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":64,"url":"../images/services-iptables-overview.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"iptables代理模式下Service概览图","attributes":{},"skip":false,"key":"3.7.1.2"},{"backlink":"concepts/service-catalog.html#fig3.10.4.1","level":"3.10.4","list_caption":"Figure: Service Catalog Architecture","alt":"Service Catalog Architecture","nro":65,"url":"../images/service-catalog-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Service Catalog Architecture","attributes":{},"skip":false,"key":"3.10.4.1"},{"backlink":"concepts/service-catalog.html#fig3.10.4.2","level":"3.10.4","list_caption":"Figure: List Services","alt":"List Services","nro":66,"url":"../images/service-catalog-list.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"List Services","attributes":{},"skip":false,"key":"3.10.4.2"},{"backlink":"concepts/service-catalog.html#fig3.10.4.3","level":"3.10.4","list_caption":"Figure: Provision a Service","alt":"Provision a Service","nro":67,"url":"../images/service-catalog-provision.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Provision a Service","attributes":{},"skip":false,"key":"3.10.4.3"},{"backlink":"concepts/service-catalog.html#fig3.10.4.4","level":"3.10.4","list_caption":"Figure: Bind to a managed service","alt":"Bind to a managed service","nro":68,"url":"../images/service-catalog-bind.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Bind to a managed service","attributes":{},"skip":false,"key":"3.10.4.4"},{"backlink":"concepts/service-catalog.html#fig3.10.4.5","level":"3.10.4","list_caption":"Figure: Map connection credentials","alt":"Map connection credentials","nro":69,"url":"../images/service-catalog-map.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Map connection credentials","attributes":{},"skip":false,"key":"3.10.4.5"},{"backlink":"guide/using-kubectl.html#fig4.3.2.1","level":"4.3.2","list_caption":"Figure: kubectl cheatsheet","alt":"kubectl cheatsheet","nro":70,"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":71,"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":72,"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":73,"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":74,"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":75,"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":76,"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":77,"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":78,"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":79,"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":80,"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":81,"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: 流程图","alt":"流程图","nro":82,"url":"../images/how-to-use-kubernetes-with-istio.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"流程图","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: API","alt":"API","nro":83,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"API","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: wercker构建页面","alt":"wercker构建页面","nro":84,"url":"../images/k8s-app-monitor-agent-wercker.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"wercker构建页面","attributes":{},"skip":false,"key":"4.6.1.3"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.4","level":"4.6.1","list_caption":"Figure: 图表","alt":"图表","nro":85,"url":"../images/k8s-app-monitor-agent.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"图表","attributes":{},"skip":false,"key":"4.6.1.4"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.5","level":"4.6.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":86,"url":"../images/k8s-app-monitor-istio-grafana.png","index":5,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"4.6.1.5"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.6","level":"4.6.1","list_caption":"Figure: servicegraph页面","alt":"servicegraph页面","nro":87,"url":"../images/k8s-app-monitor-istio-servicegraph-dotviz.png","index":6,"caption_template":"图片 - _CAPTION_","label":"servicegraph页面","attributes":{},"skip":false,"key":"4.6.1.6"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.7","level":"4.6.1","list_caption":"Figure: Zipkin页面","alt":"Zipkin页面","nro":88,"url":"../images/k8s-app-monitor-istio-zipkin.png","index":7,"caption_template":"图片 - _CAPTION_","label":"Zipkin页面","attributes":{},"skip":false,"key":"4.6.1.7"},{"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":89,"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":90,"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":91,"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":92,"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":93,"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":94,"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":95,"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":96,"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":97,"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":98,"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":99,"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":100,"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.4.1.1","level":"5.4.1","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":101,"url":"../images/traefik-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.4.1.1"},{"backlink":"practice/traefik-ingress-installation.html#fig5.4.1.2","level":"5.4.1","list_caption":"Figure: traefik-nginx","alt":"traefik-nginx","nro":102,"url":"../images/traefik-nginx.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"traefik-nginx","attributes":{},"skip":false,"key":"5.4.1.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.4.1.3","level":"5.4.1","list_caption":"Figure: traefik-guestbook","alt":"traefik-guestbook","nro":103,"url":"../images/traefik-guestbook.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"traefik-guestbook","attributes":{},"skip":false,"key":"5.4.1.3"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.1","level":"5.4.2","list_caption":"Figure: 使用dashboard来扩容","alt":"使用dashboard来扩容","nro":104,"url":"../images/dashbaord-scale.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用dashboard来扩容","attributes":{},"skip":false,"key":"5.4.2.1"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.2","level":"5.4.2","list_caption":"Figure: Traefik的UI","alt":"Traefik的UI","nro":105,"url":"../images/traefik-dashboard-locust.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Traefik的UI","attributes":{},"skip":false,"key":"5.4.2.2"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.3","level":"5.4.2","list_caption":"Figure: Locust启动界面","alt":"Locust启动界面","nro":106,"url":"../images/locust-start-swarming.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Locust启动界面","attributes":{},"skip":false,"key":"5.4.2.3"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.4","level":"5.4.2","list_caption":"Figure: Dashboard查看页面","alt":"Dashboard查看页面","nro":107,"url":"../images/sample-webapp-rc.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Dashboard查看页面","attributes":{},"skip":false,"key":"5.4.2.4"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.5","level":"5.4.2","list_caption":"Figure: Locust测试结果页面","alt":"Locust测试结果页面","nro":108,"url":"../images/locust-dashboard.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Locust测试结果页面","attributes":{},"skip":false,"key":"5.4.2.5"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.4.3.1","level":"5.4.3","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":109,"url":"../images/kubenetes-e2e-test.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.4.3.1"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.4.3.2","level":"5.4.3","list_caption":"Figure: locust测试页面","alt":"locust测试页面","nro":110,"url":"../images/kubernetes-locust-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"locust测试页面","attributes":{},"skip":false,"key":"5.4.3.2"},{"backlink":"practice/edge-node-configuration.html#fig5.4.4.1","level":"5.4.4","list_caption":"Figure: 边缘节点架构","alt":"边缘节点架构","nro":111,"url":"../images/kubernetes-edge-node-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"边缘节点架构","attributes":{},"skip":false,"key":"5.4.4.1"},{"backlink":"practice/edge-node-configuration.html#fig5.4.4.2","level":"5.4.4","list_caption":"Figure: 使用域名来访问Kubernetes中的服务","alt":"使用域名来访问Kubernetes中的服务","nro":112,"url":"../images/accessing-kubernetes-services-with-dns-name.png","index":2,"caption_template":"图片 - _CAPTION_","label":"使用域名来访问Kubernetes中的服务","attributes":{},"skip":false,"key":"5.4.4.2"},{"backlink":"practice/configuring-dns.html#fig5.4.6.1.1","level":"5.4.6.1","list_caption":"Figure: DNS lookup flow","alt":"DNS lookup flow","nro":113,"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.4.6.1.1"},{"backlink":"practice/master-ha.html#fig5.5.1.1","level":"5.5.1","list_caption":"Figure: Master HA架构图","alt":"Master HA架构图","nro":114,"url":"../images/master-ha.JPG","index":1,"caption_template":"图片 - _CAPTION_","label":"Master HA架构图","attributes":{},"skip":false,"key":"5.5.1.1"},{"backlink":"practice/app-log-collection.html#fig5.5.3.1","level":"5.5.3","list_caption":"Figure: filebeat日志收集架构图","alt":"filebeat日志收集架构图","nro":115,"url":"../images/filebeat-log-collector.png","index":1,"caption_template":"图片 - _CAPTION_","label":"filebeat日志收集架构图","attributes":{},"skip":false,"key":"5.5.3.1"},{"backlink":"practice/app-log-collection.html#fig5.5.3.2","level":"5.5.3","list_caption":"Figure: Kibana页面","alt":"Kibana页面","nro":116,"url":"../images/filebeat-docker-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kibana页面","attributes":{},"skip":false,"key":"5.5.3.2"},{"backlink":"practice/app-log-collection.html#fig5.5.3.3","level":"5.5.3","list_caption":"Figure: filebeat收集的日志详细信息","alt":"filebeat收集的日志详细信息","nro":117,"url":"../images/kubernetes-filebeat-detail.png","index":3,"caption_template":"图片 - _CAPTION_","label":"filebeat收集的日志详细信息","attributes":{},"skip":false,"key":"5.5.3.3"},{"backlink":"practice/monitor.html#fig5.5.5.1","level":"5.5.5","list_caption":"Figure: Kubernetes集群中的监控","alt":"Kubernetes集群中的监控","nro":118,"url":"../images/monitoring-in-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes集群中的监控","attributes":{},"skip":false,"key":"5.5.5.1"},{"backlink":"practice/monitor.html#fig5.5.5.2","level":"5.5.5","list_caption":"Figure: kubernetes的容器命名规则示意图","alt":"kubernetes的容器命名规则示意图","nro":119,"url":"../images/kubernetes-container-naming-rule.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"kubernetes的容器命名规则示意图","attributes":{},"skip":false,"key":"5.5.5.2"},{"backlink":"practice/monitor.html#fig5.5.5.3","level":"5.5.5","list_caption":"Figure: Heapster架构图(改进版)","alt":"Heapster架构图(改进版)","nro":120,"url":"../images/kubernetes-heapster-monitoring.png","index":3,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图(改进版)","attributes":{},"skip":false,"key":"5.5.5.3"},{"backlink":"practice/monitor.html#fig5.5.5.4","level":"5.5.5","list_caption":"Figure: 应用监控架构图","alt":"应用监控架构图","nro":121,"url":"../images/kubernetes-app-monitoring.png","index":4,"caption_template":"图片 - _CAPTION_","label":"应用监控架构图","attributes":{},"skip":false,"key":"5.5.5.4"},{"backlink":"practice/monitor.html#fig5.5.5.5","level":"5.5.5","list_caption":"Figure: 应用拓扑图","alt":"应用拓扑图","nro":122,"url":"../images/weave-scope-service-topology.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"应用拓扑图","attributes":{},"skip":false,"key":"5.5.5.5"},{"backlink":"practice/data-persistence-problem.html#fig5.5.6.1","level":"5.5.6","list_caption":"Figure: 日志持久化收集解决方案示意图","alt":"日志持久化收集解决方案示意图","nro":123,"url":"../images/log-persistence-logstash.png","index":1,"caption_template":"图片 - _CAPTION_","label":"日志持久化收集解决方案示意图","attributes":{},"skip":false,"key":"5.5.6.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.6.1.3.1","level":"5.6.1.3","list_caption":"Figure: 创建存储","alt":"创建存储","nro":124,"url":"../images/create-gluster-storage.png","index":1,"caption_template":"图片 - _CAPTION_","label":"创建存储","attributes":{},"skip":false,"key":"5.6.1.3.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.6.1.3.2","level":"5.6.1.3","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":125,"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.6.1.3.2"},{"backlink":"practice/openebs.html#fig5.6.3.1","level":"5.6.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":126,"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.6.3.1"},{"backlink":"practice/openebs.html#fig5.6.3.2","level":"5.6.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":127,"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.6.3.2"},{"backlink":"practice/using-openebs-for-persistent-storage.html#fig5.6.3.1.1","level":"5.6.3.1","list_caption":"Figure: Kubernetes iSCSI架构","alt":"Kubernetes iSCSI架构","nro":128,"url":"../images/iscsi-on-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes iSCSI架构","attributes":{},"skip":false,"key":"5.6.3.1.1"},{"backlink":"practice/using-heapster-to-get-object-metrics.html#fig5.7.1.1.1","level":"5.7.1.1","list_caption":"Figure: Heapster架构图","alt":"Heapster架构图","nro":129,"url":"../images/heapster-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图","attributes":{},"skip":false,"key":"5.7.1.1.1"},{"backlink":"practice/prometheus.html#fig5.7.2.1","level":"5.7.2","list_caption":"Figure: Prometheus 架构图","alt":"Prometheus 架构图","nro":130,"url":"../images/prometheus-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Prometheus 架构图","attributes":{},"skip":false,"key":"5.7.2.1"},{"backlink":"practice/using-prometheus-to-monitor-kuberentes-cluster.html#fig5.7.2.1.1","level":"5.7.2.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":131,"url":"../images/kubernetes-prometheus-monitoring.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"5.7.2.1.1"},{"backlink":"practice/helm.html#fig5.8.1.1","level":"5.8.1","list_caption":"Figure: Helm chart源","alt":"Helm chart源","nro":132,"url":"../images/helm-charts-repository.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm chart源","attributes":{},"skip":false,"key":"5.8.1.1"},{"backlink":"practice/helm.html#fig5.8.1.2","level":"5.8.1","list_caption":"Figure: TODO应用的Web页面","alt":"TODO应用的Web页面","nro":133,"url":"../images/helm-mean-todo-aholic.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"TODO应用的Web页面","attributes":{},"skip":false,"key":"5.8.1.2"},{"backlink":"practice/create-private-charts-repo.html#fig5.8.2.1","level":"5.8.2","list_caption":"Figure: Helm monocular界面","alt":"Helm monocular界面","nro":134,"url":"../images/helm-monocular-jimmysong.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm monocular界面","attributes":{},"skip":false,"key":"5.8.2.1"},{"backlink":"practice/jenkins-ci-cd.html#fig5.9.1.1","level":"5.9.1","list_caption":"Figure: 基于Jenkins的持续集成与发布","alt":"基于Jenkins的持续集成与发布","nro":135,"url":"../images/kubernetes-jenkins-ci-cd.png","index":1,"caption_template":"图片 - _CAPTION_","label":"基于Jenkins的持续集成与发布","attributes":{},"skip":false,"key":"5.9.1.1"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.1","level":"5.9.2","list_caption":"Figure: OAuth注册","alt":"OAuth注册","nro":136,"url":"../images/github-oauth-register.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OAuth注册","attributes":{},"skip":false,"key":"5.9.2.1"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.2","level":"5.9.2","list_caption":"Figure: OAuth key","alt":"OAuth key","nro":137,"url":"../images/github-oauth-drone-key.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OAuth key","attributes":{},"skip":false,"key":"5.9.2.2"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.3","level":"5.9.2","list_caption":"Figure: Drone登陆界面","alt":"Drone登陆界面","nro":138,"url":"../images/drone-login-github.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Drone登陆界面","attributes":{},"skip":false,"key":"5.9.2.3"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.4","level":"5.9.2","list_caption":"Figure: Github启用repo设置","alt":"Github启用repo设置","nro":139,"url":"../images/drone-github-active.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Github启用repo设置","attributes":{},"skip":false,"key":"5.9.2.4"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.5","level":"5.9.2","list_caption":"Figure: Github单个repo设置","alt":"Github单个repo设置","nro":140,"url":"../images/drone-github-repo-setting.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Github单个repo设置","attributes":{},"skip":false,"key":"5.9.2.5"},{"backlink":"practice/manually-upgrade.html#fig5.10.1.1","level":"5.10.1","list_caption":"Figure: Kubernetes零宕机时间升级建议","alt":"Kubernetes零宕机时间升级建议","nro":141,"url":"../images/zero-downtime-kubernetes-upgrade-tips.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes零宕机时间升级建议","attributes":{},"skip":false,"key":"5.10.1.1"},{"backlink":"practice/manually-upgrade.html#fig5.10.1.2","level":"5.10.1","list_caption":"Figure: Kuberentes API对象的版本演进","alt":"Kuberentes API对象的版本演进","nro":142,"url":"../images/kubernetes-apversions-changes.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kuberentes API对象的版本演进","attributes":{},"skip":false,"key":"5.10.1.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.1","level":"5.10.2","list_caption":"Figure: 登陆界面","alt":"登陆界面","nro":143,"url":"../images/kubernetes-dashboard-1.7.1-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"登陆界面","attributes":{},"skip":false,"key":"5.10.2.1"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.2","level":"5.10.2","list_caption":"Figure: 首页","alt":"首页","nro":144,"url":"../images/kubernetes-dashboard-1.7.1-default-page.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"首页","attributes":{},"skip":false,"key":"5.10.2.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.3","level":"5.10.2","list_caption":"Figure: 用户空间","alt":"用户空间","nro":145,"url":"../images/kubernetes-dashboard-1.7.1-brand.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"用户空间","attributes":{},"skip":false,"key":"5.10.2.3"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.4","level":"5.10.2","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":146,"url":"../images/brand-kubeconfig-yaml.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"5.10.2.4"},{"backlink":"usecases/microservices.html#fig6.2.1","level":"6.2","list_caption":"Figure: 微服务关注的部分","alt":"微服务关注的部分","nro":147,"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":148,"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":149,"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":150,"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":151,"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":152,"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":153,"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的mindmap","alt":"Istio的mindmap","nro":154,"url":"../images/istio-mindmap.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Istio的mindmap","attributes":{},"skip":false,"key":"6.3.1.1"},{"backlink":"usecases/istio.html#fig6.3.1.2","level":"6.3.1","list_caption":"Figure: Istio架构图","alt":"Istio架构图","nro":155,"url":"../images/istio-arch-v0.1.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Istio架构图","attributes":{},"skip":false,"key":"6.3.1.2"},{"backlink":"usecases/istio.html#fig6.3.1.3","level":"6.3.1","list_caption":"Figure: Istio的控制平面和数据平面","alt":"Istio的控制平面和数据平面","nro":156,"url":"../images/istio-arch.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Istio的控制平面和数据平面","attributes":{},"skip":false,"key":"6.3.1.3"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.1","level":"6.3.1.1","list_caption":"Figure: BookInfo Sample应用架构图","alt":"BookInfo Sample应用架构图","nro":157,"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":158,"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":159,"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":160,"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":161,"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":162,"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":163,"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":164,"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":165,"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/istio-tutorial.html#fig6.3.1.7.1","level":"6.3.1.7","list_caption":"Figure: Jaeger query UI","alt":"Jaeger query UI","nro":166,"url":"../images/jaeger-query-ui.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Jaeger query UI","attributes":{},"skip":false,"key":"6.3.1.7.1"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.2","level":"6.3.1.7","list_caption":"Figure: 分布式追踪","alt":"分布式追踪","nro":167,"url":"../images/istio-tutorial-zipkin-trace.png","index":2,"caption_template":"图片 - _CAPTION_","label":"分布式追踪","attributes":{},"skip":false,"key":"6.3.1.7.2"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.3","level":"6.3.1.7","list_caption":"Figure: 依赖关系","alt":"依赖关系","nro":168,"url":"../images/istio-tutorial-zipkin-dependency.png","index":3,"caption_template":"图片 - _CAPTION_","label":"依赖关系","attributes":{},"skip":false,"key":"6.3.1.7.3"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.4","level":"6.3.1.7","list_caption":"Figure: 服务关系图和QPS","alt":"服务关系图和QPS","nro":169,"url":"../images/istio-tutorial-serivcegraph-dotviz.png","index":4,"caption_template":"图片 - _CAPTION_","label":"服务关系图和QPS","attributes":{},"skip":false,"key":"6.3.1.7.4"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.5","level":"6.3.1.7","list_caption":"Figure: Grafana 监控","alt":"Grafana 监控","nro":170,"url":"../images/istio-tutorial-grafana.png","index":5,"caption_template":"图片 - _CAPTION_","label":"Grafana 监控","attributes":{},"skip":false,"key":"6.3.1.7.5"},{"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":171,"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.html#fig6.3.2.2","level":"6.3.2","list_caption":"Figure: Linkerd 部署架构(图片来自https://buoyant.io/2016/10/14/a-service-mesh-for-kubernetes-part-ii-pods-are-great-until-theyre-not/)","alt":"Linkerd 部署架构(图片来自https://buoyant.io/2016/10/14/a-service-mesh-for-kubernetes-part-ii-pods-are-great-until-theyre-not/)","nro":172,"url":"https://buoyant.io/wp-content/uploads/2017/07/buoyant-k8s-daemonset-mesh.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Linkerd 部署架构(图片来自https://buoyant.io/2016/10/14/a-service-mesh-for-kubernetes-part-ii-pods-are-great-until-theyre-not/)","attributes":{},"skip":false,"key":"6.3.2.2"},{"backlink":"usecases/linkerd.html#fig6.3.2.3","level":"6.3.2","list_caption":"Figure: 基于 dtab 的路由规则配置阶段发布","alt":"基于 dtab 的路由规则配置阶段发布","nro":173,"url":"https://buoyant.io/wp-content/uploads/2017/07/buoyant-4_override.png","index":3,"caption_template":"图片 - _CAPTION_","label":"基于 dtab 的路由规则配置阶段发布","attributes":{},"skip":false,"key":"6.3.2.3"},{"backlink":"usecases/linkerd.html#fig6.3.2.4","level":"6.3.2","list_caption":"Figure: Linkerd ingress controller","alt":"Linkerd ingress controller","nro":174,"url":"https://buoyant.io/wp-content/uploads/2017/07/buoyant-k8s-hello-world-ingress-controller-1.png","index":4,"caption_template":"图片 - _CAPTION_","label":"Linkerd ingress controller","attributes":{},"skip":false,"key":"6.3.2.4"},{"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":175,"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":176,"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":177,"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":178,"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":179,"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":180,"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":181,"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":182,"url":"../images/conduit-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Conduit dashboard","attributes":{},"skip":false,"key":"6.3.3.2.1"},{"backlink":"usecases/envoy-front-proxy.html#fig6.3.4.1.1","level":"6.3.4.1","list_caption":"Figure: Front proxy 部署结构图(转自https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/front_proxy)","alt":"Front proxy 部署结构图(转自https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/front_proxy)","nro":183,"url":"../images/envoyproxy-docker-compose.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Front proxy 部署结构图(转自https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/front_proxy)","attributes":{},"skip":false,"key":"6.3.4.1.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":184,"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":185,"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":186,"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":187,"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":188,"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":189,"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":190,"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":191,"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":192,"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":193,"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":194,"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":195,"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":196,"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":197,"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":198,"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":199,"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":200,"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":201,"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":202,"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-04-22T13:34:05.608Z"},"basePath":"..","book":{"language":""}});
});
diff --git a/concepts/storage.html b/concepts/storage.html
index 308ebdb50..b388e13d4 100644
--- a/concepts/storage.html
+++ b/concepts/storage.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3679,7 +3694,7 @@
diff --git a/concepts/storageclass.html b/concepts/storageclass.html
index ca9e455a2..ff55fa234 100644
--- a/concepts/storageclass.html
+++ b/concepts/storageclass.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3819,7 +3834,7 @@
diff --git a/concepts/taint-and-toleration.html b/concepts/taint-and-toleration.html
index 92cf4c1c2..c04396610 100644
--- a/concepts/taint-and-toleration.html
+++ b/concepts/taint-and-toleration.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3721,7 +3736,7 @@ kubectl taint nodes node1 key2:NoSchedule-
diff --git a/concepts/traefik-ingress-controller.html b/concepts/traefik-ingress-controller.html
index e16e8e9f7..3fb898e13 100644
--- a/concepts/traefik-ingress-controller.html
+++ b/concepts/traefik-ingress-controller.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3732,7 +3747,7 @@
diff --git a/concepts/volume.html b/concepts/volume.html
index 5f6a2e14e..b2215b8ae 100644
--- a/concepts/volume.html
+++ b/concepts/volume.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -4259,7 +4274,7 @@
diff --git a/develop/advance-developer.html b/develop/advance-developer.html
index d2301a361..614daac28 100644
--- a/develop/advance-developer.html
+++ b/develop/advance-developer.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3757,7 +3772,7 @@
diff --git a/develop/client-go-sample.html b/develop/client-go-sample.html
index 2579508c5..52bb9ef3d 100644
--- a/develop/client-go-sample.html
+++ b/develop/client-go-sample.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3918,7 +3933,7 @@ Events:
diff --git a/develop/contribute.html b/develop/contribute.html
index 5f4358048..ae18ef321 100644
--- a/develop/contribute.html
+++ b/develop/contribute.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3686,7 +3701,7 @@
diff --git a/develop/developing-environment.html b/develop/developing-environment.html
index 421544801..de75d15b6 100644
--- a/develop/developing-environment.html
+++ b/develop/developing-environment.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3699,7 +3714,7 @@
diff --git a/develop/index.html b/develop/index.html
index f947ea644..81ade83ba 100644
--- a/develop/index.html
+++ b/develop/index.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3679,7 +3694,7 @@
diff --git a/develop/minikube.html b/develop/minikube.html
index 30e76b417..936c994c5 100644
--- a/develop/minikube.html
+++ b/develop/minikube.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3723,7 +3738,7 @@ Kubectl is now configured to use the cluster.
diff --git a/develop/operator.html b/develop/operator.html
index 4a00d0ecf..92c705066 100644
--- a/develop/operator.html
+++ b/develop/operator.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3713,7 +3728,7 @@
diff --git a/develop/sigs-and-working-group.html b/develop/sigs-and-working-group.html
index 20ed5c996..7fcda883a 100644
--- a/develop/sigs-and-working-group.html
+++ b/develop/sigs-and-working-group.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3723,7 +3738,7 @@
diff --git a/develop/testing.html b/develop/testing.html
index 6d875ae06..179bd12f5 100644
--- a/develop/testing.html
+++ b/develop/testing.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3798,7 +3813,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 45e92b392..da9acad00 100644
--- a/develop/using-vagrant-and-virtualbox-for-development.html
+++ b/develop/using-vagrant-and-virtualbox-for-development.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3790,7 +3805,7 @@ kubectl get nodes
diff --git a/guide/access-cluster.html b/guide/access-cluster.html
index 3f7c3e7e6..e03239555 100644
--- a/guide/access-cluster.html
+++ b/guide/access-cluster.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3889,7 +3904,7 @@ $ curl $APISERVER /api --header
diff --git a/guide/access-kubernetes-cluster.html b/guide/access-kubernetes-cluster.html
index c17debfea..265d3537d 100644
--- a/guide/access-kubernetes-cluster.html
+++ b/guide/access-kubernetes-cluster.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3685,7 +3700,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 183c2c5bf..152bf32f6 100644
--- a/guide/accessing-kubernetes-pods-from-outside-of-the-cluster.html
+++ b/guide/accessing-kubernetes-pods-from-outside-of-the-cluster.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3801,7 +3816,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 c00e3ae8d..1d7935b1d 100644
--- a/guide/application-development-deployment-flow.html
+++ b/guide/application-development-deployment-flow.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3680,7 +3695,7 @@
diff --git a/guide/auth-with-kubeconfig-or-token.html b/guide/auth-with-kubeconfig-or-token.html
index e9a1c9dd5..644e1857c 100644
--- a/guide/auth-with-kubeconfig-or-token.html
+++ b/guide/auth-with-kubeconfig-or-token.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3765,7 +3780,7 @@ ca.crt: 1310 bytes
diff --git a/guide/authenticate-across-clusters-kubeconfig.html b/guide/authenticate-across-clusters-kubeconfig.html
index b8f0a4c84..caa8175b6 100644
--- a/guide/authenticate-across-clusters-kubeconfig.html
+++ b/guide/authenticate-across-clusters-kubeconfig.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3904,7 +3919,7 @@ $ kubectl config use-context federal-context
diff --git a/guide/authentication.html b/guide/authentication.html
index d3caff1ec..7ea248c59 100644
--- a/guide/authentication.html
+++ b/guide/authentication.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -4180,7 +4195,7 @@ node "mynode" draine
diff --git a/guide/cabin-mobile-dashboard-for-kubernetes.html b/guide/cabin-mobile-dashboard-for-kubernetes.html
index f92256c51..90cc8a5c5 100644
--- a/guide/cabin-mobile-dashboard-for-kubernetes.html
+++ b/guide/cabin-mobile-dashboard-for-kubernetes.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3691,7 +3706,7 @@
diff --git a/guide/cluster-security-management.html b/guide/cluster-security-management.html
index 83a89bc32..fa55336f0 100644
--- a/guide/cluster-security-management.html
+++ b/guide/cluster-security-management.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3679,7 +3694,7 @@
diff --git a/guide/command-usage.html b/guide/command-usage.html
index 212462b2f..24480a6b0 100644
--- a/guide/command-usage.html
+++ b/guide/command-usage.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3679,7 +3694,7 @@
diff --git a/guide/configure-liveness-readiness-probes.html b/guide/configure-liveness-readiness-probes.html
index fa55ea7dc..df0673996 100644
--- a/guide/configure-liveness-readiness-probes.html
+++ b/guide/configure-liveness-readiness-probes.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3868,7 +3883,7 @@ the Container has been restarted:
diff --git a/guide/configure-pod-service-account.html b/guide/configure-pod-service-account.html
index facb6d5d2..3204d3fe7 100644
--- a/guide/configure-pod-service-account.html
+++ b/guide/configure-pod-service-account.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3826,7 +3841,7 @@ serviceaccounts/default
diff --git a/guide/connecting-to-applications-port-forward.html b/guide/connecting-to-applications-port-forward.html
index 1ff4f6b13..e91ea4acb 100644
--- a/guide/connecting-to-applications-port-forward.html
+++ b/guide/connecting-to-applications-port-forward.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3718,7 +3733,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 3efa3d435..9aaa91212 100644
--- a/guide/deploy-applications-in-kubernetes.html
+++ b/guide/deploy-applications-in-kubernetes.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3778,7 +3793,7 @@
diff --git a/guide/docker-cli-to-kubectl.html b/guide/docker-cli-to-kubectl.html
index 02055c025..9ef21ddf8 100644
--- a/guide/docker-cli-to-kubectl.html
+++ b/guide/docker-cli-to-kubectl.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3855,7 +3870,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 330672c51..69ddfbfc3 100644
--- a/guide/index.html
+++ b/guide/index.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3683,7 +3698,7 @@
diff --git a/guide/ip-masq-agent.html b/guide/ip-masq-agent.html
index e0fbab100..8669903e5 100644
--- a/guide/ip-masq-agent.html
+++ b/guide/ip-masq-agent.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3743,7 +3758,7 @@ MASQUERADE all -- anywhere anywhere /* ip-masq-agent:
diff --git a/guide/kubectl-cheatsheet.html b/guide/kubectl-cheatsheet.html
index 3dd6b4119..c18a8ee91 100644
--- a/guide/kubectl-cheatsheet.html
+++ b/guide/kubectl-cheatsheet.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -4085,7 +4100,7 @@ $ kubectl taint nodes foo dedicated= special-
diff --git a/guide/kubectl-user-authentication-authorization.html b/guide/kubectl-user-authentication-authorization.html
index 675ce3618..9c631602e 100644
--- a/guide/kubectl-user-authentication-authorization.html
+++ b/guide/kubectl-user-authentication-authorization.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3777,7 +3792,7 @@ No resources found.
diff --git a/guide/kubelet-authentication-authorization.html b/guide/kubelet-authentication-authorization.html
index 66fb3e72c..a34044512 100644
--- a/guide/kubelet-authentication-authorization.html
+++ b/guide/kubelet-authentication-authorization.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3791,7 +3806,7 @@
diff --git a/guide/kubernator-kubernetes-ui.html b/guide/kubernator-kubernetes-ui.html
index a9d0bbe51..4b7b4c463 100644
--- a/guide/kubernator-kubernetes-ui.html
+++ b/guide/kubernator-kubernetes-ui.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3692,7 +3707,7 @@ kubectl proxy
diff --git a/guide/kubernetes-desktop-client.html b/guide/kubernetes-desktop-client.html
index b38cb72f9..1bcf03a5f 100644
--- a/guide/kubernetes-desktop-client.html
+++ b/guide/kubernetes-desktop-client.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3688,7 +3703,7 @@
diff --git a/guide/managing-tls-in-a-cluster.html b/guide/managing-tls-in-a-cluster.html
index a647f7ab1..ec9981f36 100644
--- a/guide/managing-tls-in-a-cluster.html
+++ b/guide/managing-tls-in-a-cluster.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3769,7 +3784,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 4bd6980be..9b53cbae8 100644
--- a/guide/migrating-hadoop-yarn-to-kubernetes.html
+++ b/guide/migrating-hadoop-yarn-to-kubernetes.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3849,7 +3864,7 @@ kubectl create configmap spark-config \
diff --git a/guide/resource-configuration.html b/guide/resource-configuration.html
index 3d48d9618..c90a02a02 100644
--- a/guide/resource-configuration.html
+++ b/guide/resource-configuration.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3679,7 +3694,7 @@
diff --git a/guide/resource-quota-management.html b/guide/resource-quota-management.html
index d1af3905a..6054687a6 100644
--- a/guide/resource-quota-management.html
+++ b/guide/resource-quota-management.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3751,7 +3766,7 @@
diff --git a/guide/secret-configuration.html b/guide/secret-configuration.html
index 9b2e0b97d..33e13fbe7 100644
--- a/guide/secret-configuration.html
+++ b/guide/secret-configuration.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -4100,7 +4115,7 @@ secret "test-db-secret" created
diff --git a/guide/service-access-application-cluster.html b/guide/service-access-application-cluster.html
index 78008480e..c139d4528 100644
--- a/guide/service-access-application-cluster.html
+++ b/guide/service-access-application-cluster.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3749,7 +3764,7 @@ kubectl describe replicasets
diff --git a/guide/tls-bootstrapping.html b/guide/tls-bootstrapping.html
index 4d7a77dc9..a28f28a54 100644
--- a/guide/tls-bootstrapping.html
+++ b/guide/tls-bootstrapping.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3796,7 +3811,7 @@
diff --git a/guide/using-etcdctl-to-access-kubernetes-data.html b/guide/using-etcdctl-to-access-kubernetes-data.html
index 44327278b..81b0dea61 100644
--- a/guide/using-etcdctl-to-access-kubernetes-data.html
+++ b/guide/using-etcdctl-to-access-kubernetes-data.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3848,7 +3863,7 @@ thirdpartyresources
diff --git a/guide/using-kubectl.html b/guide/using-kubectl.html
index d379e5fa8..d3114c981 100644
--- a/guide/using-kubectl.html
+++ b/guide/using-kubectl.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3732,7 +3747,7 @@
diff --git a/guide/using-statefulset.html b/guide/using-statefulset.html
index ef131d70e..9cf1362d4 100644
--- a/guide/using-statefulset.html
+++ b/guide/using-statefulset.html
@@ -1157,6 +1157,21 @@
+
+
+
+
+
+
+
+ 3.10.4.
+
+ Service Catalog
+
+
+
+
+
@@ -3973,7 +3988,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/pause-container.html#fig3.4.4.1","level":"3.4.4","list_caption":"Figure: Pause容器","alt":"Pause容器","nro":58,"url":"../images/pause-container.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Pause容器","attributes":{},"skip":false,"key":"3.4.4.1"},{"backlink":"concepts/pod-lifecycle.html#fig3.4.6.1","level":"3.4.6","list_caption":"Figure: Pod的生命周期示意图(图片来自网络)","alt":"Pod的生命周期示意图(图片来自网络)","nro":59,"url":"../images/kubernetes-pod-life-cycle.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Pod的生命周期示意图(图片来自网络)","attributes":{},"skip":false,"key":"3.4.6.1"},{"backlink":"concepts/label.html#fig3.5.3.1","level":"3.5.3","list_caption":"Figure: label示意图","alt":"label示意图","nro":60,"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":61,"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":62,"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":63,"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":64,"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":65,"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":66,"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":67,"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":68,"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":69,"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":70,"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":71,"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":72,"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":73,"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":74,"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":75,"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":76,"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: 流程图","alt":"流程图","nro":77,"url":"../images/how-to-use-kubernetes-with-istio.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"流程图","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: API","alt":"API","nro":78,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"API","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: wercker构建页面","alt":"wercker构建页面","nro":79,"url":"../images/k8s-app-monitor-agent-wercker.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"wercker构建页面","attributes":{},"skip":false,"key":"4.6.1.3"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.4","level":"4.6.1","list_caption":"Figure: 图表","alt":"图表","nro":80,"url":"../images/k8s-app-monitor-agent.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"图表","attributes":{},"skip":false,"key":"4.6.1.4"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.5","level":"4.6.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":81,"url":"../images/k8s-app-monitor-istio-grafana.png","index":5,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"4.6.1.5"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.6","level":"4.6.1","list_caption":"Figure: servicegraph页面","alt":"servicegraph页面","nro":82,"url":"../images/k8s-app-monitor-istio-servicegraph-dotviz.png","index":6,"caption_template":"图片 - _CAPTION_","label":"servicegraph页面","attributes":{},"skip":false,"key":"4.6.1.6"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.7","level":"4.6.1","list_caption":"Figure: Zipkin页面","alt":"Zipkin页面","nro":83,"url":"../images/k8s-app-monitor-istio-zipkin.png","index":7,"caption_template":"图片 - _CAPTION_","label":"Zipkin页面","attributes":{},"skip":false,"key":"4.6.1.7"},{"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":84,"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":85,"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":86,"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":87,"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":88,"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":89,"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":90,"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":91,"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":92,"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":93,"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":94,"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":95,"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.4.1.1","level":"5.4.1","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":96,"url":"../images/traefik-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.4.1.1"},{"backlink":"practice/traefik-ingress-installation.html#fig5.4.1.2","level":"5.4.1","list_caption":"Figure: traefik-nginx","alt":"traefik-nginx","nro":97,"url":"../images/traefik-nginx.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"traefik-nginx","attributes":{},"skip":false,"key":"5.4.1.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.4.1.3","level":"5.4.1","list_caption":"Figure: traefik-guestbook","alt":"traefik-guestbook","nro":98,"url":"../images/traefik-guestbook.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"traefik-guestbook","attributes":{},"skip":false,"key":"5.4.1.3"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.1","level":"5.4.2","list_caption":"Figure: 使用dashboard来扩容","alt":"使用dashboard来扩容","nro":99,"url":"../images/dashbaord-scale.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用dashboard来扩容","attributes":{},"skip":false,"key":"5.4.2.1"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.2","level":"5.4.2","list_caption":"Figure: Traefik的UI","alt":"Traefik的UI","nro":100,"url":"../images/traefik-dashboard-locust.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Traefik的UI","attributes":{},"skip":false,"key":"5.4.2.2"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.3","level":"5.4.2","list_caption":"Figure: Locust启动界面","alt":"Locust启动界面","nro":101,"url":"../images/locust-start-swarming.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Locust启动界面","attributes":{},"skip":false,"key":"5.4.2.3"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.4","level":"5.4.2","list_caption":"Figure: Dashboard查看页面","alt":"Dashboard查看页面","nro":102,"url":"../images/sample-webapp-rc.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Dashboard查看页面","attributes":{},"skip":false,"key":"5.4.2.4"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.5","level":"5.4.2","list_caption":"Figure: Locust测试结果页面","alt":"Locust测试结果页面","nro":103,"url":"../images/locust-dashboard.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Locust测试结果页面","attributes":{},"skip":false,"key":"5.4.2.5"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.4.3.1","level":"5.4.3","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":104,"url":"../images/kubenetes-e2e-test.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.4.3.1"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.4.3.2","level":"5.4.3","list_caption":"Figure: locust测试页面","alt":"locust测试页面","nro":105,"url":"../images/kubernetes-locust-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"locust测试页面","attributes":{},"skip":false,"key":"5.4.3.2"},{"backlink":"practice/edge-node-configuration.html#fig5.4.4.1","level":"5.4.4","list_caption":"Figure: 边缘节点架构","alt":"边缘节点架构","nro":106,"url":"../images/kubernetes-edge-node-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"边缘节点架构","attributes":{},"skip":false,"key":"5.4.4.1"},{"backlink":"practice/edge-node-configuration.html#fig5.4.4.2","level":"5.4.4","list_caption":"Figure: 使用域名来访问Kubernetes中的服务","alt":"使用域名来访问Kubernetes中的服务","nro":107,"url":"../images/accessing-kubernetes-services-with-dns-name.png","index":2,"caption_template":"图片 - _CAPTION_","label":"使用域名来访问Kubernetes中的服务","attributes":{},"skip":false,"key":"5.4.4.2"},{"backlink":"practice/configuring-dns.html#fig5.4.6.1.1","level":"5.4.6.1","list_caption":"Figure: DNS lookup flow","alt":"DNS lookup flow","nro":108,"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.4.6.1.1"},{"backlink":"practice/master-ha.html#fig5.5.1.1","level":"5.5.1","list_caption":"Figure: Master HA架构图","alt":"Master HA架构图","nro":109,"url":"../images/master-ha.JPG","index":1,"caption_template":"图片 - _CAPTION_","label":"Master HA架构图","attributes":{},"skip":false,"key":"5.5.1.1"},{"backlink":"practice/app-log-collection.html#fig5.5.3.1","level":"5.5.3","list_caption":"Figure: filebeat日志收集架构图","alt":"filebeat日志收集架构图","nro":110,"url":"../images/filebeat-log-collector.png","index":1,"caption_template":"图片 - _CAPTION_","label":"filebeat日志收集架构图","attributes":{},"skip":false,"key":"5.5.3.1"},{"backlink":"practice/app-log-collection.html#fig5.5.3.2","level":"5.5.3","list_caption":"Figure: Kibana页面","alt":"Kibana页面","nro":111,"url":"../images/filebeat-docker-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kibana页面","attributes":{},"skip":false,"key":"5.5.3.2"},{"backlink":"practice/app-log-collection.html#fig5.5.3.3","level":"5.5.3","list_caption":"Figure: filebeat收集的日志详细信息","alt":"filebeat收集的日志详细信息","nro":112,"url":"../images/kubernetes-filebeat-detail.png","index":3,"caption_template":"图片 - _CAPTION_","label":"filebeat收集的日志详细信息","attributes":{},"skip":false,"key":"5.5.3.3"},{"backlink":"practice/monitor.html#fig5.5.5.1","level":"5.5.5","list_caption":"Figure: Kubernetes集群中的监控","alt":"Kubernetes集群中的监控","nro":113,"url":"../images/monitoring-in-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes集群中的监控","attributes":{},"skip":false,"key":"5.5.5.1"},{"backlink":"practice/monitor.html#fig5.5.5.2","level":"5.5.5","list_caption":"Figure: kubernetes的容器命名规则示意图","alt":"kubernetes的容器命名规则示意图","nro":114,"url":"../images/kubernetes-container-naming-rule.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"kubernetes的容器命名规则示意图","attributes":{},"skip":false,"key":"5.5.5.2"},{"backlink":"practice/monitor.html#fig5.5.5.3","level":"5.5.5","list_caption":"Figure: Heapster架构图(改进版)","alt":"Heapster架构图(改进版)","nro":115,"url":"../images/kubernetes-heapster-monitoring.png","index":3,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图(改进版)","attributes":{},"skip":false,"key":"5.5.5.3"},{"backlink":"practice/monitor.html#fig5.5.5.4","level":"5.5.5","list_caption":"Figure: 应用监控架构图","alt":"应用监控架构图","nro":116,"url":"../images/kubernetes-app-monitoring.png","index":4,"caption_template":"图片 - _CAPTION_","label":"应用监控架构图","attributes":{},"skip":false,"key":"5.5.5.4"},{"backlink":"practice/monitor.html#fig5.5.5.5","level":"5.5.5","list_caption":"Figure: 应用拓扑图","alt":"应用拓扑图","nro":117,"url":"../images/weave-scope-service-topology.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"应用拓扑图","attributes":{},"skip":false,"key":"5.5.5.5"},{"backlink":"practice/data-persistence-problem.html#fig5.5.6.1","level":"5.5.6","list_caption":"Figure: 日志持久化收集解决方案示意图","alt":"日志持久化收集解决方案示意图","nro":118,"url":"../images/log-persistence-logstash.png","index":1,"caption_template":"图片 - _CAPTION_","label":"日志持久化收集解决方案示意图","attributes":{},"skip":false,"key":"5.5.6.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.6.1.3.1","level":"5.6.1.3","list_caption":"Figure: 创建存储","alt":"创建存储","nro":119,"url":"../images/create-gluster-storage.png","index":1,"caption_template":"图片 - _CAPTION_","label":"创建存储","attributes":{},"skip":false,"key":"5.6.1.3.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.6.1.3.2","level":"5.6.1.3","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":120,"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.6.1.3.2"},{"backlink":"practice/openebs.html#fig5.6.3.1","level":"5.6.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":121,"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.6.3.1"},{"backlink":"practice/openebs.html#fig5.6.3.2","level":"5.6.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":122,"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.6.3.2"},{"backlink":"practice/using-openebs-for-persistent-storage.html#fig5.6.3.1.1","level":"5.6.3.1","list_caption":"Figure: Kubernetes iSCSI架构","alt":"Kubernetes iSCSI架构","nro":123,"url":"../images/iscsi-on-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes iSCSI架构","attributes":{},"skip":false,"key":"5.6.3.1.1"},{"backlink":"practice/using-heapster-to-get-object-metrics.html#fig5.7.1.1.1","level":"5.7.1.1","list_caption":"Figure: Heapster架构图","alt":"Heapster架构图","nro":124,"url":"../images/heapster-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图","attributes":{},"skip":false,"key":"5.7.1.1.1"},{"backlink":"practice/prometheus.html#fig5.7.2.1","level":"5.7.2","list_caption":"Figure: Prometheus 架构图","alt":"Prometheus 架构图","nro":125,"url":"../images/prometheus-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Prometheus 架构图","attributes":{},"skip":false,"key":"5.7.2.1"},{"backlink":"practice/using-prometheus-to-monitor-kuberentes-cluster.html#fig5.7.2.1.1","level":"5.7.2.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":126,"url":"../images/kubernetes-prometheus-monitoring.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"5.7.2.1.1"},{"backlink":"practice/helm.html#fig5.8.1.1","level":"5.8.1","list_caption":"Figure: Helm chart源","alt":"Helm chart源","nro":127,"url":"../images/helm-charts-repository.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm chart源","attributes":{},"skip":false,"key":"5.8.1.1"},{"backlink":"practice/helm.html#fig5.8.1.2","level":"5.8.1","list_caption":"Figure: TODO应用的Web页面","alt":"TODO应用的Web页面","nro":128,"url":"../images/helm-mean-todo-aholic.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"TODO应用的Web页面","attributes":{},"skip":false,"key":"5.8.1.2"},{"backlink":"practice/create-private-charts-repo.html#fig5.8.2.1","level":"5.8.2","list_caption":"Figure: Helm monocular界面","alt":"Helm monocular界面","nro":129,"url":"../images/helm-monocular-jimmysong.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm monocular界面","attributes":{},"skip":false,"key":"5.8.2.1"},{"backlink":"practice/jenkins-ci-cd.html#fig5.9.1.1","level":"5.9.1","list_caption":"Figure: 基于Jenkins的持续集成与发布","alt":"基于Jenkins的持续集成与发布","nro":130,"url":"../images/kubernetes-jenkins-ci-cd.png","index":1,"caption_template":"图片 - _CAPTION_","label":"基于Jenkins的持续集成与发布","attributes":{},"skip":false,"key":"5.9.1.1"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.1","level":"5.9.2","list_caption":"Figure: OAuth注册","alt":"OAuth注册","nro":131,"url":"../images/github-oauth-register.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OAuth注册","attributes":{},"skip":false,"key":"5.9.2.1"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.2","level":"5.9.2","list_caption":"Figure: OAuth key","alt":"OAuth key","nro":132,"url":"../images/github-oauth-drone-key.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OAuth key","attributes":{},"skip":false,"key":"5.9.2.2"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.3","level":"5.9.2","list_caption":"Figure: Drone登陆界面","alt":"Drone登陆界面","nro":133,"url":"../images/drone-login-github.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Drone登陆界面","attributes":{},"skip":false,"key":"5.9.2.3"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.4","level":"5.9.2","list_caption":"Figure: Github启用repo设置","alt":"Github启用repo设置","nro":134,"url":"../images/drone-github-active.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Github启用repo设置","attributes":{},"skip":false,"key":"5.9.2.4"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.5","level":"5.9.2","list_caption":"Figure: Github单个repo设置","alt":"Github单个repo设置","nro":135,"url":"../images/drone-github-repo-setting.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Github单个repo设置","attributes":{},"skip":false,"key":"5.9.2.5"},{"backlink":"practice/manually-upgrade.html#fig5.10.1.1","level":"5.10.1","list_caption":"Figure: Kubernetes零宕机时间升级建议","alt":"Kubernetes零宕机时间升级建议","nro":136,"url":"../images/zero-downtime-kubernetes-upgrade-tips.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes零宕机时间升级建议","attributes":{},"skip":false,"key":"5.10.1.1"},{"backlink":"practice/manually-upgrade.html#fig5.10.1.2","level":"5.10.1","list_caption":"Figure: Kuberentes API对象的版本演进","alt":"Kuberentes API对象的版本演进","nro":137,"url":"../images/kubernetes-apversions-changes.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kuberentes API对象的版本演进","attributes":{},"skip":false,"key":"5.10.1.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.1","level":"5.10.2","list_caption":"Figure: 登陆界面","alt":"登陆界面","nro":138,"url":"../images/kubernetes-dashboard-1.7.1-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"登陆界面","attributes":{},"skip":false,"key":"5.10.2.1"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.2","level":"5.10.2","list_caption":"Figure: 首页","alt":"首页","nro":139,"url":"../images/kubernetes-dashboard-1.7.1-default-page.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"首页","attributes":{},"skip":false,"key":"5.10.2.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.3","level":"5.10.2","list_caption":"Figure: 用户空间","alt":"用户空间","nro":140,"url":"../images/kubernetes-dashboard-1.7.1-brand.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"用户空间","attributes":{},"skip":false,"key":"5.10.2.3"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.4","level":"5.10.2","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":141,"url":"../images/brand-kubeconfig-yaml.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"5.10.2.4"},{"backlink":"usecases/microservices.html#fig6.2.1","level":"6.2","list_caption":"Figure: 微服务关注的部分","alt":"微服务关注的部分","nro":142,"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":143,"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":144,"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":145,"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":146,"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":147,"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":148,"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的mindmap","alt":"Istio的mindmap","nro":149,"url":"../images/istio-mindmap.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Istio的mindmap","attributes":{},"skip":false,"key":"6.3.1.1"},{"backlink":"usecases/istio.html#fig6.3.1.2","level":"6.3.1","list_caption":"Figure: Istio架构图","alt":"Istio架构图","nro":150,"url":"../images/istio-arch-v0.1.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Istio架构图","attributes":{},"skip":false,"key":"6.3.1.2"},{"backlink":"usecases/istio.html#fig6.3.1.3","level":"6.3.1","list_caption":"Figure: Istio的控制平面和数据平面","alt":"Istio的控制平面和数据平面","nro":151,"url":"../images/istio-arch.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Istio的控制平面和数据平面","attributes":{},"skip":false,"key":"6.3.1.3"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.1","level":"6.3.1.1","list_caption":"Figure: BookInfo Sample应用架构图","alt":"BookInfo Sample应用架构图","nro":152,"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":153,"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":154,"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":155,"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":156,"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":157,"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":158,"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":159,"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":160,"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/istio-tutorial.html#fig6.3.1.7.1","level":"6.3.1.7","list_caption":"Figure: Jaeger query UI","alt":"Jaeger query UI","nro":161,"url":"../images/jaeger-query-ui.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Jaeger query UI","attributes":{},"skip":false,"key":"6.3.1.7.1"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.2","level":"6.3.1.7","list_caption":"Figure: 分布式追踪","alt":"分布式追踪","nro":162,"url":"../images/istio-tutorial-zipkin-trace.png","index":2,"caption_template":"图片 - _CAPTION_","label":"分布式追踪","attributes":{},"skip":false,"key":"6.3.1.7.2"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.3","level":"6.3.1.7","list_caption":"Figure: 依赖关系","alt":"依赖关系","nro":163,"url":"../images/istio-tutorial-zipkin-dependency.png","index":3,"caption_template":"图片 - _CAPTION_","label":"依赖关系","attributes":{},"skip":false,"key":"6.3.1.7.3"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.4","level":"6.3.1.7","list_caption":"Figure: 服务关系图和QPS","alt":"服务关系图和QPS","nro":164,"url":"../images/istio-tutorial-serivcegraph-dotviz.png","index":4,"caption_template":"图片 - _CAPTION_","label":"服务关系图和QPS","attributes":{},"skip":false,"key":"6.3.1.7.4"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.5","level":"6.3.1.7","list_caption":"Figure: Grafana 监控","alt":"Grafana 监控","nro":165,"url":"../images/istio-tutorial-grafana.png","index":5,"caption_template":"图片 - _CAPTION_","label":"Grafana 监控","attributes":{},"skip":false,"key":"6.3.1.7.5"},{"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":166,"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.html#fig6.3.2.2","level":"6.3.2","list_caption":"Figure: Linkerd 部署架构(图片来自https://buoyant.io/2016/10/14/a-service-mesh-for-kubernetes-part-ii-pods-are-great-until-theyre-not/)","alt":"Linkerd 部署架构(图片来自https://buoyant.io/2016/10/14/a-service-mesh-for-kubernetes-part-ii-pods-are-great-until-theyre-not/)","nro":167,"url":"https://buoyant.io/wp-content/uploads/2017/07/buoyant-k8s-daemonset-mesh.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Linkerd 部署架构(图片来自https://buoyant.io/2016/10/14/a-service-mesh-for-kubernetes-part-ii-pods-are-great-until-theyre-not/)","attributes":{},"skip":false,"key":"6.3.2.2"},{"backlink":"usecases/linkerd.html#fig6.3.2.3","level":"6.3.2","list_caption":"Figure: 基于 dtab 的路由规则配置阶段发布","alt":"基于 dtab 的路由规则配置阶段发布","nro":168,"url":"https://buoyant.io/wp-content/uploads/2017/07/buoyant-4_override.png","index":3,"caption_template":"图片 - _CAPTION_","label":"基于 dtab 的路由规则配置阶段发布","attributes":{},"skip":false,"key":"6.3.2.3"},{"backlink":"usecases/linkerd.html#fig6.3.2.4","level":"6.3.2","list_caption":"Figure: Linkerd ingress controller","alt":"Linkerd ingress controller","nro":169,"url":"https://buoyant.io/wp-content/uploads/2017/07/buoyant-k8s-hello-world-ingress-controller-1.png","index":4,"caption_template":"图片 - _CAPTION_","label":"Linkerd ingress controller","attributes":{},"skip":false,"key":"6.3.2.4"},{"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":170,"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":171,"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":172,"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":173,"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":174,"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":175,"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":176,"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":177,"url":"../images/conduit-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Conduit dashboard","attributes":{},"skip":false,"key":"6.3.3.2.1"},{"backlink":"usecases/envoy-front-proxy.html#fig6.3.4.1.1","level":"6.3.4.1","list_caption":"Figure: Front proxy 部署结构图(转自https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/front_proxy)","alt":"Front proxy 部署结构图(转自https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/front_proxy)","nro":178,"url":"../images/envoyproxy-docker-compose.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Front proxy 部署结构图(转自https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/front_proxy)","attributes":{},"skip":false,"key":"6.3.4.1.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":179,"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":180,"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":181,"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":182,"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":183,"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":184,"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":185,"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":186,"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":187,"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":188,"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":189,"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":190,"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":191,"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":192,"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":193,"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":194,"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":195,"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":196,"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":197,"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-04-20T08:39:54.677Z"},"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/pause-container.html#fig3.4.4.1","level":"3.4.4","list_caption":"Figure: Pause容器","alt":"Pause容器","nro":58,"url":"../images/pause-container.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Pause容器","attributes":{},"skip":false,"key":"3.4.4.1"},{"backlink":"concepts/pod-lifecycle.html#fig3.4.6.1","level":"3.4.6","list_caption":"Figure: Pod的生命周期示意图(图片来自网络)","alt":"Pod的生命周期示意图(图片来自网络)","nro":59,"url":"../images/kubernetes-pod-life-cycle.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Pod的生命周期示意图(图片来自网络)","attributes":{},"skip":false,"key":"3.4.6.1"},{"backlink":"concepts/label.html#fig3.5.3.1","level":"3.5.3","list_caption":"Figure: label示意图","alt":"label示意图","nro":60,"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":61,"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":62,"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":63,"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":64,"url":"../images/services-iptables-overview.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"iptables代理模式下Service概览图","attributes":{},"skip":false,"key":"3.7.1.2"},{"backlink":"concepts/service-catalog.html#fig3.10.4.1","level":"3.10.4","list_caption":"Figure: Service Catalog Architecture","alt":"Service Catalog Architecture","nro":65,"url":"../images/service-catalog-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Service Catalog Architecture","attributes":{},"skip":false,"key":"3.10.4.1"},{"backlink":"concepts/service-catalog.html#fig3.10.4.2","level":"3.10.4","list_caption":"Figure: List Services","alt":"List Services","nro":66,"url":"../images/service-catalog-list.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"List Services","attributes":{},"skip":false,"key":"3.10.4.2"},{"backlink":"concepts/service-catalog.html#fig3.10.4.3","level":"3.10.4","list_caption":"Figure: Provision a Service","alt":"Provision a Service","nro":67,"url":"../images/service-catalog-provision.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Provision a Service","attributes":{},"skip":false,"key":"3.10.4.3"},{"backlink":"concepts/service-catalog.html#fig3.10.4.4","level":"3.10.4","list_caption":"Figure: Bind to a managed service","alt":"Bind to a managed service","nro":68,"url":"../images/service-catalog-bind.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Bind to a managed service","attributes":{},"skip":false,"key":"3.10.4.4"},{"backlink":"concepts/service-catalog.html#fig3.10.4.5","level":"3.10.4","list_caption":"Figure: Map connection credentials","alt":"Map connection credentials","nro":69,"url":"../images/service-catalog-map.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Map connection credentials","attributes":{},"skip":false,"key":"3.10.4.5"},{"backlink":"guide/using-kubectl.html#fig4.3.2.1","level":"4.3.2","list_caption":"Figure: kubectl cheatsheet","alt":"kubectl cheatsheet","nro":70,"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":71,"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":72,"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":73,"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":74,"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":75,"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":76,"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":77,"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":78,"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":79,"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":80,"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":81,"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: 流程图","alt":"流程图","nro":82,"url":"../images/how-to-use-kubernetes-with-istio.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"流程图","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: API","alt":"API","nro":83,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"API","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: wercker构建页面","alt":"wercker构建页面","nro":84,"url":"../images/k8s-app-monitor-agent-wercker.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"wercker构建页面","attributes":{},"skip":false,"key":"4.6.1.3"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.4","level":"4.6.1","list_caption":"Figure: 图表","alt":"图表","nro":85,"url":"../images/k8s-app-monitor-agent.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"图表","attributes":{},"skip":false,"key":"4.6.1.4"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.5","level":"4.6.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":86,"url":"../images/k8s-app-monitor-istio-grafana.png","index":5,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"4.6.1.5"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.6","level":"4.6.1","list_caption":"Figure: servicegraph页面","alt":"servicegraph页面","nro":87,"url":"../images/k8s-app-monitor-istio-servicegraph-dotviz.png","index":6,"caption_template":"图片 - _CAPTION_","label":"servicegraph页面","attributes":{},"skip":false,"key":"4.6.1.6"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig4.6.1.7","level":"4.6.1","list_caption":"Figure: Zipkin页面","alt":"Zipkin页面","nro":88,"url":"../images/k8s-app-monitor-istio-zipkin.png","index":7,"caption_template":"图片 - _CAPTION_","label":"Zipkin页面","attributes":{},"skip":false,"key":"4.6.1.7"},{"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":89,"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":90,"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":91,"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":92,"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":93,"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":94,"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":95,"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":96,"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":97,"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":98,"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":99,"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":100,"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.4.1.1","level":"5.4.1","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":101,"url":"../images/traefik-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.4.1.1"},{"backlink":"practice/traefik-ingress-installation.html#fig5.4.1.2","level":"5.4.1","list_caption":"Figure: traefik-nginx","alt":"traefik-nginx","nro":102,"url":"../images/traefik-nginx.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"traefik-nginx","attributes":{},"skip":false,"key":"5.4.1.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.4.1.3","level":"5.4.1","list_caption":"Figure: traefik-guestbook","alt":"traefik-guestbook","nro":103,"url":"../images/traefik-guestbook.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"traefik-guestbook","attributes":{},"skip":false,"key":"5.4.1.3"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.1","level":"5.4.2","list_caption":"Figure: 使用dashboard来扩容","alt":"使用dashboard来扩容","nro":104,"url":"../images/dashbaord-scale.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用dashboard来扩容","attributes":{},"skip":false,"key":"5.4.2.1"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.2","level":"5.4.2","list_caption":"Figure: Traefik的UI","alt":"Traefik的UI","nro":105,"url":"../images/traefik-dashboard-locust.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Traefik的UI","attributes":{},"skip":false,"key":"5.4.2.2"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.3","level":"5.4.2","list_caption":"Figure: Locust启动界面","alt":"Locust启动界面","nro":106,"url":"../images/locust-start-swarming.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Locust启动界面","attributes":{},"skip":false,"key":"5.4.2.3"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.4","level":"5.4.2","list_caption":"Figure: Dashboard查看页面","alt":"Dashboard查看页面","nro":107,"url":"../images/sample-webapp-rc.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Dashboard查看页面","attributes":{},"skip":false,"key":"5.4.2.4"},{"backlink":"practice/distributed-load-test.html#fig5.4.2.5","level":"5.4.2","list_caption":"Figure: Locust测试结果页面","alt":"Locust测试结果页面","nro":108,"url":"../images/locust-dashboard.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Locust测试结果页面","attributes":{},"skip":false,"key":"5.4.2.5"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.4.3.1","level":"5.4.3","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":109,"url":"../images/kubenetes-e2e-test.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.4.3.1"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.4.3.2","level":"5.4.3","list_caption":"Figure: locust测试页面","alt":"locust测试页面","nro":110,"url":"../images/kubernetes-locust-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"locust测试页面","attributes":{},"skip":false,"key":"5.4.3.2"},{"backlink":"practice/edge-node-configuration.html#fig5.4.4.1","level":"5.4.4","list_caption":"Figure: 边缘节点架构","alt":"边缘节点架构","nro":111,"url":"../images/kubernetes-edge-node-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"边缘节点架构","attributes":{},"skip":false,"key":"5.4.4.1"},{"backlink":"practice/edge-node-configuration.html#fig5.4.4.2","level":"5.4.4","list_caption":"Figure: 使用域名来访问Kubernetes中的服务","alt":"使用域名来访问Kubernetes中的服务","nro":112,"url":"../images/accessing-kubernetes-services-with-dns-name.png","index":2,"caption_template":"图片 - _CAPTION_","label":"使用域名来访问Kubernetes中的服务","attributes":{},"skip":false,"key":"5.4.4.2"},{"backlink":"practice/configuring-dns.html#fig5.4.6.1.1","level":"5.4.6.1","list_caption":"Figure: DNS lookup flow","alt":"DNS lookup flow","nro":113,"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.4.6.1.1"},{"backlink":"practice/master-ha.html#fig5.5.1.1","level":"5.5.1","list_caption":"Figure: Master HA架构图","alt":"Master HA架构图","nro":114,"url":"../images/master-ha.JPG","index":1,"caption_template":"图片 - _CAPTION_","label":"Master HA架构图","attributes":{},"skip":false,"key":"5.5.1.1"},{"backlink":"practice/app-log-collection.html#fig5.5.3.1","level":"5.5.3","list_caption":"Figure: filebeat日志收集架构图","alt":"filebeat日志收集架构图","nro":115,"url":"../images/filebeat-log-collector.png","index":1,"caption_template":"图片 - _CAPTION_","label":"filebeat日志收集架构图","attributes":{},"skip":false,"key":"5.5.3.1"},{"backlink":"practice/app-log-collection.html#fig5.5.3.2","level":"5.5.3","list_caption":"Figure: Kibana页面","alt":"Kibana页面","nro":116,"url":"../images/filebeat-docker-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kibana页面","attributes":{},"skip":false,"key":"5.5.3.2"},{"backlink":"practice/app-log-collection.html#fig5.5.3.3","level":"5.5.3","list_caption":"Figure: filebeat收集的日志详细信息","alt":"filebeat收集的日志详细信息","nro":117,"url":"../images/kubernetes-filebeat-detail.png","index":3,"caption_template":"图片 - _CAPTION_","label":"filebeat收集的日志详细信息","attributes":{},"skip":false,"key":"5.5.3.3"},{"backlink":"practice/monitor.html#fig5.5.5.1","level":"5.5.5","list_caption":"Figure: Kubernetes集群中的监控","alt":"Kubernetes集群中的监控","nro":118,"url":"../images/monitoring-in-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes集群中的监控","attributes":{},"skip":false,"key":"5.5.5.1"},{"backlink":"practice/monitor.html#fig5.5.5.2","level":"5.5.5","list_caption":"Figure: kubernetes的容器命名规则示意图","alt":"kubernetes的容器命名规则示意图","nro":119,"url":"../images/kubernetes-container-naming-rule.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"kubernetes的容器命名规则示意图","attributes":{},"skip":false,"key":"5.5.5.2"},{"backlink":"practice/monitor.html#fig5.5.5.3","level":"5.5.5","list_caption":"Figure: Heapster架构图(改进版)","alt":"Heapster架构图(改进版)","nro":120,"url":"../images/kubernetes-heapster-monitoring.png","index":3,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图(改进版)","attributes":{},"skip":false,"key":"5.5.5.3"},{"backlink":"practice/monitor.html#fig5.5.5.4","level":"5.5.5","list_caption":"Figure: 应用监控架构图","alt":"应用监控架构图","nro":121,"url":"../images/kubernetes-app-monitoring.png","index":4,"caption_template":"图片 - _CAPTION_","label":"应用监控架构图","attributes":{},"skip":false,"key":"5.5.5.4"},{"backlink":"practice/monitor.html#fig5.5.5.5","level":"5.5.5","list_caption":"Figure: 应用拓扑图","alt":"应用拓扑图","nro":122,"url":"../images/weave-scope-service-topology.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"应用拓扑图","attributes":{},"skip":false,"key":"5.5.5.5"},{"backlink":"practice/data-persistence-problem.html#fig5.5.6.1","level":"5.5.6","list_caption":"Figure: 日志持久化收集解决方案示意图","alt":"日志持久化收集解决方案示意图","nro":123,"url":"../images/log-persistence-logstash.png","index":1,"caption_template":"图片 - _CAPTION_","label":"日志持久化收集解决方案示意图","attributes":{},"skip":false,"key":"5.5.6.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.6.1.3.1","level":"5.6.1.3","list_caption":"Figure: 创建存储","alt":"创建存储","nro":124,"url":"../images/create-gluster-storage.png","index":1,"caption_template":"图片 - _CAPTION_","label":"创建存储","attributes":{},"skip":false,"key":"5.6.1.3.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.6.1.3.2","level":"5.6.1.3","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":125,"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.6.1.3.2"},{"backlink":"practice/openebs.html#fig5.6.3.1","level":"5.6.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":126,"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.6.3.1"},{"backlink":"practice/openebs.html#fig5.6.3.2","level":"5.6.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":127,"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.6.3.2"},{"backlink":"practice/using-openebs-for-persistent-storage.html#fig5.6.3.1.1","level":"5.6.3.1","list_caption":"Figure: Kubernetes iSCSI架构","alt":"Kubernetes iSCSI架构","nro":128,"url":"../images/iscsi-on-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes iSCSI架构","attributes":{},"skip":false,"key":"5.6.3.1.1"},{"backlink":"practice/using-heapster-to-get-object-metrics.html#fig5.7.1.1.1","level":"5.7.1.1","list_caption":"Figure: Heapster架构图","alt":"Heapster架构图","nro":129,"url":"../images/heapster-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图","attributes":{},"skip":false,"key":"5.7.1.1.1"},{"backlink":"practice/prometheus.html#fig5.7.2.1","level":"5.7.2","list_caption":"Figure: Prometheus 架构图","alt":"Prometheus 架构图","nro":130,"url":"../images/prometheus-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Prometheus 架构图","attributes":{},"skip":false,"key":"5.7.2.1"},{"backlink":"practice/using-prometheus-to-monitor-kuberentes-cluster.html#fig5.7.2.1.1","level":"5.7.2.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":131,"url":"../images/kubernetes-prometheus-monitoring.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"5.7.2.1.1"},{"backlink":"practice/helm.html#fig5.8.1.1","level":"5.8.1","list_caption":"Figure: Helm chart源","alt":"Helm chart源","nro":132,"url":"../images/helm-charts-repository.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm chart源","attributes":{},"skip":false,"key":"5.8.1.1"},{"backlink":"practice/helm.html#fig5.8.1.2","level":"5.8.1","list_caption":"Figure: TODO应用的Web页面","alt":"TODO应用的Web页面","nro":133,"url":"../images/helm-mean-todo-aholic.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"TODO应用的Web页面","attributes":{},"skip":false,"key":"5.8.1.2"},{"backlink":"practice/create-private-charts-repo.html#fig5.8.2.1","level":"5.8.2","list_caption":"Figure: Helm monocular界面","alt":"Helm monocular界面","nro":134,"url":"../images/helm-monocular-jimmysong.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm monocular界面","attributes":{},"skip":false,"key":"5.8.2.1"},{"backlink":"practice/jenkins-ci-cd.html#fig5.9.1.1","level":"5.9.1","list_caption":"Figure: 基于Jenkins的持续集成与发布","alt":"基于Jenkins的持续集成与发布","nro":135,"url":"../images/kubernetes-jenkins-ci-cd.png","index":1,"caption_template":"图片 - _CAPTION_","label":"基于Jenkins的持续集成与发布","attributes":{},"skip":false,"key":"5.9.1.1"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.1","level":"5.9.2","list_caption":"Figure: OAuth注册","alt":"OAuth注册","nro":136,"url":"../images/github-oauth-register.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OAuth注册","attributes":{},"skip":false,"key":"5.9.2.1"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.2","level":"5.9.2","list_caption":"Figure: OAuth key","alt":"OAuth key","nro":137,"url":"../images/github-oauth-drone-key.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OAuth key","attributes":{},"skip":false,"key":"5.9.2.2"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.3","level":"5.9.2","list_caption":"Figure: Drone登陆界面","alt":"Drone登陆界面","nro":138,"url":"../images/drone-login-github.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Drone登陆界面","attributes":{},"skip":false,"key":"5.9.2.3"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.4","level":"5.9.2","list_caption":"Figure: Github启用repo设置","alt":"Github启用repo设置","nro":139,"url":"../images/drone-github-active.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Github启用repo设置","attributes":{},"skip":false,"key":"5.9.2.4"},{"backlink":"practice/drone-ci-cd.html#fig5.9.2.5","level":"5.9.2","list_caption":"Figure: Github单个repo设置","alt":"Github单个repo设置","nro":140,"url":"../images/drone-github-repo-setting.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Github单个repo设置","attributes":{},"skip":false,"key":"5.9.2.5"},{"backlink":"practice/manually-upgrade.html#fig5.10.1.1","level":"5.10.1","list_caption":"Figure: Kubernetes零宕机时间升级建议","alt":"Kubernetes零宕机时间升级建议","nro":141,"url":"../images/zero-downtime-kubernetes-upgrade-tips.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes零宕机时间升级建议","attributes":{},"skip":false,"key":"5.10.1.1"},{"backlink":"practice/manually-upgrade.html#fig5.10.1.2","level":"5.10.1","list_caption":"Figure: Kuberentes API对象的版本演进","alt":"Kuberentes API对象的版本演进","nro":142,"url":"../images/kubernetes-apversions-changes.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kuberentes API对象的版本演进","attributes":{},"skip":false,"key":"5.10.1.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.1","level":"5.10.2","list_caption":"Figure: 登陆界面","alt":"登陆界面","nro":143,"url":"../images/kubernetes-dashboard-1.7.1-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"登陆界面","attributes":{},"skip":false,"key":"5.10.2.1"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.2","level":"5.10.2","list_caption":"Figure: 首页","alt":"首页","nro":144,"url":"../images/kubernetes-dashboard-1.7.1-default-page.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"首页","attributes":{},"skip":false,"key":"5.10.2.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.3","level":"5.10.2","list_caption":"Figure: 用户空间","alt":"用户空间","nro":145,"url":"../images/kubernetes-dashboard-1.7.1-brand.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"用户空间","attributes":{},"skip":false,"key":"5.10.2.3"},{"backlink":"practice/dashboard-upgrade.html#fig5.10.2.4","level":"5.10.2","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":146,"url":"../images/brand-kubeconfig-yaml.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"5.10.2.4"},{"backlink":"usecases/microservices.html#fig6.2.1","level":"6.2","list_caption":"Figure: 微服务关注的部分","alt":"微服务关注的部分","nro":147,"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":148,"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":149,"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":150,"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":151,"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":152,"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":153,"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的mindmap","alt":"Istio的mindmap","nro":154,"url":"../images/istio-mindmap.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Istio的mindmap","attributes":{},"skip":false,"key":"6.3.1.1"},{"backlink":"usecases/istio.html#fig6.3.1.2","level":"6.3.1","list_caption":"Figure: Istio架构图","alt":"Istio架构图","nro":155,"url":"../images/istio-arch-v0.1.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Istio架构图","attributes":{},"skip":false,"key":"6.3.1.2"},{"backlink":"usecases/istio.html#fig6.3.1.3","level":"6.3.1","list_caption":"Figure: Istio的控制平面和数据平面","alt":"Istio的控制平面和数据平面","nro":156,"url":"../images/istio-arch.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Istio的控制平面和数据平面","attributes":{},"skip":false,"key":"6.3.1.3"},{"backlink":"usecases/istio-installation.html#fig6.3.1.1.1","level":"6.3.1.1","list_caption":"Figure: BookInfo Sample应用架构图","alt":"BookInfo Sample应用架构图","nro":157,"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":158,"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":159,"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":160,"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":161,"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":162,"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":163,"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":164,"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":165,"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/istio-tutorial.html#fig6.3.1.7.1","level":"6.3.1.7","list_caption":"Figure: Jaeger query UI","alt":"Jaeger query UI","nro":166,"url":"../images/jaeger-query-ui.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Jaeger query UI","attributes":{},"skip":false,"key":"6.3.1.7.1"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.2","level":"6.3.1.7","list_caption":"Figure: 分布式追踪","alt":"分布式追踪","nro":167,"url":"../images/istio-tutorial-zipkin-trace.png","index":2,"caption_template":"图片 - _CAPTION_","label":"分布式追踪","attributes":{},"skip":false,"key":"6.3.1.7.2"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.3","level":"6.3.1.7","list_caption":"Figure: 依赖关系","alt":"依赖关系","nro":168,"url":"../images/istio-tutorial-zipkin-dependency.png","index":3,"caption_template":"图片 - _CAPTION_","label":"依赖关系","attributes":{},"skip":false,"key":"6.3.1.7.3"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.4","level":"6.3.1.7","list_caption":"Figure: 服务关系图和QPS","alt":"服务关系图和QPS","nro":169,"url":"../images/istio-tutorial-serivcegraph-dotviz.png","index":4,"caption_template":"图片 - _CAPTION_","label":"服务关系图和QPS","attributes":{},"skip":false,"key":"6.3.1.7.4"},{"backlink":"usecases/istio-tutorial.html#fig6.3.1.7.5","level":"6.3.1.7","list_caption":"Figure: Grafana 监控","alt":"Grafana 监控","nro":170,"url":"../images/istio-tutorial-grafana.png","index":5,"caption_template":"图片 - _CAPTION_","label":"Grafana 监控","attributes":{},"skip":false,"key":"6.3.1.7.5"},{"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":171,"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.html#fig6.3.2.2","level":"6.3.2","list_caption":"Figure: Linkerd 部署架构(图片来自https://buoyant.io/2016/10/14/a-service-mesh-for-kubernetes-part-ii-pods-are-great-until-theyre-not/)","alt":"Linkerd 部署架构(图片来自https://buoyant.io/2016/10/14/a-service-mesh-for-kubernetes-part-ii-pods-are-great-until-theyre-not/)","nro":172,"url":"https://buoyant.io/wp-content/uploads/2017/07/buoyant-k8s-daemonset-mesh.png","index":2,"caption_template":"图片 - _CAPTION_","label":"Linkerd 部署架构(图片来自https://buoyant.io/2016/10/14/a-service-mesh-for-kubernetes-part-ii-pods-are-great-until-theyre-not/)","attributes":{},"skip":false,"key":"6.3.2.2"},{"backlink":"usecases/linkerd.html#fig6.3.2.3","level":"6.3.2","list_caption":"Figure: 基于 dtab 的路由规则配置阶段发布","alt":"基于 dtab 的路由规则配置阶段发布","nro":173,"url":"https://buoyant.io/wp-content/uploads/2017/07/buoyant-4_override.png","index":3,"caption_template":"图片 - _CAPTION_","label":"基于 dtab 的路由规则配置阶段发布","attributes":{},"skip":false,"key":"6.3.2.3"},{"backlink":"usecases/linkerd.html#fig6.3.2.4","level":"6.3.2","list_caption":"Figure: Linkerd ingress controller","alt":"Linkerd ingress controller","nro":174,"url":"https://buoyant.io/wp-content/uploads/2017/07/buoyant-k8s-hello-world-ingress-controller-1.png","index":4,"caption_template":"图片 - _CAPTION_","label":"Linkerd ingress controller","attributes":{},"skip":false,"key":"6.3.2.4"},{"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":175,"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":176,"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":177,"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":178,"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":179,"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":180,"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":181,"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":182,"url":"../images/conduit-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Conduit dashboard","attributes":{},"skip":false,"key":"6.3.3.2.1"},{"backlink":"usecases/envoy-front-proxy.html#fig6.3.4.1.1","level":"6.3.4.1","list_caption":"Figure: Front proxy 部署结构图(转自https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/front_proxy)","alt":"Front proxy 部署结构图(转自https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/front_proxy)","nro":183,"url":"../images/envoyproxy-docker-compose.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Front proxy 部署结构图(转自https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/front_proxy)","attributes":{},"skip":false,"key":"6.3.4.1.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":184,"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":185,"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":186,"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":187,"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":188,"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":189,"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":190,"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":191,"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":192,"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":193,"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":194,"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":195,"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":196,"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":197,"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":198,"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":199,"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":200,"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":201,"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":202,"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-04-22T13:34:05.608Z"},"basePath":"..","book":{"language":""}});
});
diff --git a/images/service-catalog-architecture.jpg b/images/service-catalog-architecture.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..88d54d99614eea50992199355bb5466a9ca01fea
GIT binary patch
literal 310828
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