kubernetes-handbook/concepts/cri.html

3630 lines
173 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE HTML>
<html lang="zh-hans" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>CRI - Container Runtime Interface容器运行时接口 · Kubernetes Handbook - jimmysong.io</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.2">
<meta name="author" content="Jimmy Song">
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-splitter/splitter.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-page-toc-button/plugin.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-image-captions/image-captions.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-back-to-top-button/plugin.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-search-plus/search.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-tbfed-pagefooter/footer.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-prism/prism-ghcolors.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="cni.html" />
<link rel="prev" href="open-interfaces.html" />
<link rel="shortcut icon" href='../favicon.ico' type="image/x-icon">
<link rel="bookmark" href='../favicon.ico' type="image/x-icon">
<style>
@media only screen and (max-width: 640px) {
.book-header .hidden-mobile {
display: none;
}
}
</style>
<script>
window["gitbook-plugin-github-buttons"] = {"repo":"rootsongjc/kubernetes-handbook","types":["star"],"size":"small"};
</script>
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="输入并搜索" />
</div>
<nav role="navigation">
<ul class="summary">
<li>
<a href="https://jimmysong.io" target="_blank" class="custom-link">Jimmy Song</a>
</li>
<li class="divider"></li>
<li class="header">前言</li>
<li class="chapter " data-level="1.1" data-path="../">
<a href="../">
<b>1.1.</b>
序言
</a>
</li>
<li class="chapter " data-level="1.2" data-path="../cloud-native/cncf.html">
<a href="../cloud-native/cncf.html">
<b>1.2.</b>
CNCF - 云原生计算基金会简介
</a>
</li>
<li class="header">云原生</li>
<li class="chapter " data-level="2.1" data-path="../cloud-native/play-with-kubernetes.html">
<a href="../cloud-native/play-with-kubernetes.html">
<b>2.1.</b>
Play with Kubernetes
</a>
</li>
<li class="chapter " data-level="2.2" data-path="../cloud-native/kubernetes-and-cloud-native-app-overview.html">
<a href="../cloud-native/kubernetes-and-cloud-native-app-overview.html">
<b>2.2.</b>
Kubernetes与云原生应用概览
</a>
</li>
<li class="chapter " data-level="2.3" data-path="../cloud-native/from-kubernetes-to-cloud-native.html">
<a href="../cloud-native/from-kubernetes-to-cloud-native.html">
<b>2.3.</b>
云原生应用之路——从Kubernetes到Cloud Native
</a>
</li>
<li class="header">概念与原理</li>
<li class="chapter " data-level="3.1" data-path="./">
<a href="./">
<b>3.1.</b>
Kubernetes架构
</a>
<ul class="articles">
<li class="chapter " data-level="3.1.1" data-path="concepts.html">
<a href="concepts.html">
<b>3.1.1.</b>
设计理念
</a>
</li>
<li class="chapter " data-level="3.1.2" data-path="etcd.html">
<a href="etcd.html">
<b>3.1.2.</b>
Etcd解析
</a>
</li>
<li class="chapter " data-level="3.1.3" data-path="open-interfaces.html">
<a href="open-interfaces.html">
<b>3.1.3.</b>
开放接口
</a>
<ul class="articles">
<li class="chapter active" data-level="3.1.3.1" data-path="cri.html">
<a href="cri.html">
<b>3.1.3.1.</b>
CRI - Container Runtime Interface容器运行时接口
</a>
</li>
<li class="chapter " data-level="3.1.3.2" data-path="cni.html">
<a href="cni.html">
<b>3.1.3.2.</b>
CNI - Container Network Interface容器网络接口
</a>
</li>
<li class="chapter " data-level="3.1.3.3" data-path="csi.html">
<a href="csi.html">
<b>3.1.3.3.</b>
CSI - Container Storage Interface容器存储接口
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="3.2" >
<span>
<b>3.2.</b>
Kubernetes中的网络
</span>
<ul class="articles">
<li class="chapter " data-level="3.2.1" data-path="networking.html">
<a href="networking.html">
<b>3.2.1.</b>
Kubernetes中的网络解析——以flannel为例
</a>
</li>
<li class="chapter " data-level="3.2.2" data-path="calico.html">
<a href="calico.html">
<b>3.2.2.</b>
Kubernetes中的网络解析——以calico为例
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.3" data-path="objects.html">
<a href="objects.html">
<b>3.3.</b>
资源对象与基本概念解析
</a>
</li>
<li class="chapter " data-level="3.4" data-path="pod-state-and-lifecycle.html">
<a href="pod-state-and-lifecycle.html">
<b>3.4.</b>
Pod状态与生命周期管理
</a>
<ul class="articles">
<li class="chapter " data-level="3.4.1" data-path="pod-overview.html">
<a href="pod-overview.html">
<b>3.4.1.</b>
Pod概览
</a>
</li>
<li class="chapter " data-level="3.4.2" data-path="pod.html">
<a href="pod.html">
<b>3.4.2.</b>
Pod解析
</a>
</li>
<li class="chapter " data-level="3.4.3" data-path="init-containers.html">
<a href="init-containers.html">
<b>3.4.3.</b>
Init容器
</a>
</li>
<li class="chapter " data-level="3.4.4" data-path="pause-container.html">
<a href="pause-container.html">
<b>3.4.4.</b>
Pause容器
</a>
</li>
<li class="chapter " data-level="3.4.5" data-path="pod-security-policy.html">
<a href="pod-security-policy.html">
<b>3.4.5.</b>
Pod安全策略
</a>
</li>
<li class="chapter " data-level="3.4.6" data-path="pod-lifecycle.html">
<a href="pod-lifecycle.html">
<b>3.4.6.</b>
Pod的生命周期
</a>
</li>
<li class="chapter " data-level="3.4.7" data-path="pod-hook.html">
<a href="pod-hook.html">
<b>3.4.7.</b>
Pod Hook
</a>
</li>
<li class="chapter " data-level="3.4.8" data-path="pod-preset.html">
<a href="pod-preset.html">
<b>3.4.8.</b>
Pod Preset
</a>
</li>
<li class="chapter " data-level="3.4.9" data-path="pod-disruption-budget.html">
<a href="pod-disruption-budget.html">
<b>3.4.9.</b>
Pod中断与PDBPod中断预算
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.5" data-path="cluster.html">
<a href="cluster.html">
<b>3.5.</b>
集群资源管理
</a>
<ul class="articles">
<li class="chapter " data-level="3.5.1" data-path="node.html">
<a href="node.html">
<b>3.5.1.</b>
Node
</a>
</li>
<li class="chapter " data-level="3.5.2" data-path="namespace.html">
<a href="namespace.html">
<b>3.5.2.</b>
Namespace
</a>
</li>
<li class="chapter " data-level="3.5.3" data-path="label.html">
<a href="label.html">
<b>3.5.3.</b>
Label
</a>
</li>
<li class="chapter " data-level="3.5.4" data-path="annotation.html">
<a href="annotation.html">
<b>3.5.4.</b>
Annotation
</a>
</li>
<li class="chapter " data-level="3.5.5" data-path="taint-and-toleration.html">
<a href="taint-and-toleration.html">
<b>3.5.5.</b>
Taint和Toleration污点和容忍
</a>
</li>
<li class="chapter " data-level="3.5.6" data-path="garbage-collection.html">
<a href="garbage-collection.html">
<b>3.5.6.</b>
垃圾收集
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.6" data-path="controllers.html">
<a href="controllers.html">
<b>3.6.</b>
控制器
</a>
<ul class="articles">
<li class="chapter " data-level="3.6.1" data-path="deployment.html">
<a href="deployment.html">
<b>3.6.1.</b>
Deployment
</a>
</li>
<li class="chapter " data-level="3.6.2" data-path="statefulset.html">
<a href="statefulset.html">
<b>3.6.2.</b>
StatefulSet
</a>
</li>
<li class="chapter " data-level="3.6.3" data-path="daemonset.html">
<a href="daemonset.html">
<b>3.6.3.</b>
DaemonSet
</a>
</li>
<li class="chapter " data-level="3.6.4" data-path="replicaset.html">
<a href="replicaset.html">
<b>3.6.4.</b>
ReplicationController和ReplicaSet
</a>
</li>
<li class="chapter " data-level="3.6.5" data-path="job.html">
<a href="job.html">
<b>3.6.5.</b>
Job
</a>
</li>
<li class="chapter " data-level="3.6.6" data-path="cronjob.html">
<a href="cronjob.html">
<b>3.6.6.</b>
CronJob
</a>
</li>
<li class="chapter " data-level="3.6.7" data-path="horizontal-pod-autoscaling.html">
<a href="horizontal-pod-autoscaling.html">
<b>3.6.7.</b>
Horizontal Pod Autoscaling
</a>
<ul class="articles">
<li class="chapter " data-level="3.6.7.1" data-path="custom-metrics-hpa.html">
<a href="custom-metrics-hpa.html">
<b>3.6.7.1.</b>
自定义指标HPA
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="3.7" data-path="service-discovery.html">
<a href="service-discovery.html">
<b>3.7.</b>
服务发现
</a>
<ul class="articles">
<li class="chapter " data-level="3.7.1" data-path="service.html">
<a href="service.html">
<b>3.7.1.</b>
Service
</a>
</li>
<li class="chapter " data-level="3.7.2" data-path="ingress.html">
<a href="ingress.html">
<b>3.7.2.</b>
Ingress
</a>
<ul class="articles">
<li class="chapter " data-level="3.7.2.1" data-path="traefik-ingress-controller.html">
<a href="traefik-ingress-controller.html">
<b>3.7.2.1.</b>
Traefik Ingress Controller
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="3.8" data-path="authentication-and-permission.html">
<a href="authentication-and-permission.html">
<b>3.8.</b>
身份与权限控制
</a>
<ul class="articles">
<li class="chapter " data-level="3.8.1" data-path="serviceaccount.html">
<a href="serviceaccount.html">
<b>3.8.1.</b>
ServiceAccount
</a>
</li>
<li class="chapter " data-level="3.8.2" data-path="rbac.html">
<a href="rbac.html">
<b>3.8.2.</b>
RBAC——基于角色的访问控制
</a>
</li>
<li class="chapter " data-level="3.8.3" data-path="network-policy.html">
<a href="network-policy.html">
<b>3.8.3.</b>
NetworkPolicy
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.9" data-path="storage.html">
<a href="storage.html">
<b>3.9.</b>
存储
</a>
<ul class="articles">
<li class="chapter " data-level="3.9.1" data-path="secret.html">
<a href="secret.html">
<b>3.9.1.</b>
Secret
</a>
</li>
<li class="chapter " data-level="3.9.2" data-path="configmap.html">
<a href="configmap.html">
<b>3.9.2.</b>
ConfigMap
</a>
<ul class="articles">
<li class="chapter " data-level="3.9.2.1" data-path="configmap-hot-update.html">
<a href="configmap-hot-update.html">
<b>3.9.2.1.</b>
ConfigMap的热更新
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.9.3" data-path="volume.html">
<a href="volume.html">
<b>3.9.3.</b>
Volume
</a>
</li>
<li class="chapter " data-level="3.9.4" data-path="persistent-volume.html">
<a href="persistent-volume.html">
<b>3.9.4.</b>
Persistent Volume持久化卷
</a>
</li>
<li class="chapter " data-level="3.9.5" data-path="storageclass.html">
<a href="storageclass.html">
<b>3.9.5.</b>
Storage Class
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.10" data-path="extension.html">
<a href="extension.html">
<b>3.10.</b>
集群扩展
</a>
<ul class="articles">
<li class="chapter " data-level="3.10.1" data-path="custom-resource.html">
<a href="custom-resource.html">
<b>3.10.1.</b>
使用自定义资源扩展API
</a>
</li>
<li class="chapter " data-level="3.10.2" data-path="aggregated-api-server.html">
<a href="aggregated-api-server.html">
<b>3.10.2.</b>
Aggregated API Server
</a>
</li>
<li class="chapter " data-level="3.10.3" data-path="apiservice.html">
<a href="apiservice.html">
<b>3.10.3.</b>
APIService
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.11" data-path="scheduling.html">
<a href="scheduling.html">
<b>3.11.</b>
资源调度
</a>
</li>
<li class="header">用户指南</li>
<li class="chapter " data-level="4.1" data-path="../guide/">
<a href="../guide/">
<b>4.1.</b>
用户指南
</a>
</li>
<li class="chapter " data-level="4.2" data-path="../guide/resource-configuration.html">
<a href="../guide/resource-configuration.html">
<b>4.2.</b>
资源对象配置
</a>
<ul class="articles">
<li class="chapter " data-level="4.2.1" data-path="../guide/configure-liveness-readiness-probes.html">
<a href="../guide/configure-liveness-readiness-probes.html">
<b>4.2.1.</b>
配置Pod的liveness和readiness探针
</a>
</li>
<li class="chapter " data-level="4.2.2" data-path="../guide/configure-pod-service-account.html">
<a href="../guide/configure-pod-service-account.html">
<b>4.2.2.</b>
配置Pod的Service Account
</a>
</li>
<li class="chapter " data-level="4.2.3" data-path="../guide/secret-configuration.html">
<a href="../guide/secret-configuration.html">
<b>4.2.3.</b>
Secret配置
</a>
</li>
<li class="chapter " data-level="4.2.4" data-path="../guide/resource-quota-management.html">
<a href="../guide/resource-quota-management.html">
<b>4.2.4.</b>
管理namespace中的资源配额
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="4.3" data-path="../guide/command-usage.html">
<a href="../guide/command-usage.html">
<b>4.3.</b>
命令使用
</a>
<ul class="articles">
<li class="chapter " data-level="4.3.1" data-path="../guide/docker-cli-to-kubectl.html">
<a href="../guide/docker-cli-to-kubectl.html">
<b>4.3.1.</b>
docker用户过度到kubectl命令行指南
</a>
</li>
<li class="chapter " data-level="4.3.2" data-path="../guide/using-kubectl.html">
<a href="../guide/using-kubectl.html">
<b>4.3.2.</b>
kubectl命令概览
</a>
</li>
<li class="chapter " data-level="4.3.3" data-path="../guide/kubectl-cheatsheet.html">
<a href="../guide/kubectl-cheatsheet.html">
<b>4.3.3.</b>
kubectl命令技巧大全
</a>
</li>
<li class="chapter " data-level="4.3.4" data-path="../guide/using-etcdctl-to-access-kubernetes-data.html">
<a href="../guide/using-etcdctl-to-access-kubernetes-data.html">
<b>4.3.4.</b>
使用etcdctl访问kubernetes数据
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="4.4" data-path="../guide/cluster-security-management.html">
<a href="../guide/cluster-security-management.html">
<b>4.4.</b>
集群安全性管理
</a>
<ul class="articles">
<li class="chapter " data-level="4.4.1" data-path="../guide/managing-tls-in-a-cluster.html">
<a href="../guide/managing-tls-in-a-cluster.html">
<b>4.4.1.</b>
管理集群中的TLS
</a>
</li>
<li class="chapter " data-level="4.4.2" data-path="../guide/kubelet-authentication-authorization.html">
<a href="../guide/kubelet-authentication-authorization.html">
<b>4.4.2.</b>
kubelet的认证授权
</a>
</li>
<li class="chapter " data-level="4.4.3" data-path="../guide/tls-bootstrapping.html">
<a href="../guide/tls-bootstrapping.html">
<b>4.4.3.</b>
TLS bootstrap
</a>
</li>
<li class="chapter " data-level="4.4.4" data-path="../guide/kubectl-user-authentication-authorization.html">
<a href="../guide/kubectl-user-authentication-authorization.html">
<b>4.4.4.</b>
创建用户认证授权的kubeconfig文件
</a>
</li>
<li class="chapter " data-level="4.4.5" data-path="../guide/ip-masq-agent.html">
<a href="../guide/ip-masq-agent.html">
<b>4.4.5.</b>
IP伪装代理
</a>
</li>
<li class="chapter " data-level="4.4.6" data-path="../guide/auth-with-kubeconfig-or-token.html">
<a href="../guide/auth-with-kubeconfig-or-token.html">
<b>4.4.6.</b>
使用kubeconfig或token进行用户身份认证
</a>
</li>
<li class="chapter " data-level="4.4.7" data-path="../guide/authentication.html">
<a href="../guide/authentication.html">
<b>4.4.7.</b>
Kubernetes中的用户与身份认证授权
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="4.5" data-path="../guide/access-kubernetes-cluster.html">
<a href="../guide/access-kubernetes-cluster.html">
<b>4.5.</b>
访问Kubernetes集群
</a>
<ul class="articles">
<li class="chapter " data-level="4.5.1" data-path="../guide/access-cluster.html">
<a href="../guide/access-cluster.html">
<b>4.5.1.</b>
访问集群
</a>
</li>
<li class="chapter " data-level="4.5.2" data-path="../guide/authenticate-across-clusters-kubeconfig.html">
<a href="../guide/authenticate-across-clusters-kubeconfig.html">
<b>4.5.2.</b>
使用kubeconfig文件配置跨集群认证
</a>
</li>
<li class="chapter " data-level="4.5.3" data-path="../guide/connecting-to-applications-port-forward.html">
<a href="../guide/connecting-to-applications-port-forward.html">
<b>4.5.3.</b>
通过端口转发访问集群中的应用程序
</a>
</li>
<li class="chapter " data-level="4.5.4" data-path="../guide/service-access-application-cluster.html">
<a href="../guide/service-access-application-cluster.html">
<b>4.5.4.</b>
使用service访问群集中的应用程序
</a>
</li>
<li class="chapter " data-level="4.5.5" data-path="../guide/accessing-kubernetes-pods-from-outside-of-the-cluster.html">
<a href="../guide/accessing-kubernetes-pods-from-outside-of-the-cluster.html">
<b>4.5.5.</b>
从外部访问Kubernetes中的Pod
</a>
</li>
<li class="chapter " data-level="4.5.6" data-path="../guide/cabin-mobile-dashboard-for-kubernetes.html">
<a href="../guide/cabin-mobile-dashboard-for-kubernetes.html">
<b>4.5.6.</b>
Cabin - Kubernetes手机客户端
</a>
</li>
<li class="chapter " data-level="4.5.7" data-path="../guide/kubernetes-desktop-client.html">
<a href="../guide/kubernetes-desktop-client.html">
<b>4.5.7.</b>
Kubernetic - Kubernetes桌面客户端
</a>
</li>
<li class="chapter " data-level="4.5.8" data-path="../guide/kubernator-kubernetes-ui.html">
<a href="../guide/kubernator-kubernetes-ui.html">
<b>4.5.8.</b>
Kubernator - 更底层的Kubernetes UI
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="4.6" data-path="../guide/application-development-deployment-flow.html">
<a href="../guide/application-development-deployment-flow.html">
<b>4.6.</b>
在Kubernetes中开发部署应用
</a>
<ul class="articles">
<li class="chapter " data-level="4.6.1" data-path="../guide/deploy-applications-in-kubernetes.html">
<a href="../guide/deploy-applications-in-kubernetes.html">
<b>4.6.1.</b>
适用于kubernetes的应用开发部署流程
</a>
</li>
<li class="chapter " data-level="4.6.2" data-path="../guide/migrating-hadoop-yarn-to-kubernetes.html">
<a href="../guide/migrating-hadoop-yarn-to-kubernetes.html">
<b>4.6.2.</b>
迁移传统应用到Kubernetes中——以Hadoop YARN为例
</a>
</li>
<li class="chapter " data-level="4.6.3" data-path="../guide/using-statefulset.html">
<a href="../guide/using-statefulset.html">
<b>4.6.3.</b>
使用StatefulSet部署用状态应用
</a>
</li>
</ul>
</li>
<li class="header">最佳实践</li>
<li class="chapter " data-level="5.1" data-path="../practice/">
<a href="../practice/">
<b>5.1.</b>
最佳实践概览
</a>
</li>
<li class="chapter " data-level="5.2" data-path="../practice/install-kubernetes-on-centos.html">
<a href="../practice/install-kubernetes-on-centos.html">
<b>5.2.</b>
在CentOS上部署Kubernetes集群
</a>
<ul class="articles">
<li class="chapter " data-level="5.2.1" data-path="../practice/create-tls-and-secret-key.html">
<a href="../practice/create-tls-and-secret-key.html">
<b>5.2.1.</b>
创建TLS证书和秘钥
</a>
</li>
<li class="chapter " data-level="5.2.2" data-path="../practice/create-kubeconfig.html">
<a href="../practice/create-kubeconfig.html">
<b>5.2.2.</b>
创建kubeconfig文件
</a>
</li>
<li class="chapter " data-level="5.2.3" data-path="../practice/etcd-cluster-installation.html">
<a href="../practice/etcd-cluster-installation.html">
<b>5.2.3.</b>
创建高可用etcd集群
</a>
</li>
<li class="chapter " data-level="5.2.4" data-path="../practice/kubectl-installation.html">
<a href="../practice/kubectl-installation.html">
<b>5.2.4.</b>
安装kubectl命令行工具
</a>
</li>
<li class="chapter " data-level="5.2.5" data-path="../practice/master-installation.html">
<a href="../practice/master-installation.html">
<b>5.2.5.</b>
部署master节点
</a>
</li>
<li class="chapter " data-level="5.2.6" data-path="../practice/flannel-installation.html">
<a href="../practice/flannel-installation.html">
<b>5.2.6.</b>
安装flannel网络插件
</a>
</li>
<li class="chapter " data-level="5.2.7" data-path="../practice/node-installation.html">
<a href="../practice/node-installation.html">
<b>5.2.7.</b>
部署node节点
</a>
</li>
<li class="chapter " data-level="5.2.8" data-path="../practice/kubedns-addon-installation.html">
<a href="../practice/kubedns-addon-installation.html">
<b>5.2.8.</b>
安装kubedns插件
</a>
</li>
<li class="chapter " data-level="5.2.9" data-path="../practice/dashboard-addon-installation.html">
<a href="../practice/dashboard-addon-installation.html">
<b>5.2.9.</b>
安装dashboard插件
</a>
</li>
<li class="chapter " data-level="5.2.10" data-path="../practice/heapster-addon-installation.html">
<a href="../practice/heapster-addon-installation.html">
<b>5.2.10.</b>
安装heapster插件
</a>
</li>
<li class="chapter " data-level="5.2.11" data-path="../practice/efk-addon-installation.html">
<a href="../practice/efk-addon-installation.html">
<b>5.2.11.</b>
安装EFK插件
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="5.3" data-path="../practice/service-discovery-and-loadbalancing.html">
<a href="../practice/service-discovery-and-loadbalancing.html">
<b>5.3.</b>
服务发现与负载均衡
</a>
<ul class="articles">
<li class="chapter " data-level="5.3.1" data-path="../practice/traefik-ingress-installation.html">
<a href="../practice/traefik-ingress-installation.html">
<b>5.3.1.</b>
安装Traefik ingress
</a>
</li>
<li class="chapter " data-level="5.3.2" data-path="../practice/distributed-load-test.html">
<a href="../practice/distributed-load-test.html">
<b>5.3.2.</b>
分布式负载测试
</a>
</li>
<li class="chapter " data-level="5.3.3" data-path="../practice/network-and-cluster-perfermance-test.html">
<a href="../practice/network-and-cluster-perfermance-test.html">
<b>5.3.3.</b>
网络和集群性能测试
</a>
</li>
<li class="chapter " data-level="5.3.4" data-path="../practice/edge-node-configuration.html">
<a href="../practice/edge-node-configuration.html">
<b>5.3.4.</b>
边缘节点配置
</a>
</li>
<li class="chapter " data-level="5.3.5" data-path="../practice/nginx-ingress-installation.html">
<a href="../practice/nginx-ingress-installation.html">
<b>5.3.5.</b>
安装Nginx ingress
</a>
</li>
<li class="chapter " data-level="5.3.6" data-path="../practice/configuring-dns.html">
<a href="../practice/configuring-dns.html">
<b>5.3.6.</b>
配置内置DNSkube-dns
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="5.4" data-path="../practice/operation.html">
<a href="../practice/operation.html">
<b>5.4.</b>
运维管理
</a>
<ul class="articles">
<li class="chapter " data-level="5.4.1" data-path="../practice/master-ha.html">
<a href="../practice/master-ha.html">
<b>5.4.1.</b>
Master节点高可用
</a>
</li>
<li class="chapter " data-level="5.4.2" data-path="../practice/service-rolling-update.html">
<a href="../practice/service-rolling-update.html">
<b>5.4.2.</b>
服务滚动升级
</a>
</li>
<li class="chapter " data-level="5.4.3" data-path="../practice/app-log-collection.html">
<a href="../practice/app-log-collection.html">
<b>5.4.3.</b>
应用日志收集
</a>
</li>
<li class="chapter " data-level="5.4.4" data-path="../practice/configuration-best-practice.html">
<a href="../practice/configuration-best-practice.html">
<b>5.4.4.</b>
配置最佳实践
</a>
</li>
<li class="chapter " data-level="5.4.5" data-path="../practice/monitor.html">
<a href="../practice/monitor.html">
<b>5.4.5.</b>
集群及应用监控
</a>
</li>
<li class="chapter " data-level="5.4.6" data-path="../practice/data-persistence-problem.html">
<a href="../practice/data-persistence-problem.html">
<b>5.4.6.</b>
数据持久化问题
</a>
</li>
<li class="chapter " data-level="5.4.7" data-path="../practice/manage-compute-resources-container.html">
<a href="../practice/manage-compute-resources-container.html">
<b>5.4.7.</b>
管理容器的计算资源
</a>
</li>
<li class="chapter " data-level="5.4.8" data-path="../practice/federation.html">
<a href="../practice/federation.html">
<b>5.4.8.</b>
集群联邦
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="5.5" data-path="../practice/storage.html">
<a href="../practice/storage.html">
<b>5.5.</b>
存储管理
</a>
<ul class="articles">
<li class="chapter " data-level="5.5.1" data-path="../practice/glusterfs.html">
<a href="../practice/glusterfs.html">
<b>5.5.1.</b>
GlusterFS
</a>
<ul class="articles">
<li class="chapter " data-level="5.5.1.1" data-path="../practice/using-glusterfs-for-persistent-storage.html">
<a href="../practice/using-glusterfs-for-persistent-storage.html">
<b>5.5.1.1.</b>
使用GlusterFS做持久化存储
</a>
</li>
<li class="chapter " data-level="5.5.1.2" data-path="../practice/storage-for-containers-using-glusterfs-with-openshift.html">
<a href="../practice/storage-for-containers-using-glusterfs-with-openshift.html">
<b>5.5.1.2.</b>
在OpenShift中使用GlusterFS做持久化存储
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="5.5.2" data-path="../practice/cephfs.html">
<a href="../practice/cephfs.html">
<b>5.5.2.</b>
CephFS
</a>
<ul class="articles">
<li class="chapter " data-level="5.5.2.1" data-path="../practice/using-ceph-for-persistent-storage.html">
<a href="../practice/using-ceph-for-persistent-storage.html">
<b>5.5.2.1.</b>
使用Ceph做持久化存储
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="5.5.3" data-path="../practice/openebs.html">
<a href="../practice/openebs.html">
<b>5.5.3.</b>
OpenEBS
</a>
<ul class="articles">
<li class="chapter " data-level="5.5.3.1" data-path="../practice/using-openebs-for-persistent-storage.html">
<a href="../practice/using-openebs-for-persistent-storage.html">
<b>5.5.3.1.</b>
使用OpenEBS做持久化存储
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="5.5.4" data-path="../practice/rook.html">
<a href="../practice/rook.html">
<b>5.5.4.</b>
Rook
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="5.6" data-path="../practice/monitoring.html">
<a href="../practice/monitoring.html">
<b>5.6.</b>
集群与应用监控
</a>
<ul class="articles">
<li class="chapter " data-level="5.6.1" data-path="../practice/heapster.html">
<a href="../practice/heapster.html">
<b>5.6.1.</b>
Heapster
</a>
<ul class="articles">
<li class="chapter " data-level="5.6.1.1" data-path="../practice/using-heapster-to-get-object-metrics.html">
<a href="../practice/using-heapster-to-get-object-metrics.html">
<b>5.6.1.1.</b>
使用Heapster获取集群和对象的metric数据
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="5.6.2" data-path="../practice/prometheus.html">
<a href="../practice/prometheus.html">
<b>5.6.2.</b>
Prometheus
</a>
<ul class="articles">
<li class="chapter " data-level="5.6.2.1" data-path="../practice/using-prometheus-to-monitor-kuberentes-cluster.html">
<a href="../practice/using-prometheus-to-monitor-kuberentes-cluster.html">
<b>5.6.2.1.</b>
使用Prometheus监控kubernetes集群
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="5.7" data-path="../practice/services-management-tool.html">
<a href="../practice/services-management-tool.html">
<b>5.7.</b>
服务编排管理
</a>
<ul class="articles">
<li class="chapter " data-level="5.7.1" data-path="../practice/helm.html">
<a href="../practice/helm.html">
<b>5.7.1.</b>
使用Helm管理kubernetes应用
</a>
</li>
<li class="chapter " data-level="5.7.2" data-path="../practice/create-private-charts-repo.html">
<a href="../practice/create-private-charts-repo.html">
<b>5.7.2.</b>
构建私有Chart仓库
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="5.8" data-path="../practice/ci-cd.html">
<a href="../practice/ci-cd.html">
<b>5.8.</b>
持续集成与发布
</a>
<ul class="articles">
<li class="chapter " data-level="5.8.1" data-path="../practice/jenkins-ci-cd.html">
<a href="../practice/jenkins-ci-cd.html">
<b>5.8.1.</b>
使用Jenkins进行持续集成与发布
</a>
</li>
<li class="chapter " data-level="5.8.2" data-path="../practice/drone-ci-cd.html">
<a href="../practice/drone-ci-cd.html">
<b>5.8.2.</b>
使用Drone进行持续集成与发布
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="5.9" data-path="../practice/update-and-upgrade.html">
<a href="../practice/update-and-upgrade.html">
<b>5.9.</b>
更新与升级
</a>
<ul class="articles">
<li class="chapter " data-level="5.9.1" data-path="../practice/manually-upgrade.html">
<a href="../practice/manually-upgrade.html">
<b>5.9.1.</b>
手动升级Kubernetes集群
</a>
</li>
<li class="chapter " data-level="5.9.2" data-path="../practice/dashboard-upgrade.html">
<a href="../practice/dashboard-upgrade.html">
<b>5.9.2.</b>
升级dashboard
</a>
</li>
</ul>
</li>
<li class="header">领域应用</li>
<li class="chapter " data-level="6.1" data-path="../usecases/">
<a href="../usecases/">
<b>6.1.</b>
领域应用概览
</a>
</li>
<li class="chapter " data-level="6.2" data-path="../usecases/microservices.html">
<a href="../usecases/microservices.html">
<b>6.2.</b>
微服务架构
</a>
<ul class="articles">
<li class="chapter " data-level="6.2.1" data-path="../usecases/service-discovery-in-microservices.html">
<a href="../usecases/service-discovery-in-microservices.html">
<b>6.2.1.</b>
微服务中的服务发现
</a>
</li>
<li class="chapter " data-level="6.2.2" data-path="../usecases/microservices-for-java-developers.html">
<a href="../usecases/microservices-for-java-developers.html">
<b>6.2.2.</b>
使用Java构建微服务并发布到Kubernetes平台
</a>
<ul class="articles">
<li class="chapter " data-level="6.2.2.1" data-path="../usecases/spring-boot-quick-start-guide.html">
<a href="../usecases/spring-boot-quick-start-guide.html">
<b>6.2.2.1.</b>
Spring Boot快速开始指南
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="6.3" data-path="../usecases/service-mesh.html">
<a href="../usecases/service-mesh.html">
<b>6.3.</b>
Service Mesh 服务网格
</a>
<ul class="articles">
<li class="chapter " data-level="6.3.1" data-path="../usecases/istio.html">
<a href="../usecases/istio.html">
<b>6.3.1.</b>
Istio
</a>
<ul class="articles">
<li class="chapter " data-level="6.3.1.1" data-path="../usecases/istio-installation.html">
<a href="../usecases/istio-installation.html">
<b>6.3.1.1.</b>
安装并试用Istio service mesh
</a>
</li>
<li class="chapter " data-level="6.3.1.2" data-path="../usecases/configuring-request-routing.html">
<a href="../usecases/configuring-request-routing.html">
<b>6.3.1.2.</b>
配置请求的路由规则
</a>
</li>
<li class="chapter " data-level="6.3.1.3" data-path="../usecases/install-and-expand-istio-mesh.html">
<a href="../usecases/install-and-expand-istio-mesh.html">
<b>6.3.1.3.</b>
安装和拓展Istio service mesh
</a>
</li>
<li class="chapter " data-level="6.3.1.4" data-path="../usecases/integrating-vms.html">
<a href="../usecases/integrating-vms.html">
<b>6.3.1.4.</b>
集成虚拟机
</a>
</li>
<li class="chapter " data-level="6.3.1.5" data-path="../usecases/sidecar-spec-in-istio.html">
<a href="../usecases/sidecar-spec-in-istio.html">
<b>6.3.1.5.</b>
Istio中sidecar的注入规范及示例
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="6.3.2" data-path="../usecases/linkerd.html">
<a href="../usecases/linkerd.html">
<b>6.3.2.</b>
Linkerd
</a>
<ul class="articles">
<li class="chapter " data-level="6.3.2.1" data-path="../usecases/linkerd-user-guide.html">
<a href="../usecases/linkerd-user-guide.html">
<b>6.3.2.1.</b>
Linkerd 使用指南
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="6.3.3" data-path="../usecases/conduit.html">
<a href="../usecases/conduit.html">
<b>6.3.3.</b>
Conduit
</a>
<ul class="articles">
<li class="chapter " data-level="6.3.3.1" data-path="../usecases/conduit-overview.html">
<a href="../usecases/conduit-overview.html">
<b>6.3.3.1.</b>
Condiut概览
</a>
</li>
<li class="chapter " data-level="6.3.3.2" data-path="../usecases/conduit-installation.html">
<a href="../usecases/conduit-installation.html">
<b>6.3.3.2.</b>
安装Conduit
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="6.4" data-path="../usecases/big-data.html">
<a href="../usecases/big-data.html">
<b>6.4.</b>
大数据
</a>
<ul class="articles">
<li class="chapter " data-level="6.4.1" data-path="../usecases/spark-standalone-on-kubernetes.html">
<a href="../usecases/spark-standalone-on-kubernetes.html">
<b>6.4.1.</b>
Spark standalone on Kubernetes
</a>
</li>
<li class="chapter " data-level="6.4.2" data-path="../usecases/running-spark-with-kubernetes-native-scheduler.html">
<a href="../usecases/running-spark-with-kubernetes-native-scheduler.html">
<b>6.4.2.</b>
运行支持Kubernetes原生调度的Spark程序
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="6.5" data-path="../usecases/serverless.html">
<a href="../usecases/serverless.html">
<b>6.5.</b>
Serverless架构
</a>
<ul class="articles">
<li class="chapter " data-level="6.5.1" data-path="../usecases/understanding-serverless.html">
<a href="../usecases/understanding-serverless.html">
<b>6.5.1.</b>
理解Serverless
</a>
</li>
<li class="chapter " data-level="6.5.2" data-path="../usecases/faas.html">
<a href="../usecases/faas.html">
<b>6.5.2.</b>
FaaS-函数即服务
</a>
<ul class="articles">
<li class="chapter " data-level="6.5.2.1" data-path="../usecases/openfaas-quick-start.html">
<a href="../usecases/openfaas-quick-start.html">
<b>6.5.2.1.</b>
OpenFaaS快速入门指南
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="6.6" data-path="../usecases/edge-computing.html">
<a href="../usecases/edge-computing.html">
<b>6.6.</b>
边缘计算
</a>
</li>
<li class="header">开发指南</li>
<li class="chapter " data-level="7.1" data-path="../develop/">
<a href="../develop/">
<b>7.1.</b>
开发指南概览
</a>
</li>
<li class="chapter " data-level="7.2" data-path="../develop/sigs-and-working-group.html">
<a href="../develop/sigs-and-working-group.html">
<b>7.2.</b>
SIG和工作组
</a>
</li>
<li class="chapter " data-level="7.3" data-path="../develop/developing-environment.html">
<a href="../develop/developing-environment.html">
<b>7.3.</b>
开发环境搭建
</a>
</li>
<li class="chapter " data-level="7.4" data-path="../develop/using-vagrant-and-virtualbox-for-development.html">
<a href="../develop/using-vagrant-and-virtualbox-for-development.html">
<b>7.4.</b>
本地分布式开发环境搭建使用Vagrant和Virtualbox
</a>
</li>
<li class="chapter " data-level="7.5" data-path="../develop/testing.html">
<a href="../develop/testing.html">
<b>7.5.</b>
单元测试和集成测试
</a>
</li>
<li class="chapter " data-level="7.6" data-path="../develop/client-go-sample.html">
<a href="../develop/client-go-sample.html">
<b>7.6.</b>
client-go示例
</a>
</li>
<li class="chapter " data-level="7.7" data-path="../develop/operator.html">
<a href="../develop/operator.html">
<b>7.7.</b>
Operator
</a>
</li>
<li class="chapter " data-level="7.8" data-path="../develop/advance-developer.html">
<a href="../develop/advance-developer.html">
<b>7.8.</b>
高级开发指南
</a>
</li>
<li class="chapter " data-level="7.9" data-path="../develop/contribute.html">
<a href="../develop/contribute.html">
<b>7.9.</b>
社区贡献
</a>
</li>
<li class="chapter " data-level="7.10" data-path="../develop/minikube.html">
<a href="../develop/minikube.html">
<b>7.10.</b>
Minikube
</a>
</li>
<li class="header">附录</li>
<li class="chapter " data-level="8.1" data-path="../appendix/">
<a href="../appendix/">
<b>8.1.</b>
附录说明
</a>
</li>
<li class="chapter " data-level="8.2" data-path="../appendix/debug-kubernetes-services.html">
<a href="../appendix/debug-kubernetes-services.html">
<b>8.2.</b>
Kubernetes中的应用故障排查
</a>
</li>
<li class="chapter " data-level="8.3" data-path="../appendix/material-share.html">
<a href="../appendix/material-share.html">
<b>8.3.</b>
Kubernetes相关资讯和情报链接
</a>
</li>
<li class="chapter " data-level="8.4" data-path="../appendix/docker-best-practice.html">
<a href="../appendix/docker-best-practice.html">
<b>8.4.</b>
Docker最佳实践
</a>
</li>
<li class="chapter " data-level="8.5" data-path="../appendix/tricks.html">
<a href="../appendix/tricks.html">
<b>8.5.</b>
使用技巧
</a>
</li>
<li class="chapter " data-level="8.6" data-path="../appendix/issues.html">
<a href="../appendix/issues.html">
<b>8.6.</b>
问题记录
</a>
</li>
<li class="chapter " data-level="8.7" data-path="../appendix/kubernetes-changelog.html">
<a href="../appendix/kubernetes-changelog.html">
<b>8.7.</b>
Kubernetes版本更新日志
</a>
<ul class="articles">
<li class="chapter " data-level="8.7.1" data-path="../appendix/kubernetes-1.7-changelog.html">
<a href="../appendix/kubernetes-1.7-changelog.html">
<b>8.7.1.</b>
Kubernetes1.7更新日志
</a>
</li>
<li class="chapter " data-level="8.7.2" data-path="../appendix/kubernetes-1.8-changelog.html">
<a href="../appendix/kubernetes-1.8-changelog.html">
<b>8.7.2.</b>
Kubernetes1.8更新日志
</a>
</li>
<li class="chapter " data-level="8.7.3" data-path="../appendix/kubernetes-1.9-changelog.html">
<a href="../appendix/kubernetes-1.9-changelog.html">
<b>8.7.3.</b>
Kubernetes1.9更新日志
</a>
</li>
<li class="chapter " data-level="8.7.4" data-path="../appendix/kubernetes-1.10-changelog.html">
<a href="../appendix/kubernetes-1.10-changelog.html">
<b>8.7.4.</b>
Kubernetes1.10更新日志
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="8.8" data-path="../appendix/summary-and-outlook.html">
<a href="../appendix/summary-and-outlook.html">
<b>8.8.</b>
Kubernetes及云原生年度总结及展望
</a>
<ul class="articles">
<li class="chapter " data-level="8.8.1" data-path="../appendix/kubernetes-and-cloud-native-summary-in-2017-and-outlook-for-2018.html">
<a href="../appendix/kubernetes-and-cloud-native-summary-in-2017-and-outlook-for-2018.html">
<b>8.8.1.</b>
Kubernetes与云原生2017年年终总结及2018年展望
</a>
</li>
</ul>
</li>
<li class="divider"></li>
<li>
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
本书使用 GitBook 发布
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href=".." >CRI - Container Runtime Interface容器运行时接口</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div class="search-plus" id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="cri---container-runtime-interface&#xFF08;&#x5BB9;&#x5668;&#x8FD0;&#x884C;&#x65F6;&#x63A5;&#x53E3;&#xFF09;">CRI - Container Runtime Interface&#xFF08;&#x5BB9;&#x5668;&#x8FD0;&#x884C;&#x65F6;&#x63A5;&#x53E3;&#xFF09;</h1>
<p>CRI&#x4E2D;&#x5B9A;&#x4E49;&#x4E86;<strong>&#x5BB9;&#x5668;</strong>&#x548C;<strong>&#x955C;&#x50CF;</strong>&#x7684;&#x670D;&#x52A1;&#x7684;&#x63A5;&#x53E3;&#xFF0C;&#x56E0;&#x4E3A;&#x5BB9;&#x5668;&#x8FD0;&#x884C;&#x65F6;&#x4E0E;&#x955C;&#x50CF;&#x7684;&#x751F;&#x547D;&#x5468;&#x671F;&#x662F;&#x5F7C;&#x6B64;&#x9694;&#x79BB;&#x7684;&#xFF0C;&#x56E0;&#x6B64;&#x9700;&#x8981;&#x5B9A;&#x4E49;&#x4E24;&#x4E2A;&#x670D;&#x52A1;&#x3002;&#x8BE5;&#x63A5;&#x53E3;&#x4F7F;&#x7528;<a href="https://developers.google.com/protocol-buffers/" target="_blank">Protocol Buffer</a>&#xFF0C;&#x57FA;&#x4E8E;<a href="https://grpc.io/" target="_blank">gRPC</a>&#xFF0C;&#x5728;kubernetes v1.7+&#x7248;&#x672C;&#x4E2D;&#x662F;&#x5728;<a href="https://github.com/kubernetes/kubernetes/tree/master/pkg/kubelet/apis/cri/v1alpha1/runtime" target="_blank">pkg/kubelet/apis/cri/v1alpha1/runtime</a>&#x7684;<code>api.proto</code>&#x4E2D;&#x5B9A;&#x4E49;&#x7684;&#x3002;</p>
<h2 id="cri&#x67B6;&#x6784;">CRI&#x67B6;&#x6784;</h2>
<p>Container Runtime&#x5B9E;&#x73B0;&#x4E86;CRI gRPC Server&#xFF0C;&#x5305;&#x62EC;<code>RuntimeService</code>&#x548C;<code>ImageService</code>&#x3002;&#x8BE5;gRPC Server&#x9700;&#x8981;&#x76D1;&#x542C;&#x672C;&#x5730;&#x7684;Unix socket&#xFF0C;&#x800C;kubelet&#x5219;&#x4F5C;&#x4E3A;gRPC Client&#x8FD0;&#x884C;&#x3002;</p>
<figure id="fig3.1.3.1.1"><img src="../images/cri-architecture.png" alt="CRI&#x67B6;&#x6784;-&#x56FE;&#x7247;&#x6765;&#x81EA;kubernetes blog"><figcaption>&#x56FE;&#x7247; - CRI&#x67B6;&#x6784;-&#x56FE;&#x7247;&#x6765;&#x81EA;kubernetes blog</figcaption></figure>
<h2 id="&#x542F;&#x7528;cri">&#x542F;&#x7528;CRI</h2>
<p>&#x9664;&#x975E;&#x96C6;&#x6210;&#x4E86;rktnetes&#xFF0C;&#x5426;&#x5219;CRI&#x90FD;&#x662F;&#x88AB;&#x9ED8;&#x8BA4;&#x542F;&#x7528;&#x4E86;&#xFF0C;kubernetes1.7&#x7248;&#x672C;&#x5F00;&#x59CB;&#x65E7;&#x7684;&#x9884;&#x96C6;&#x6210;&#x7684;docker CRI&#x5DF2;&#x7ECF;&#x88AB;&#x79FB;&#x9664;&#x3002;</p>
<p>&#x8981;&#x60F3;&#x542F;&#x7528;CRI&#x53EA;&#x9700;&#x8981;&#x5728;kubelet&#x7684;&#x542F;&#x52A8;&#x53C2;&#x6570;&#x91CD;&#x4F20;&#x5165;&#x6B64;&#x53C2;&#x6570;&#xFF1A;<code>--container-runtime-endpoint</code>&#x8FDC;&#x7A0B;&#x8FD0;&#x884C;&#x65F6;&#x670D;&#x52A1;&#x7684;&#x7AEF;&#x70B9;&#x3002;&#x5F53;&#x524D;Linux&#x4E0A;&#x652F;&#x6301;unix socket&#xFF0C;windows&#x4E0A;&#x652F;&#x6301;tcp&#x3002;&#x4F8B;&#x5982;&#xFF1A;<code>unix:///var/run/dockershim.sock</code>&#x3001; <code>tcp://localhost:373</code>&#xFF0C;&#x9ED8;&#x8BA4;&#x662F;<code>unix:///var/run/dockershim.sock</code>&#xFF0C;&#x5373;&#x9ED8;&#x8BA4;&#x4F7F;&#x7528;&#x672C;&#x5730;&#x7684;docker&#x4F5C;&#x4E3A;&#x5BB9;&#x5668;&#x8FD0;&#x884C;&#x65F6;&#x3002;</p>
<p>&#x5173;&#x4E8E;CRI&#x7684;&#x8BE6;&#x7EC6;&#x8FDB;&#x5C55;&#x8BF7;&#x53C2;&#x8003;<a href="https://github.com/kubernetes/community/blob/master/contributors/devel/container-runtime-interface.md" target="_blank">CRI: the Container Runtime Interface</a>&#x3002;</p>
<h2 id="cri&#x63A5;&#x53E3;">CRI&#x63A5;&#x53E3;</h2>
<p>Kubernetes1.9&#x4E2D;&#x7684;CRI&#x63A5;&#x53E3;&#x5728;<code>api.proto</code>&#x4E2D;&#x7684;&#x5B9A;&#x4E49;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre class="language-"><code class="lang-protobuf"><span class="token comment" spellcheck="true">// Runtime service defines the public APIs for remote container runtimes</span>
service RuntimeService <span class="token punctuation">{</span>
<span class="token comment" spellcheck="true">// Version returns the runtime name, runtime version, and runtime API version.</span>
rpc <span class="token function">Version</span><span class="token punctuation">(</span>VersionRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>VersionResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// RunPodSandbox creates and starts a pod-level sandbox. Runtimes must ensure</span>
<span class="token comment" spellcheck="true">// the sandbox is in the ready state on success.</span>
rpc <span class="token function">RunPodSandbox</span><span class="token punctuation">(</span>RunPodSandboxRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>RunPodSandboxResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// StopPodSandbox stops any running process that is part of the sandbox and</span>
<span class="token comment" spellcheck="true">// reclaims network resources (e.g., IP addresses) allocated to the sandbox.</span>
<span class="token comment" spellcheck="true">// If there are any running containers in the sandbox, they must be forcibly</span>
<span class="token comment" spellcheck="true">// terminated.</span>
<span class="token comment" spellcheck="true">// This call is idempotent, and must not return an error if all relevant</span>
<span class="token comment" spellcheck="true">// resources have already been reclaimed. kubelet will call StopPodSandbox</span>
<span class="token comment" spellcheck="true">// at least once before calling RemovePodSandbox. It will also attempt to</span>
<span class="token comment" spellcheck="true">// reclaim resources eagerly, as soon as a sandbox is not needed. Hence,</span>
<span class="token comment" spellcheck="true">// multiple StopPodSandbox calls are expected.</span>
rpc <span class="token function">StopPodSandbox</span><span class="token punctuation">(</span>StopPodSandboxRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>StopPodSandboxResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// RemovePodSandbox removes the sandbox. If there are any running containers</span>
<span class="token comment" spellcheck="true">// in the sandbox, they must be forcibly terminated and removed.</span>
<span class="token comment" spellcheck="true">// This call is idempotent, and must not return an error if the sandbox has</span>
<span class="token comment" spellcheck="true">// already been removed.</span>
rpc <span class="token function">RemovePodSandbox</span><span class="token punctuation">(</span>RemovePodSandboxRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>RemovePodSandboxResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// PodSandboxStatus returns the status of the PodSandbox. If the PodSandbox is not</span>
<span class="token comment" spellcheck="true">// present, returns an error.</span>
rpc <span class="token function">PodSandboxStatus</span><span class="token punctuation">(</span>PodSandboxStatusRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>PodSandboxStatusResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// ListPodSandbox returns a list of PodSandboxes.</span>
rpc <span class="token function">ListPodSandbox</span><span class="token punctuation">(</span>ListPodSandboxRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>ListPodSandboxResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// CreateContainer creates a new container in specified PodSandbox</span>
rpc <span class="token function">CreateContainer</span><span class="token punctuation">(</span>CreateContainerRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>CreateContainerResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// StartContainer starts the container.</span>
rpc <span class="token function">StartContainer</span><span class="token punctuation">(</span>StartContainerRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>StartContainerResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// StopContainer stops a running container with a grace period (i.e., timeout).</span>
<span class="token comment" spellcheck="true">// This call is idempotent, and must not return an error if the container has</span>
<span class="token comment" spellcheck="true">// already been stopped.</span>
<span class="token comment" spellcheck="true">// TODO: what must the runtime do after the grace period is reached?</span>
rpc <span class="token function">StopContainer</span><span class="token punctuation">(</span>StopContainerRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>StopContainerResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// RemoveContainer removes the container. If the container is running, the</span>
<span class="token comment" spellcheck="true">// container must be forcibly removed.</span>
<span class="token comment" spellcheck="true">// This call is idempotent, and must not return an error if the container has</span>
<span class="token comment" spellcheck="true">// already been removed.</span>
rpc <span class="token function">RemoveContainer</span><span class="token punctuation">(</span>RemoveContainerRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>RemoveContainerResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// ListContainers lists all containers by filters.</span>
rpc <span class="token function">ListContainers</span><span class="token punctuation">(</span>ListContainersRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>ListContainersResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// ContainerStatus returns status of the container. If the container is not</span>
<span class="token comment" spellcheck="true">// present, returns an error.</span>
rpc <span class="token function">ContainerStatus</span><span class="token punctuation">(</span>ContainerStatusRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>ContainerStatusResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// UpdateContainerResources updates ContainerConfig of the container.</span>
rpc <span class="token function">UpdateContainerResources</span><span class="token punctuation">(</span>UpdateContainerResourcesRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>UpdateContainerResourcesResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// ExecSync runs a command in a container synchronously.</span>
rpc <span class="token function">ExecSync</span><span class="token punctuation">(</span>ExecSyncRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>ExecSyncResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// Exec prepares a streaming endpoint to execute a command in the container.</span>
rpc <span class="token function">Exec</span><span class="token punctuation">(</span>ExecRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>ExecResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// Attach prepares a streaming endpoint to attach to a running container.</span>
rpc <span class="token function">Attach</span><span class="token punctuation">(</span>AttachRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>AttachResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// PortForward prepares a streaming endpoint to forward ports from a PodSandbox.</span>
rpc <span class="token function">PortForward</span><span class="token punctuation">(</span>PortForwardRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>PortForwardResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// ContainerStats returns stats of the container. If the container does not</span>
<span class="token comment" spellcheck="true">// exist, the call returns an error.</span>
rpc <span class="token function">ContainerStats</span><span class="token punctuation">(</span>ContainerStatsRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>ContainerStatsResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// ListContainerStats returns stats of all running containers.</span>
rpc <span class="token function">ListContainerStats</span><span class="token punctuation">(</span>ListContainerStatsRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>ListContainerStatsResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// UpdateRuntimeConfig updates the runtime configuration based on the given request.</span>
rpc <span class="token function">UpdateRuntimeConfig</span><span class="token punctuation">(</span>UpdateRuntimeConfigRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>UpdateRuntimeConfigResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// Status returns the status of the runtime.</span>
rpc <span class="token function">Status</span><span class="token punctuation">(</span>StatusRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>StatusResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// ImageService defines the public APIs for managing images.</span>
service ImageService <span class="token punctuation">{</span>
<span class="token comment" spellcheck="true">// ListImages lists existing images.</span>
rpc <span class="token function">ListImages</span><span class="token punctuation">(</span>ListImagesRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>ListImagesResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// ImageStatus returns the status of the image. If the image is not</span>
<span class="token comment" spellcheck="true">// present, returns a response with ImageStatusResponse.Image set to</span>
<span class="token comment" spellcheck="true">// nil.</span>
rpc <span class="token function">ImageStatus</span><span class="token punctuation">(</span>ImageStatusRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>ImageStatusResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// PullImage pulls an image with authentication config.</span>
rpc <span class="token function">PullImage</span><span class="token punctuation">(</span>PullImageRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>PullImageResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// RemoveImage removes the image.</span>
<span class="token comment" spellcheck="true">// This call is idempotent, and must not return an error if the image has</span>
<span class="token comment" spellcheck="true">// already been removed.</span>
rpc <span class="token function">RemoveImage</span><span class="token punctuation">(</span>RemoveImageRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>RemoveImageResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token comment" spellcheck="true">// ImageFSInfo returns information of the filesystem that is used to store images.</span>
rpc <span class="token function">ImageFsInfo</span><span class="token punctuation">(</span>ImageFsInfoRequest<span class="token punctuation">)</span> returns <span class="token punctuation">(</span>ImageFsInfoResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<p>&#x8FD9;&#x5176;&#x4E2D;&#x5305;&#x542B;&#x4E86;&#x4E24;&#x4E2A;gRPC&#x670D;&#x52A1;&#xFF1A;</p>
<ul>
<li><strong>RuntimeService</strong>&#xFF1A;&#x5BB9;&#x5668;&#x548C;Sandbox&#x8FD0;&#x884C;&#x65F6;&#x7BA1;&#x7406;</li>
<li><strong>ImageService</strong>&#xFF1A;&#x63D0;&#x4F9B;&#x4E86;&#x4ECE;&#x955C;&#x50CF;&#x4ED3;&#x5E93;&#x62C9;&#x53D6;&#x3001;&#x67E5;&#x770B;&#x3001;&#x548C;&#x79FB;&#x9664;&#x955C;&#x50CF;&#x7684;RPC&#x3002;</li>
</ul>
<h2 id="&#x5F53;&#x524D;&#x652F;&#x6301;&#x7684;cri&#x540E;&#x7AEF;">&#x5F53;&#x524D;&#x652F;&#x6301;&#x7684;CRI&#x540E;&#x7AEF;</h2>
<p>&#x6211;&#x4EEC;&#x6700;&#x521D;&#x5728;&#x4F7F;&#x7528;Kubernetes&#x65F6;&#x901A;&#x5E38;&#x4F1A;&#x9ED8;&#x8BA4;&#x4F7F;&#x7528;Docker&#x4F5C;&#x4E3A;&#x5BB9;&#x5668;&#x8FD0;&#x884C;&#x65F6;&#xFF0C;&#x5176;&#x5B9E;&#x4ECE;Kubernetes1.5&#x5F00;&#x59CB;&#x5DF2;&#x7ECF;&#x5F00;&#x59CB;&#x652F;&#x6301;CRI&#xFF0C;&#x76EE;&#x524D;&#x662F;&#x5904;&#x4E8E;Alpha&#x7248;&#x672C;&#xFF0C;&#x901A;&#x8FC7;CRI&#x63A5;&#x53E3;&#x53EF;&#x4EE5;&#x6307;&#x5B9A;&#x4F7F;&#x7528;&#x5176;&#x5B83;&#x5BB9;&#x5668;&#x8FD0;&#x884C;&#x65F6;&#x4F5C;&#x4E3A;Pod&#x7684;&#x540E;&#x7AEF;&#xFF0C;&#x76EE;&#x524D;&#x652F;&#x6301; CRI &#x7684;&#x540E;&#x7AEF;&#x6709;&#xFF1A;</p>
<ul>
<li><a href="https://github.com/kubernetes-incubator/cri-o" target="_blank">cri-o</a>&#xFF1A;&#x540C;&#x65F6;&#x517C;&#x5BB9;OCI&#x548C;CRI&#x7684;&#x5BB9;&#x5668;&#x8FD0;&#x884C;&#x65F6;</li>
<li><a href="https://github.com/containerd/cri-containerd" target="_blank">cri-containerd</a>&#xFF1A;&#x57FA;&#x4E8E;<a href="https://github.com/containerd/containerd" target="_blank">Containerd</a>&#x7684;Kubernetes CRI &#x5B9E;&#x73B0;</li>
<li><a href="https://coreos.com/rkt/" target="_blank">rkt</a>&#xFF1A;&#x7531;&#x4E8E;CoreOS&#x4E3B;&#x63A8;&#x7684;&#x7528;&#x6765;&#x8DDF;docker&#x6297;&#x8861;&#x7684;&#x5BB9;&#x5668;&#x8FD0;&#x884C;&#x65F6;</li>
<li><a href="https://github.com/kubernetes/frakti" target="_blank">frakti</a>&#xFF1A;&#x57FA;&#x4E8E;hypervisor&#x7684;CRI</li>
<li><a href="https://www.docker.com" target="_blank">docker</a>&#xFF1A;kuberentes&#x6700;&#x521D;&#x5C31;&#x5F00;&#x59CB;&#x652F;&#x6301;&#x7684;&#x5BB9;&#x5668;&#x8FD0;&#x884C;&#x65F6;&#xFF0C;&#x76EE;&#x524D;&#x8FD8;&#x6CA1;&#x5B8C;&#x5168;&#x4ECE;kubelet&#x4E2D;&#x89E3;&#x8026;&#xFF0C;docker&#x516C;&#x53F8;&#x540C;&#x65F6;&#x63A8;&#x5E7F;&#x4E86;<a href="https://www.opencontainers.org/" target="_blank">OCI</a>&#x6807;&#x51C6;</li>
<li><a href="https://github.com/clearcontainers" target="_blank">clear-containers</a>&#xFF1A;&#x7531;Intel&#x63A8;&#x51FA;&#x7684;&#x540C;&#x65F6;&#x517C;&#x5BB9;OCI&#x548C;CRI&#x7684;&#x5BB9;&#x5668;&#x8FD0;&#x884C;&#x65F6;</li>
<li><a href="https://katacontainers.io/" target="_blank">kata-containers</a>&#xFF1A;&#x7B26;&#x5408;OCI&#x89C4;&#x8303;&#x540C;&#x65F6;&#x517C;&#x5BB9;CRI</li>
</ul>
<p>CRI&#x662F;&#x7531;<a href="https://kubernetes.slack.com/archives/sig-node" target="_blank">SIG-Node</a>&#x6765;&#x7EF4;&#x62A4;&#x7684;&#x3002;</p>
<h2 id="&#x53C2;&#x8003;">&#x53C2;&#x8003;</h2>
<ul>
<li><a href="https://sreeninet.wordpress.com/2017/02/11/kubernetes-cri-and-minikube/" target="_blank">Kubernetes CRI and Minikube</a></li>
<li><a href="https://feisky.xyz/2016/09/24/Kubernetes-container-runtime-interface/" target="_blank">Kubernetes container runtime interface</a></li>
<li><a href="https://www.projectatomic.io/blog/2017/02/crio-runtimes/" target="_blank">CRI-O and Alternative Runtimes in Kubernetes</a></li>
<li><a href="http://www.infoq.com/cn/news/2017/02/Docker-Containerd-RunC" target="_blank">Docker&#x3001;Containerd&#x3001;RunC...&#xFF1A;&#x4F60;&#x5E94;&#x8BE5;&#x77E5;&#x9053;&#x7684;&#x6240;&#x6709;</a></li>
<li><a href="http://blog.kubernetes.io/2016/12/container-runtime-interface-cri-in-kubernetes.html" target="_blank">Introducing Container Runtime Interface (CRI) in Kubernetes</a> </li>
</ul>
<footer class="page-footer"><span class="copyright">Copyright &#xA9; jimmysong.io 2017-2018 all right reserved&#xFF0C;powered by Gitbook</span><span class="footer-modification">Updated at
2018-02-09 16:43:37
</span></footer>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="open-interfaces.html" class="navigation navigation-prev " aria-label="Previous page: 开放接口">
<i class="fa fa-angle-left"></i>
</a>
<a href="cni.html" class="navigation navigation-next " aria-label="Next page: CNI - Container Network Interface容器网络接口">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"CRI - Container Runtime Interface容器运行时接口","level":"3.1.3.1","depth":3,"next":{"title":"CNI - Container Network Interface容器网络接口","level":"3.1.3.2","depth":3,"path":"concepts/cni.md","ref":"concepts/cni.md","articles":[]},"previous":{"title":"开放接口","level":"3.1.3","depth":2,"path":"concepts/open-interfaces.md","ref":"concepts/open-interfaces.md","articles":[{"title":"CRI - Container Runtime Interface容器运行时接口","level":"3.1.3.1","depth":3,"path":"concepts/cri.md","ref":"concepts/cri.md","articles":[]},{"title":"CNI - Container Network Interface容器网络接口","level":"3.1.3.2","depth":3,"path":"concepts/cni.md","ref":"concepts/cni.md","articles":[]},{"title":"CSI - Container Storage Interface容器存储接口","level":"3.1.3.3","depth":3,"path":"concepts/csi.md","ref":"concepts/csi.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.3.1.1","level":"5.3.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.3.1.1"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.2","level":"5.3.1","list_caption":"Figure: traefik-nginx","alt":"traefik-nginx","nro":97,"url":"../images/traefik-nginx.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"traefik-nginx","attributes":{},"skip":false,"key":"5.3.1.2"},{"backlink":"practice/traefik-ingress-installation.html#fig5.3.1.3","level":"5.3.1","list_caption":"Figure: traefik-guestbook","alt":"traefik-guestbook","nro":98,"url":"../images/traefik-guestbook.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"traefik-guestbook","attributes":{},"skip":false,"key":"5.3.1.3"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.1","level":"5.3.2","list_caption":"Figure: 使用dashboard来扩容","alt":"使用dashboard来扩容","nro":99,"url":"../images/dashbaord-scale.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"使用dashboard来扩容","attributes":{},"skip":false,"key":"5.3.2.1"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.2","level":"5.3.2","list_caption":"Figure: Traefik的UI","alt":"Traefik的UI","nro":100,"url":"../images/traefik-dashboard-locust.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Traefik的UI","attributes":{},"skip":false,"key":"5.3.2.2"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.3","level":"5.3.2","list_caption":"Figure: Locust启动界面","alt":"Locust启动界面","nro":101,"url":"../images/locust-start-swarming.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Locust启动界面","attributes":{},"skip":false,"key":"5.3.2.3"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.4","level":"5.3.2","list_caption":"Figure: Dashboard查看页面","alt":"Dashboard查看页面","nro":102,"url":"../images/sample-webapp-rc.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Dashboard查看页面","attributes":{},"skip":false,"key":"5.3.2.4"},{"backlink":"practice/distributed-load-test.html#fig5.3.2.5","level":"5.3.2","list_caption":"Figure: Locust测试结果页面","alt":"Locust测试结果页面","nro":103,"url":"../images/locust-dashboard.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Locust测试结果页面","attributes":{},"skip":false,"key":"5.3.2.5"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.3.3.1","level":"5.3.3","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":104,"url":"../images/kubenetes-e2e-test.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"5.3.3.1"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig5.3.3.2","level":"5.3.3","list_caption":"Figure: locust测试页面","alt":"locust测试页面","nro":105,"url":"../images/kubernetes-locust-test.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"locust测试页面","attributes":{},"skip":false,"key":"5.3.3.2"},{"backlink":"practice/edge-node-configuration.html#fig5.3.4.1","level":"5.3.4","list_caption":"Figure: 边缘节点架构","alt":"边缘节点架构","nro":106,"url":"../images/kubernetes-edge-node-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"边缘节点架构","attributes":{},"skip":false,"key":"5.3.4.1"},{"backlink":"practice/edge-node-configuration.html#fig5.3.4.2","level":"5.3.4","list_caption":"Figure: 使用域名来访问Kubernetes中的服务","alt":"使用域名来访问Kubernetes中的服务","nro":107,"url":"../images/accessing-kubernetes-services-with-dns-name.png","index":2,"caption_template":"图片 - _CAPTION_","label":"使用域名来访问Kubernetes中的服务","attributes":{},"skip":false,"key":"5.3.4.2"},{"backlink":"practice/configuring-dns.html#fig5.3.6.1","level":"5.3.6","list_caption":"Figure: DNS lookup flow","alt":"DNS lookup flow","nro":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.3.6.1"},{"backlink":"practice/master-ha.html#fig5.4.1.1","level":"5.4.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.4.1.1"},{"backlink":"practice/app-log-collection.html#fig5.4.3.1","level":"5.4.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.4.3.1"},{"backlink":"practice/app-log-collection.html#fig5.4.3.2","level":"5.4.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.4.3.2"},{"backlink":"practice/app-log-collection.html#fig5.4.3.3","level":"5.4.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.4.3.3"},{"backlink":"practice/monitor.html#fig5.4.5.1","level":"5.4.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.4.5.1"},{"backlink":"practice/monitor.html#fig5.4.5.2","level":"5.4.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.4.5.2"},{"backlink":"practice/monitor.html#fig5.4.5.3","level":"5.4.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.4.5.3"},{"backlink":"practice/monitor.html#fig5.4.5.4","level":"5.4.5","list_caption":"Figure: 应用监控架构图","alt":"应用监控架构图","nro":116,"url":"../images/kubernetes-app-monitoring.png","index":4,"caption_template":"图片 - _CAPTION_","label":"应用监控架构图","attributes":{},"skip":false,"key":"5.4.5.4"},{"backlink":"practice/monitor.html#fig5.4.5.5","level":"5.4.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.4.5.5"},{"backlink":"practice/data-persistence-problem.html#fig5.4.6.1","level":"5.4.6","list_caption":"Figure: 日志持久化收集解决方案示意图","alt":"日志持久化收集解决方案示意图","nro":118,"url":"../images/log-persistence-logstash.png","index":1,"caption_template":"图片 - _CAPTION_","label":"日志持久化收集解决方案示意图","attributes":{},"skip":false,"key":"5.4.6.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.5.1.2.1","level":"5.5.1.2","list_caption":"Figure: 创建存储","alt":"创建存储","nro":119,"url":"../images/create-gluster-storage.png","index":1,"caption_template":"图片 - _CAPTION_","label":"创建存储","attributes":{},"skip":false,"key":"5.5.1.2.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig5.5.1.2.2","level":"5.5.1.2","list_caption":"Figure: Screen Shot 2017-03-24 at 11.09.34.png","alt":"Screen Shot 2017-03-24 at 11.09.34.png","nro":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.5.1.2.2"},{"backlink":"practice/openebs.html#fig5.5.3.1","level":"5.5.3","list_caption":"Figure: OpenEBS集群数据平面图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md","alt":"OpenEBS集群数据平面图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md","nro":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.5.3.1"},{"backlink":"practice/openebs.html#fig5.5.3.2","level":"5.5.3","list_caption":"Figure: OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md","alt":"OpenEBS集群的控制平面(图片来自https://github.com/openebs/openebs/blob/master/contribute/design/README.md","nro":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.5.3.2"},{"backlink":"practice/using-openebs-for-persistent-storage.html#fig5.5.3.1.1","level":"5.5.3.1","list_caption":"Figure: Kubernetes iSCSI架构","alt":"Kubernetes iSCSI架构","nro":123,"url":"../images/iscsi-on-kubernetes.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes iSCSI架构","attributes":{},"skip":false,"key":"5.5.3.1.1"},{"backlink":"practice/using-heapster-to-get-object-metrics.html#fig5.6.1.1.1","level":"5.6.1.1","list_caption":"Figure: Heapster架构图","alt":"Heapster架构图","nro":124,"url":"../images/heapster-architecture.png","index":1,"caption_template":"图片 - _CAPTION_","label":"Heapster架构图","attributes":{},"skip":false,"key":"5.6.1.1.1"},{"backlink":"practice/prometheus.html#fig5.6.2.1","level":"5.6.2","list_caption":"Figure: Prometheus 架构图","alt":"Prometheus 架构图","nro":125,"url":"../images/prometheus-architecture.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Prometheus 架构图","attributes":{},"skip":false,"key":"5.6.2.1"},{"backlink":"practice/using-prometheus-to-monitor-kuberentes-cluster.html#fig5.6.2.1.1","level":"5.6.2.1","list_caption":"Figure: Grafana页面","alt":"Grafana页面","nro":126,"url":"../images/kubernetes-prometheus-monitoring.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Grafana页面","attributes":{},"skip":false,"key":"5.6.2.1.1"},{"backlink":"practice/helm.html#fig5.7.1.1","level":"5.7.1","list_caption":"Figure: Helm chart源","alt":"Helm chart源","nro":127,"url":"../images/helm-charts-repository.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm chart源","attributes":{},"skip":false,"key":"5.7.1.1"},{"backlink":"practice/helm.html#fig5.7.1.2","level":"5.7.1","list_caption":"Figure: TODO应用的Web页面","alt":"TODO应用的Web页面","nro":128,"url":"../images/helm-mean-todo-aholic.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"TODO应用的Web页面","attributes":{},"skip":false,"key":"5.7.1.2"},{"backlink":"practice/create-private-charts-repo.html#fig5.7.2.1","level":"5.7.2","list_caption":"Figure: Helm monocular界面","alt":"Helm monocular界面","nro":129,"url":"../images/helm-monocular-jimmysong.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Helm monocular界面","attributes":{},"skip":false,"key":"5.7.2.1"},{"backlink":"practice/jenkins-ci-cd.html#fig5.8.1.1","level":"5.8.1","list_caption":"Figure: 基于Jenkins的持续集成与发布","alt":"基于Jenkins的持续集成与发布","nro":130,"url":"../images/kubernetes-jenkins-ci-cd.png","index":1,"caption_template":"图片 - _CAPTION_","label":"基于Jenkins的持续集成与发布","attributes":{},"skip":false,"key":"5.8.1.1"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.1","level":"5.8.2","list_caption":"Figure: OAuth注册","alt":"OAuth注册","nro":131,"url":"../images/github-oauth-register.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"OAuth注册","attributes":{},"skip":false,"key":"5.8.2.1"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.2","level":"5.8.2","list_caption":"Figure: OAuth key","alt":"OAuth key","nro":132,"url":"../images/github-oauth-drone-key.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"OAuth key","attributes":{},"skip":false,"key":"5.8.2.2"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.3","level":"5.8.2","list_caption":"Figure: Drone登陆界面","alt":"Drone登陆界面","nro":133,"url":"../images/drone-login-github.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"Drone登陆界面","attributes":{},"skip":false,"key":"5.8.2.3"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.4","level":"5.8.2","list_caption":"Figure: Github启用repo设置","alt":"Github启用repo设置","nro":134,"url":"../images/drone-github-active.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"Github启用repo设置","attributes":{},"skip":false,"key":"5.8.2.4"},{"backlink":"practice/drone-ci-cd.html#fig5.8.2.5","level":"5.8.2","list_caption":"Figure: Github单个repo设置","alt":"Github单个repo设置","nro":135,"url":"../images/drone-github-repo-setting.jpg","index":5,"caption_template":"图片 - _CAPTION_","label":"Github单个repo设置","attributes":{},"skip":false,"key":"5.8.2.5"},{"backlink":"practice/manually-upgrade.html#fig5.9.1.1","level":"5.9.1","list_caption":"Figure: Kubernetes零宕机时间升级建议","alt":"Kubernetes零宕机时间升级建议","nro":136,"url":"../images/zero-downtime-kubernetes-upgrade-tips.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Kubernetes零宕机时间升级建议","attributes":{},"skip":false,"key":"5.9.1.1"},{"backlink":"practice/manually-upgrade.html#fig5.9.1.2","level":"5.9.1","list_caption":"Figure: Kuberentes API对象的版本演进","alt":"Kuberentes API对象的版本演进","nro":137,"url":"../images/kubernetes-apversions-changes.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Kuberentes API对象的版本演进","attributes":{},"skip":false,"key":"5.9.1.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.1","level":"5.9.2","list_caption":"Figure: 登陆界面","alt":"登陆界面","nro":138,"url":"../images/kubernetes-dashboard-1.7.1-login.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"登陆界面","attributes":{},"skip":false,"key":"5.9.2.1"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.2","level":"5.9.2","list_caption":"Figure: 首页","alt":"首页","nro":139,"url":"../images/kubernetes-dashboard-1.7.1-default-page.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"首页","attributes":{},"skip":false,"key":"5.9.2.2"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.3","level":"5.9.2","list_caption":"Figure: 用户空间","alt":"用户空间","nro":140,"url":"../images/kubernetes-dashboard-1.7.1-brand.jpg","index":3,"caption_template":"图片 - _CAPTION_","label":"用户空间","attributes":{},"skip":false,"key":"5.9.2.3"},{"backlink":"practice/dashboard-upgrade.html#fig5.9.2.4","level":"5.9.2","list_caption":"Figure: kubeconfig文件","alt":"kubeconfig文件","nro":141,"url":"../images/brand-kubeconfig-yaml.jpg","index":4,"caption_template":"图片 - _CAPTION_","label":"kubeconfig文件","attributes":{},"skip":false,"key":"5.9.2.4"},{"backlink":"usecases/microservices.html#fig6.2.1","level":"6.2","list_caption":"Figure: 微服务关注的部分","alt":"微服务关注的部分","nro":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/linkerd.html#fig6.3.2.1","level":"6.3.2","list_caption":"Figure: source https://linkerd.io","alt":"source https://linkerd.io","nro":161,"url":"../images/diagram-individual-instance.png","index":1,"caption_template":"图片 - _CAPTION_","label":"source https://linkerd.io","attributes":{},"skip":false,"key":"6.3.2.1"},{"backlink":"usecases/linkerd-user-guide.html#fig6.3.2.1.1","level":"6.3.2.1","list_caption":"Figure: Jenkins pipeline","alt":"Jenkins pipeline","nro":162,"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":163,"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":164,"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":165,"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":166,"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":167,"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":168,"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":169,"url":"../images/conduit-dashboard.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"Conduit dashboard","attributes":{},"skip":false,"key":"6.3.3.2.1"},{"backlink":"usecases/big-data.html#fig6.4.1","level":"6.4","list_caption":"Figure: Spark on yarn with kubernetes","alt":"Spark on yarn with kubernetes","nro":170,"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":171,"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":172,"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":173,"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":174,"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":175,"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":176,"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":177,"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":178,"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":179,"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":180,"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":181,"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":182,"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":183,"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":184,"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":185,"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":186,"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":187,"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":188,"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/cri.md","mtime":"2018-02-09T08:43:37.847Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2018-04-11T04:53:23.554Z"},"basePath":"..","book":{"language":""}});
});
</script>
</div>
<script src="../gitbook/gitbook.js"></script>
<script src="../gitbook/theme.js"></script>
<script src="../gitbook/gitbook-plugin-github/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-splitter/splitter.js"></script>
<script src="../gitbook/gitbook-plugin-page-toc-button/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-editlink/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-back-to-top-button/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-search-plus/jquery.mark.min.js"></script>
<script src="../gitbook/gitbook-plugin-search-plus/search.js"></script>
<script src="../gitbook/gitbook-plugin-github-buttons/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-3-ba/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-sharing/buttons.js"></script>
<script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>