kubernetes-handbook/practice/using-glusterfs-for-persist...

1810 lines
82 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-cn" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>4.4.1.1 使用GlusterFS做持久化存储 · Kubernetes Handbook</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-page-footer-ex/style/plugin.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-search-plus/search.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.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="storage-for-containers-using-glusterfs-with-openshift.html" />
<link rel="prev" href="glusterfs.html" />
</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 class="chapter " data-level="1.1" data-path="../">
<a href="../">
1. 前言
</a>
</li>
<li class="chapter " data-level="1.2" data-path="../concepts/">
<a href="../concepts/">
2. 概念原理
</a>
<ul class="articles">
<li class="chapter " data-level="1.2.1" data-path="../concepts/concepts.html">
<a href="../concepts/concepts.html">
2.1 设计理念
</a>
</li>
<li class="chapter " data-level="1.2.2" data-path="../concepts/objects.html">
<a href="../concepts/objects.html">
2.2 主要概念
</a>
<ul class="articles">
<li class="chapter " data-level="1.2.2.1" data-path="../concepts/pod-overview.html">
<a href="../concepts/pod-overview.html">
2.2.1 Pod
</a>
<ul class="articles">
<li class="chapter " data-level="1.2.2.1.1" data-path="../concepts/pod.html">
<a href="../concepts/pod.html">
2.2.1.1 Pod解析
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.2.2.2" data-path="../concepts/node.html">
<a href="../concepts/node.html">
2.2.2 Node
</a>
</li>
<li class="chapter " data-level="1.2.2.3" data-path="../concepts/namespace.html">
<a href="../concepts/namespace.html">
2.2.3 Namespace
</a>
</li>
<li class="chapter " data-level="1.2.2.4" data-path="../concepts/service.html">
<a href="../concepts/service.html">
2.2.4 Service
</a>
</li>
<li class="chapter " data-level="1.2.2.5" data-path="../concepts/volume.html">
<a href="../concepts/volume.html">
2.2.5 Volume和Persistent Volume
</a>
</li>
<li class="chapter " data-level="1.2.2.6" data-path="../concepts/deployment.html">
<a href="../concepts/deployment.html">
2.2.6 Deployment
</a>
</li>
<li class="chapter " data-level="1.2.2.7" data-path="../concepts/secret.html">
<a href="../concepts/secret.html">
2.2.7 Secret
</a>
</li>
<li class="chapter " data-level="1.2.2.8" data-path="../concepts/statefulset.html">
<a href="../concepts/statefulset.html">
2.2.8 StatefulSet
</a>
</li>
<li class="chapter " data-level="1.2.2.9" data-path="../concepts/daemonset.html">
<a href="../concepts/daemonset.html">
2.2.9 DaemonSet
</a>
</li>
<li class="chapter " data-level="1.2.2.10" data-path="../concepts/serviceaccount.html">
<a href="../concepts/serviceaccount.html">
2.2.10 ServiceAccount
</a>
</li>
<li class="chapter " data-level="1.2.2.11" data-path="../concepts/replicaset.html">
<a href="../concepts/replicaset.html">
2.2.11 ReplicationController和ReplicaSet
</a>
</li>
<li class="chapter " data-level="1.2.2.12" data-path="../concepts/job.html">
<a href="../concepts/job.html">
2.2.12 Job
</a>
</li>
<li class="chapter " data-level="1.2.2.13" data-path="../concepts/cronjob.html">
<a href="../concepts/cronjob.html">
2.2.13 CronJob
</a>
</li>
<li class="chapter " data-level="1.2.2.14" data-path="../concepts/ingress.html">
<a href="../concepts/ingress.html">
2.2.14 Ingress
</a>
</li>
<li class="chapter " data-level="1.2.2.15" data-path="../concepts/configmap.html">
<a href="../concepts/configmap.html">
2.2.15 ConfigMap
</a>
</li>
<li class="chapter " data-level="1.2.2.16" data-path="../concepts/horizontal-pod-autoscaling.html">
<a href="../concepts/horizontal-pod-autoscaling.html">
2.2.16 Horizontal Pod Autoscaling
</a>
</li>
<li class="chapter " data-level="1.2.2.17" data-path="../concepts/label.html">
<a href="../concepts/label.html">
2.2.17 Label
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.3" data-path="../guide/">
<a href="../guide/">
3. 用户指南
</a>
<ul class="articles">
<li class="chapter " data-level="1.3.1" data-path="../guide/resource-configuration.html">
<a href="../guide/resource-configuration.html">
3.1 资源配置
</a>
<ul class="articles">
<li class="chapter " data-level="1.3.1.1" data-path="../guide/configure-liveness-readiness-probes.html">
<a href="../guide/configure-liveness-readiness-probes.html">
3.1.1 配置Pod的liveness和readiness探针
</a>
</li>
<li class="chapter " data-level="1.3.1.2" data-path="../guide/configure-pod-service-account.html">
<a href="../guide/configure-pod-service-account.html">
3.1.2 配置Pod的Service Account
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.3.2" data-path="../guide/command-usage.html">
<a href="../guide/command-usage.html">
3.2 命令使用
</a>
<ul class="articles">
<li class="chapter " data-level="1.3.2.1" data-path="../guide/using-kubectl.html">
<a href="../guide/using-kubectl.html">
3.2.1 使用kubectl
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.3.3" data-path="../guide/cluster-management.html">
<a href="../guide/cluster-management.html">
3.3 集群管理
</a>
<ul class="articles">
<li class="chapter " data-level="1.3.3.1" data-path="../guide/managing-tls-in-a-cluster.html">
<a href="../guide/managing-tls-in-a-cluster.html">
3.3.1 管理集群中的TLS
</a>
</li>
<li class="chapter " data-level="1.3.3.2" data-path="../guide/kubelet-authentication-authorization.html">
<a href="../guide/kubelet-authentication-authorization.html">
3.3.2 kubelet的认证授权
</a>
</li>
<li class="chapter " data-level="1.3.3.3" data-path="../guide/tls-bootstrapping.html">
<a href="../guide/tls-bootstrapping.html">
3.3.3 TLS bootstrap
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.3.4" data-path="../guide/access-kubernetes-cluster.html">
<a href="../guide/access-kubernetes-cluster.html">
3.4 访问 Kubernetes 集群
</a>
<ul class="articles">
<li class="chapter " data-level="1.3.4.1" data-path="../guide/access-cluster.html">
<a href="../guide/access-cluster.html">
3.4.1 访问集群
</a>
</li>
<li class="chapter " data-level="1.3.4.2" data-path="../guide/authenticate-across-clusters-kubeconfig.html">
<a href="../guide/authenticate-across-clusters-kubeconfig.html">
3.4.2 使用 kubeconfig 文件配置跨集群认证
</a>
</li>
<li class="chapter " data-level="1.3.4.3" data-path="../guide/connecting-to-applications-port-forward.html">
<a href="../guide/connecting-to-applications-port-forward.html">
3.4.3 通过端口转发访问集群中的应用程序
</a>
</li>
<li class="chapter " data-level="1.3.4.4" data-path="../guide/service-access-application-cluster.html">
<a href="../guide/service-access-application-cluster.html">
3.4.4 使用 service 访问群集中的应用程序
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.3.5" data-path="../guide/application-development-deployment-flow.html">
<a href="../guide/application-development-deployment-flow.html">
3.5 在kubernetes中开发部署应用
</a>
<ul class="articles">
<li class="chapter " data-level="1.3.5.1" data-path="../guide/deploy-applications-in-kubernetes.html">
<a href="../guide/deploy-applications-in-kubernetes.html">
3.5.1 适用于kubernetes的应用开发部署流程
</a>
</li>
<li class="chapter " data-level="1.3.5.2" data-path="../guide/migrating-hadoop-yarn-to-kubernetes.html">
<a href="../guide/migrating-hadoop-yarn-to-kubernetes.html">
3.5.2 迁移传统应用到kubernetes中——以Hadoop YARN为例
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.4" data-path="./">
<a href="./">
4. 最佳实践
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.1" data-path="install-kbernetes1.6-on-centos.html">
<a href="install-kbernetes1.6-on-centos.html">
4.1 在CentOS上部署kubernetes1.6集群
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.1.1" data-path="create-tls-and-secret-key.html">
<a href="create-tls-and-secret-key.html">
4.1.1 创建TLS证书和秘钥
</a>
</li>
<li class="chapter " data-level="1.4.1.2" data-path="create-kubeconfig.html">
<a href="create-kubeconfig.html">
4.1.2 创建kubeconfig文件
</a>
</li>
<li class="chapter " data-level="1.4.1.3" data-path="etcd-cluster-installation.html">
<a href="etcd-cluster-installation.html">
4.1.3 创建高可用etcd集群
</a>
</li>
<li class="chapter " data-level="1.4.1.4" data-path="kubectl-installation.html">
<a href="kubectl-installation.html">
4.1.4 安装kubectl命令行工具
</a>
</li>
<li class="chapter " data-level="1.4.1.5" data-path="master-installation.html">
<a href="master-installation.html">
4.1.5 部署master节点
</a>
</li>
<li class="chapter " data-level="1.4.1.6" data-path="node-installation.html">
<a href="node-installation.html">
4.1.6 部署node节点
</a>
</li>
<li class="chapter " data-level="1.4.1.7" data-path="kubedns-addon-installation.html">
<a href="kubedns-addon-installation.html">
4.1.7 安装kubedns插件
</a>
</li>
<li class="chapter " data-level="1.4.1.8" data-path="dashboard-addon-installation.html">
<a href="dashboard-addon-installation.html">
4.1.8 安装dashboard插件
</a>
</li>
<li class="chapter " data-level="1.4.1.9" data-path="heapster-addon-installation.html">
<a href="heapster-addon-installation.html">
4.1.9 安装heapster插件
</a>
</li>
<li class="chapter " data-level="1.4.1.10" data-path="efk-addon-installation.html">
<a href="efk-addon-installation.html">
4.1.10 安装EFK插件
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.4.2" data-path="service-discovery-and-loadbalancing.html">
<a href="service-discovery-and-loadbalancing.html">
4.2 服务发现与负载均衡
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.2.1" data-path="traefik-ingress-installation.html">
<a href="traefik-ingress-installation.html">
4.2.1 安装Traefik ingress
</a>
</li>
<li class="chapter " data-level="1.4.2.2" data-path="distributed-load-test.html">
<a href="distributed-load-test.html">
4.2.2 分布式负载测试
</a>
</li>
<li class="chapter " data-level="1.4.2.3" data-path="network-and-cluster-perfermance-test.html">
<a href="network-and-cluster-perfermance-test.html">
4.2.3 网络和集群性能测试
</a>
</li>
<li class="chapter " data-level="1.4.2.4" data-path="edge-node-configuration.html">
<a href="edge-node-configuration.html">
4.2.4 边缘节点配置
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.4.3" data-path="operation.html">
<a href="operation.html">
4.3 运维管理
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.3.1" data-path="service-rolling-update.html">
<a href="service-rolling-update.html">
4.3.1 服务滚动升级
</a>
</li>
<li class="chapter " data-level="1.4.3.2" data-path="app-log-collection.html">
<a href="app-log-collection.html">
4.3.2 应用日志收集
</a>
</li>
<li class="chapter " data-level="1.4.3.3" data-path="configuration-best-practice.html">
<a href="configuration-best-practice.html">
4.3.3 配置最佳实践
</a>
</li>
<li class="chapter " data-level="1.4.3.4" data-path="monitor.html">
<a href="monitor.html">
4.3.4 集群及应用监控
</a>
</li>
<li class="chapter " data-level="1.4.3.5" data-path="jenkins-ci-cd.html">
<a href="jenkins-ci-cd.html">
4.3.5 使用Jenkins进行持续构建与发布
</a>
</li>
<li class="chapter " data-level="1.4.3.6" data-path="data-persistence-problem.html">
<a href="data-persistence-problem.html">
4.3.6 数据持久化问题
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.4.4" data-path="storage.html">
<a href="storage.html">
4.4 存储管理
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.4.1" data-path="glusterfs.html">
<a href="glusterfs.html">
4.4.1 GlusterFS
</a>
<ul class="articles">
<li class="chapter active" data-level="1.4.4.1.1" data-path="using-glusterfs-for-persistent-storage.html">
<a href="using-glusterfs-for-persistent-storage.html">
4.4.1.1 使用GlusterFS做持久化存储
</a>
</li>
<li class="chapter " data-level="1.4.4.1.2" data-path="storage-for-containers-using-glusterfs-with-openshift.html">
<a href="storage-for-containers-using-glusterfs-with-openshift.html">
4.4.1.2 在OpenShift中使用GlusterFS做持久化存储
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5" data-path="../usecases/">
<a href="../usecases/">
5. 领域应用
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1" data-path="../usecases/microservices.html">
<a href="../usecases/microservices.html">
5.1 微服务架构
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1.1" data-path="../usecases/istio.html">
<a href="../usecases/istio.html">
5.1.1 Istio
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1.1.1" data-path="../usecases/istio-installation.html">
<a href="../usecases/istio-installation.html">
5.1.1.1 安装istio
</a>
</li>
<li class="chapter " data-level="1.5.1.1.2" data-path="../usecases/configuring-request-routing.html">
<a href="../usecases/configuring-request-routing.html">
5.1.1.2 配置请求的路由规则
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5.1.2" data-path="../usecases/linkerd.html">
<a href="../usecases/linkerd.html">
5.1.2 Linkerd
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1.2.1" data-path="../usecases/linkerd-user-guide.html">
<a href="../usecases/linkerd-user-guide.html">
5.1.2.1 Linkerd 使用指南
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5.1.3" data-path="../usecases/service-discovery-in-microservices.html">
<a href="../usecases/service-discovery-in-microservices.html">
5.1.3 微服务中的服务发现
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5.2" data-path="../usecases/big-data.html">
<a href="../usecases/big-data.html">
5.2 大数据
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.2.1" data-path="../usecases/spark-on-kubernetes.html">
<a href="../usecases/spark-on-kubernetes.html">
5.2.1 Spark on Kubernetes
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6" data-path="../develop/">
<a href="../develop/">
6. 开发指南
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.1" data-path="../develop/developing-environment.html">
<a href="../develop/developing-environment.html">
6.1 开发环境搭建
</a>
</li>
<li class="chapter " data-level="1.6.2" data-path="../develop/testing.html">
<a href="../develop/testing.html">
6.2 单元测试和集成测试
</a>
</li>
<li class="chapter " data-level="1.6.3" data-path="../develop/client-go-sample.html">
<a href="../develop/client-go-sample.html">
6.3 client-go示例
</a>
</li>
<li class="chapter " data-level="1.6.4" data-path="../develop/contribute.html">
<a href="../develop/contribute.html">
6.4 社区贡献
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.7" data-path="../appendix/">
<a href="../appendix/">
7. 附录
</a>
<ul class="articles">
<li class="chapter " data-level="1.7.1" data-path="../appendix/docker-best-practice.html">
<a href="../appendix/docker-best-practice.html">
7.1 Docker最佳实践
</a>
</li>
<li class="chapter " data-level="1.7.2" data-path="../appendix/issues.html">
<a href="../appendix/issues.html">
7.2 问题记录
</a>
</li>
<li class="chapter " data-level="1.7.3" data-path="../appendix/tricks.html">
<a href="../appendix/tricks.html">
7.3 使用技巧
</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=".." >4.4.1.1 使用GlusterFS做持久化存储</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="&#x4F7F;&#x7528;glusterfs&#x505A;&#x6301;&#x4E45;&#x5316;&#x5B58;&#x50A8;">&#x4F7F;&#x7528;glusterfs&#x505A;&#x6301;&#x4E45;&#x5316;&#x5B58;&#x50A8;</h1>
<p>&#x6211;&#x4EEC;&#x590D;&#x7528;kubernetes&#x7684;&#x4E09;&#x53F0;&#x4E3B;&#x673A;&#x505A;glusterfs&#x5B58;&#x50A8;&#x3002;</p>
<p>&#x4EE5;&#x4E0B;&#x6B65;&#x9AA4;&#x53C2;&#x8003;&#x81EA;&#xFF1A;<a href="https://www.xf80.com/2017/04/21/kubernetes-glusterfs/" target="_blank">https://www.xf80.com/2017/04/21/kubernetes-glusterfs/</a></p>
<h2 id="&#x5B89;&#x88C5;glusterfs">&#x5B89;&#x88C5;glusterfs</h2>
<p>&#x6211;&#x4EEC;&#x76F4;&#x63A5;&#x5728;&#x7269;&#x7406;&#x673A;&#x4E0A;&#x4F7F;&#x7528;yum&#x5B89;&#x88C5;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x9009;&#x62E9;&#x5728;kubernetes&#x4E0A;&#x5B89;&#x88C5;&#xFF0C;&#x8BF7;&#x53C2;&#x8003;&#xFF1A;<a href="https://github.com/gluster/gluster-kubernetes/blob/master/docs/setup-guide.md" target="_blank">https://github.com/gluster/gluster-kubernetes/blob/master/docs/setup-guide.md</a></p>
<pre><code class="lang-bash"><span class="hljs-comment"># &#x5148;&#x5B89;&#x88C5; gluster &#x6E90;</span>
$ yum install centos-release-gluster -y
<span class="hljs-comment"># &#x5B89;&#x88C5; glusterfs &#x7EC4;&#x4EF6;</span>
$ yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma glusterfs-geo-replication glusterfs-devel
<span class="hljs-comment">## &#x521B;&#x5EFA; glusterfs &#x76EE;&#x5F55;</span>
$ mkdir /opt/glusterd
<span class="hljs-comment">## &#x4FEE;&#x6539; glusterd &#x76EE;&#x5F55;</span>
$ sed -i <span class="hljs-string">&apos;s/var\/lib/opt/g&apos;</span> /etc/glusterfs/glusterd.vol
<span class="hljs-comment"># &#x542F;&#x52A8; glusterfs</span>
$ systemctl start glusterd.service
<span class="hljs-comment"># &#x8BBE;&#x7F6E;&#x5F00;&#x673A;&#x542F;&#x52A8;</span>
$ systemctl <span class="hljs-built_in">enable</span> glusterd.service
<span class="hljs-comment">#&#x67E5;&#x770B;&#x72B6;&#x6001;</span>
$ systemctl status glusterd.service
</code></pre>
<h2 id="&#x914D;&#x7F6E;-glusterfs">&#x914D;&#x7F6E; glusterfs</h2>
<pre><code class="lang-Bash"><span class="hljs-comment"># &#x914D;&#x7F6E; hosts</span>
$ vi /etc/hosts
172.20.0.113 sz-pg-oam-docker-test-001.tendcloud.com
172.20.0.114 sz-pg-oam-docker-test-002.tendcloud.com
172.20.0.115 sz-pg-oam-docker-test-003.tendcloud.com
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># &#x5F00;&#x653E;&#x7AEF;&#x53E3;</span>
$ iptables -I INPUT -p tcp --dport 24007 -j ACCEPT
<span class="hljs-comment"># &#x521B;&#x5EFA;&#x5B58;&#x50A8;&#x76EE;&#x5F55;</span>
$ mkdir /opt/gfs_data
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># &#x6DFB;&#x52A0;&#x8282;&#x70B9;&#x5230; &#x96C6;&#x7FA4;</span>
<span class="hljs-comment"># &#x6267;&#x884C;&#x64CD;&#x4F5C;&#x7684;&#x672C;&#x673A;&#x4E0D;&#x9700;&#x8981;probe &#x672C;&#x673A;</span>
[root@sz-pg-oam-docker-test-001 ~]<span class="hljs-comment">#</span>
gluster peer probe sz-pg-oam-docker-test-002.tendcloud.com
gluster peer probe sz-pg-oam-docker-test-003.tendcloud.com
<span class="hljs-comment"># &#x67E5;&#x770B;&#x96C6;&#x7FA4;&#x72B6;&#x6001;</span>
$ gluster peer status
Number of Peers: 2
Hostname: sz-pg-oam-docker-test-002.tendcloud.com
Uuid: f25546cc-2011-457d-ba24-342554b51317
State: Peer <span class="hljs-keyword">in</span> Cluster (Connected)
Hostname: sz-pg-oam-docker-test-003.tendcloud.com
Uuid: 42b6cad1-aa01-46d0-bbba<span class="hljs-_">-f</span>7ec6821d66d
State: Peer <span class="hljs-keyword">in</span> Cluster (Connected)
</code></pre>
<h2 id="&#x914D;&#x7F6E;-volume">&#x914D;&#x7F6E; volume</h2>
<p>GlusterFS&#x4E2D;&#x7684;volume&#x7684;&#x6A21;&#x5F0F;&#x6709;&#x5F88;&#x591A;&#x4E2D;&#xFF0C;&#x5305;&#x62EC;&#x4EE5;&#x4E0B;&#x51E0;&#x79CD;&#xFF1A;</p>
<ul>
<li><strong>&#x5206;&#x5E03;&#x5377;&#xFF08;&#x9ED8;&#x8BA4;&#x6A21;&#x5F0F;&#xFF09;</strong>&#xFF1A;&#x5373;DHT, &#x4E5F;&#x53EB; &#x5206;&#x5E03;&#x5377;: &#x5C06;&#x6587;&#x4EF6;&#x5DF2;hash&#x7B97;&#x6CD5;&#x968F;&#x673A;&#x5206;&#x5E03;&#x5230; &#x4E00;&#x53F0;&#x670D;&#x52A1;&#x5668;&#x8282;&#x70B9;&#x4E2D;&#x5B58;&#x50A8;&#x3002;</li>
<li><strong>&#x590D;&#x5236;&#x6A21;&#x5F0F;</strong>&#xFF1A;&#x5373;AFR, &#x521B;&#x5EFA;volume &#x65F6;&#x5E26; replica x &#x6570;&#x91CF;: &#x5C06;&#x6587;&#x4EF6;&#x590D;&#x5236;&#x5230; replica x &#x4E2A;&#x8282;&#x70B9;&#x4E2D;&#x3002;</li>
<li><strong>&#x6761;&#x5E26;&#x6A21;&#x5F0F;</strong>&#xFF1A;&#x5373;Striped, &#x521B;&#x5EFA;volume &#x65F6;&#x5E26; stripe x &#x6570;&#x91CF;&#xFF1A; &#x5C06;&#x6587;&#x4EF6;&#x5207;&#x5272;&#x6210;&#x6570;&#x636E;&#x5757;&#xFF0C;&#x5206;&#x522B;&#x5B58;&#x50A8;&#x5230; stripe x &#x4E2A;&#x8282;&#x70B9;&#x4E2D; ( &#x7C7B;&#x4F3C;raid 0 )&#x3002;</li>
<li><strong>&#x5206;&#x5E03;&#x5F0F;&#x6761;&#x5E26;&#x6A21;&#x5F0F;</strong>&#xFF1A;&#x6700;&#x5C11;&#x9700;&#x8981;4&#x53F0;&#x670D;&#x52A1;&#x5668;&#x624D;&#x80FD;&#x521B;&#x5EFA;&#x3002; &#x521B;&#x5EFA;volume &#x65F6; stripe 2 server = 4 &#x4E2A;&#x8282;&#x70B9;&#xFF1A; &#x662F;DHT &#x4E0E; Striped &#x7684;&#x7EC4;&#x5408;&#x578B;&#x3002;</li>
<li><strong>&#x5206;&#x5E03;&#x5F0F;&#x590D;&#x5236;&#x6A21;&#x5F0F;</strong>&#xFF1A;&#x6700;&#x5C11;&#x9700;&#x8981;4&#x53F0;&#x670D;&#x52A1;&#x5668;&#x624D;&#x80FD;&#x521B;&#x5EFA;&#x3002; &#x521B;&#x5EFA;volume &#x65F6; replica 2 server = 4 &#x4E2A;&#x8282;&#x70B9;&#xFF1A;&#x662F;DHT &#x4E0E; AFR &#x7684;&#x7EC4;&#x5408;&#x578B;&#x3002;</li>
<li><strong>&#x6761;&#x5E26;&#x590D;&#x5236;&#x5377;&#x6A21;&#x5F0F;</strong>&#xFF1A;&#x6700;&#x5C11;&#x9700;&#x8981;4&#x53F0;&#x670D;&#x52A1;&#x5668;&#x624D;&#x80FD;&#x521B;&#x5EFA;&#x3002; &#x521B;&#x5EFA;volume &#x65F6; stripe 2 replica 2 server = 4 &#x4E2A;&#x8282;&#x70B9;&#xFF1A; &#x662F; Striped &#x4E0E; AFR &#x7684;&#x7EC4;&#x5408;&#x578B;&#x3002;</li>
<li><strong>&#x4E09;&#x79CD;&#x6A21;&#x5F0F;&#x6DF7;&#x5408;</strong>&#xFF1A; &#x81F3;&#x5C11;&#x9700;&#x8981;8&#x53F0; &#x670D;&#x52A1;&#x5668;&#x624D;&#x80FD;&#x521B;&#x5EFA;&#x3002; stripe 2 replica 2 , &#x6BCF;4&#x4E2A;&#x8282;&#x70B9; &#x7EC4;&#x6210;&#x4E00;&#x4E2A; &#x7EC4;&#x3002;</li>
</ul>
<p>&#x8FD9;&#x51E0;&#x79CD;&#x6A21;&#x5F0F;&#x7684;&#x793A;&#x4F8B;&#x56FE;&#x53C2;&#x8003;&#xFF1A;<a href="http://www.cnblogs.com/jicki/p/5801712.html" target="_blank">CentOS7&#x5B89;&#x88C5;GlusterFS</a>&#x3002;</p>
<p>&#x56E0;&#x4E3A;&#x6211;&#x4EEC;&#x53EA;&#x6709;&#x4E09;&#x53F0;&#x4E3B;&#x673A;&#xFF0C;&#x5728;&#x6B64;&#x6211;&#x4EEC;&#x4F7F;&#x7528;&#x9ED8;&#x8BA4;&#x7684;<strong>&#x5206;&#x5E03;&#x5377;&#x6A21;&#x5F0F;</strong>&#x3002;<strong>&#x8BF7;&#x52FF;&#x5728;&#x751F;&#x4EA7;&#x73AF;&#x5883;&#x4E0A;&#x4F7F;&#x7528;&#x8BE5;&#x6A21;&#x5F0F;&#xFF0C;&#x5BB9;&#x6613;&#x5BFC;&#x81F4;&#x6570;&#x636E;&#x4E22;&#x5931;&#x3002;</strong></p>
<pre><code class="lang-bash"><span class="hljs-comment"># &#x521B;&#x5EFA;&#x5206;&#x5E03;&#x5377;</span>
$ gluster volume create k8s-volume transport tcp sz-pg-oam-docker-test-001.tendcloud.com:/opt/gfs_data sz-pg-oam-docker-test-002.tendcloud.com:/opt/gfs_data sz-pg-oam-docker-test-003.tendcloud.com:/opt/gfs_data force
<span class="hljs-comment"># &#x67E5;&#x770B;volume&#x72B6;&#x6001;</span>
$ gluster volume info
Volume Name: k8s-volume
Type: Distribute
Volume ID: 9a3b0710-4565-4eb7-abae-1d5c8ed625ac
Status: Created
Snapshot Count: 0
Number of Bricks: 3
Transport-type: tcp
Bricks:
Brick1: sz-pg-oam-docker-test-001.tendcloud.com:/opt/gfs_data
Brick2: sz-pg-oam-docker-test-002.tendcloud.com:/opt/gfs_data
Brick3: sz-pg-oam-docker-test-003.tendcloud.com:/opt/gfs_data
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
<span class="hljs-comment"># &#x542F;&#x52A8; &#x5206;&#x5E03;&#x5377;</span>
$ gluster volume start k8s-volume
</code></pre>
<h2 id="glusterfs&#x8C03;&#x4F18;">Glusterfs&#x8C03;&#x4F18;</h2>
<pre><code class="lang-bash"><span class="hljs-comment"># &#x5F00;&#x542F; &#x6307;&#x5B9A; volume &#x7684;&#x914D;&#x989D;</span>
$ gluster volume quota k8s-volume <span class="hljs-built_in">enable</span>
<span class="hljs-comment"># &#x9650;&#x5236; &#x6307;&#x5B9A; volume &#x7684;&#x914D;&#x989D;</span>
$ gluster volume quota k8s-volume <span class="hljs-built_in">limit</span>-usage / 1TB
<span class="hljs-comment"># &#x8BBE;&#x7F6E; cache &#x5927;&#x5C0F;, &#x9ED8;&#x8BA4;32MB</span>
$ gluster volume <span class="hljs-built_in">set</span> k8s-volume performance.cache-size 4GB
<span class="hljs-comment"># &#x8BBE;&#x7F6E; io &#x7EBF;&#x7A0B;, &#x592A;&#x5927;&#x4F1A;&#x5BFC;&#x81F4;&#x8FDB;&#x7A0B;&#x5D29;&#x6E83;</span>
$ gluster volume <span class="hljs-built_in">set</span> k8s-volume performance.io-thread-count 16
<span class="hljs-comment"># &#x8BBE;&#x7F6E; &#x7F51;&#x7EDC;&#x68C0;&#x6D4B;&#x65F6;&#x95F4;, &#x9ED8;&#x8BA4;42s</span>
$ gluster volume <span class="hljs-built_in">set</span> k8s-volume network.ping-timeout 10
<span class="hljs-comment"># &#x8BBE;&#x7F6E; &#x5199;&#x7F13;&#x51B2;&#x533A;&#x7684;&#x5927;&#x5C0F;, &#x9ED8;&#x8BA4;1M</span>
$ gluster volume <span class="hljs-built_in">set</span> k8s-volume performance.write-behind-window-size 1024MB
</code></pre>
<h2 id="kubernetes&#x4E2D;&#x914D;&#x7F6E;glusterfs">Kubernetes&#x4E2D;&#x914D;&#x7F6E;glusterfs</h2>
<p>&#x5B98;&#x65B9;&#x7684;&#x6587;&#x6863;&#x89C1;&#xFF1A;<a href="https://github.com/kubernetes/kubernetes/tree/master/examples/volumes/glusterfs" target="_blank">https://github.com/kubernetes/kubernetes/tree/master/examples/volumes/glusterfs</a></p>
<p>&#x4EE5;&#x4E0B;&#x7528;&#x5230;&#x7684;&#x6240;&#x6709;yaml&#x548C;json&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x53EF;&#x4EE5;&#x5728;<a href="manifests/glusterfs">glusterfs</a>&#x4E2D;&#x627E;&#x5230;&#x3002;&#x6CE8;&#x610F;&#x66FF;&#x6362;&#x5176;&#x4E2D;&#x79C1;&#x6709;&#x955C;&#x50CF;&#x5730;&#x5740;&#x4E3A;&#x4F60;&#x81EA;&#x5DF1;&#x7684;&#x955C;&#x50CF;&#x5730;&#x5740;&#x3002;</p>
<h2 id="kubernetes&#x5B89;&#x88C5;&#x5BA2;&#x6237;&#x7AEF;">kubernetes&#x5B89;&#x88C5;&#x5BA2;&#x6237;&#x7AEF;</h2>
<pre><code class="lang-bash"><span class="hljs-comment"># &#x5728;&#x6240;&#x6709; k8s node &#x4E2D;&#x5B89;&#x88C5; glusterfs &#x5BA2;&#x6237;&#x7AEF;</span>
$ yum install -y glusterfs glusterfs-fuse
<span class="hljs-comment"># &#x914D;&#x7F6E; hosts</span>
$ vi /etc/hosts
172.20.0.113 sz-pg-oam-docker-test-001.tendcloud.com
172.20.0.114 sz-pg-oam-docker-test-002.tendcloud.com
172.20.0.115 sz-pg-oam-docker-test-003.tendcloud.com
</code></pre>
<p>&#x56E0;&#x4E3A;&#x6211;&#x4EEC;glusterfs&#x8DDF;kubernetes&#x96C6;&#x7FA4;&#x590D;&#x7528;&#x4E3B;&#x673A;&#xFF0C;&#x56E0;&#x4E3A;&#x6B64;&#x8FD9;&#x4E00;&#x6B65;&#x53EF;&#x4EE5;&#x7701;&#x53BB;&#x3002;</p>
<h2 id="&#x914D;&#x7F6E;-endpoints">&#x914D;&#x7F6E; endpoints</h2>
<pre><code class="lang-bash">$ curl -O https://raw.githubusercontent.com/kubernetes/kubernetes/master/examples/volumes/glusterfs/glusterfs-endpoints.json
<span class="hljs-comment"># &#x4FEE;&#x6539; endpoints.json &#xFF0C;&#x914D;&#x7F6E; glusters &#x96C6;&#x7FA4;&#x8282;&#x70B9;ip</span>
<span class="hljs-comment"># &#x6BCF;&#x4E00;&#x4E2A; addresses &#x4E3A;&#x4E00;&#x4E2A; ip &#x7EC4;</span>
{
<span class="hljs-string">&quot;addresses&quot;</span>: [
{
<span class="hljs-string">&quot;ip&quot;</span>: <span class="hljs-string">&quot;172.22.0.113&quot;</span>
}
],
<span class="hljs-string">&quot;ports&quot;</span>: [
{
<span class="hljs-string">&quot;port&quot;</span>: 1990
}
]
},
<span class="hljs-comment"># &#x5BFC;&#x5165; glusterfs-endpoints.json</span>
$ kubectl apply <span class="hljs-_">-f</span> glusterfs-endpoints.json
<span class="hljs-comment"># &#x67E5;&#x770B; endpoints &#x4FE1;&#x606F;</span>
$ kubectl get ep
</code></pre>
<h2 id="&#x914D;&#x7F6E;-service">&#x914D;&#x7F6E; service</h2>
<pre><code class="lang-bash">$ curl -O https://raw.githubusercontent.com/kubernetes/kubernetes/master/examples/volumes/glusterfs/glusterfs-service.json
<span class="hljs-comment"># service.json &#x91CC;&#x9762;&#x67E5;&#x627E;&#x7684;&#x662F; enpointes &#x7684;&#x540D;&#x79F0;&#x4E0E;&#x7AEF;&#x53E3;&#xFF0C;&#x7AEF;&#x53E3;&#x9ED8;&#x8BA4;&#x914D;&#x7F6E;&#x4E3A; 1&#xFF0C;&#x6211;&#x6539;&#x6210;&#x4E86;1990</span>
<span class="hljs-comment"># &#x5BFC;&#x5165; glusterfs-service.json</span>
$ kubectl apply <span class="hljs-_">-f</span> glusterfs-service.json
<span class="hljs-comment"># &#x67E5;&#x770B; service &#x4FE1;&#x606F;</span>
$ kubectl get svc
</code></pre>
<h2 id="&#x521B;&#x5EFA;&#x6D4B;&#x8BD5;-pod">&#x521B;&#x5EFA;&#x6D4B;&#x8BD5; pod</h2>
<pre><code class="lang-bash">$ curl -O https://raw.githubusercontent.com/kubernetes/kubernetes/master/examples/volumes/glusterfs/glusterfs-pod.json
<span class="hljs-comment"># &#x7F16;&#x8F91; glusterfs-pod.json</span>
<span class="hljs-comment"># &#x4FEE;&#x6539; volumes &#x4E0B;&#x7684; path &#x4E3A;&#x4E0A;&#x9762;&#x521B;&#x5EFA;&#x7684; volume &#x540D;&#x79F0;</span>
<span class="hljs-string">&quot;path&quot;</span>: <span class="hljs-string">&quot;k8s-volume&quot;</span>
<span class="hljs-comment"># &#x5BFC;&#x5165; glusterfs-pod.json</span>
$ kubectl apply <span class="hljs-_">-f</span> glusterfs-pod.json
<span class="hljs-comment"># &#x67E5;&#x770B; pods &#x72B6;&#x6001;</span>
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
glusterfs 1/1 Running 0 1m
<span class="hljs-comment"># &#x67E5;&#x770B; pods &#x6240;&#x5728; node</span>
$ kubectl describe pods/glusterfs
<span class="hljs-comment"># &#x767B;&#x9646; node &#x7269;&#x7406;&#x673A;&#xFF0C;&#x4F7F;&#x7528; df &#x53EF;&#x67E5;&#x770B;&#x6302;&#x8F7D;&#x76EE;&#x5F55;</span>
$ df -h
172.20.0.113:k8s-volume 1073741824 0 1073741824 0% 172.20.0.113:k8s-volume 1.0T 0 1.0T 0% /var/lib/kubelet/pods/3de9<span class="hljs-built_in">fc</span>69-30b7-11e7-bfbd-8af1e3a7c5bd/volumes/kubernetes.io~glusterfs/glusterfsvol
</code></pre>
<h2 id="&#x914D;&#x7F6E;persistentvolume">&#x914D;&#x7F6E;PersistentVolume</h2>
<p>PersistentVolume&#xFF08;PV&#xFF09;&#x548C; PersistentVolumeClaim&#xFF08;PVC&#xFF09;&#x662F;kubernetes&#x63D0;&#x4F9B;&#x7684;&#x4E24;&#x79CD;API&#x8D44;&#x6E90;&#xFF0C;&#x7528;&#x4E8E;&#x62BD;&#x8C61;&#x5B58;&#x50A8;&#x7EC6;&#x8282;&#x3002;&#x7BA1;&#x7406;&#x5458;&#x5173;&#x6CE8;&#x4E8E;&#x5982;&#x4F55;&#x901A;&#x8FC7;pv&#x63D0;&#x4F9B;&#x5B58;&#x50A8;&#x529F;&#x80FD;&#x800C;&#x65E0;&#x9700;&#x5173;&#x6CE8;&#x7528;&#x6237;&#x5982;&#x4F55;&#x4F7F;&#x7528;&#xFF0C;&#x540C;&#x6837;&#x7684;&#x7528;&#x6237;&#x53EA;&#x9700;&#x8981;&#x6302;&#x8F7D;PVC&#x5230;&#x5BB9;&#x5668;&#x4E2D;&#x800C;&#x4E0D;&#x9700;&#x8981;&#x5173;&#x6CE8;&#x5B58;&#x50A8;&#x5377;&#x91C7;&#x7528;&#x4F55;&#x79CD;&#x6280;&#x672F;&#x5B9E;&#x73B0;&#x3002;</p>
<p>PVC&#x548C;PV&#x7684;&#x5173;&#x7CFB;&#x8DDF;pod&#x548C;node&#x5173;&#x7CFB;&#x7C7B;&#x4F3C;&#xFF0C;&#x524D;&#x8005;&#x6D88;&#x8017;&#x540E;&#x8005;&#x7684;&#x8D44;&#x6E90;&#x3002;PVC&#x53EF;&#x4EE5;&#x5411;PV&#x7533;&#x8BF7;&#x6307;&#x5B9A;&#x5927;&#x5C0F;&#x7684;&#x5B58;&#x50A8;&#x8D44;&#x6E90;&#x5E76;&#x8BBE;&#x7F6E;&#x8BBF;&#x95EE;&#x6A21;&#x5F0F;&#x3002;</p>
<p><strong>PV&#x5C5E;&#x6027; </strong></p>
<ul>
<li>storage&#x5BB9;&#x91CF; </li>
<li>&#x8BFB;&#x5199;&#x5C5E;&#x6027;&#xFF1A;&#x5206;&#x522B;&#x4E3A;ReadWriteOnce&#xFF1A;&#x5355;&#x4E2A;&#x8282;&#x70B9;&#x8BFB;&#x5199;&#xFF1B; ReadOnlyMany&#xFF1A;&#x591A;&#x8282;&#x70B9;&#x53EA;&#x8BFB; &#xFF1B; ReadWriteMany&#xFF1A;&#x591A;&#x8282;&#x70B9;&#x8BFB;&#x5199;</li>
</ul>
<pre><code class="lang-bash">$ cat glusterfs-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: gluster-dev-volume
spec:
capacity:
storage: 8Gi
accessModes:
- ReadWriteMany
glusterfs:
endpoints: <span class="hljs-string">&quot;glusterfs-cluster&quot;</span>
path: <span class="hljs-string">&quot;k8s-volume&quot;</span>
<span class="hljs-built_in">read</span>Only: <span class="hljs-literal">false</span>
<span class="hljs-comment"># &#x5BFC;&#x5165;PV</span>
$ kubectl apply <span class="hljs-_">-f</span> glusterfs-pv.yaml
<span class="hljs-comment"># &#x67E5;&#x770B; pv</span>
$ kubectl get pv
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE
gluster-dev-volume 8Gi RWX Retain Available 3s
</code></pre>
<p>PVC&#x5C5E;&#x6027;</p>
<ul>
<li>&#x8BBF;&#x95EE;&#x5C5E;&#x6027;&#x4E0E;PV&#x76F8;&#x540C;</li>
<li>&#x5BB9;&#x91CF;&#xFF1A;&#x5411;PV&#x7533;&#x8BF7;&#x7684;&#x5BB9;&#x91CF; &lt;= PV&#x603B;&#x5BB9;&#x91CF;</li>
</ul>
<h2 id="&#x914D;&#x7F6E;pvc">&#x914D;&#x7F6E;PVC</h2>
<pre><code class="lang-Bash">$ cat glusterfs-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: glusterfs-nginx
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 8Gi
<span class="hljs-comment"># &#x5BFC;&#x5165; pvc</span>
$ kubectl apply <span class="hljs-_">-f</span> glusterfs-pvc.yaml
<span class="hljs-comment"># &#x67E5;&#x770B; pvc</span>
$ kubectl get pv
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
glusterfs-nginx Bound gluster-dev-volume 8Gi RWX 4s
</code></pre>
<h2 id="&#x521B;&#x5EFA;-nginx-deployment-&#x6302;&#x8F7D;-volume">&#x521B;&#x5EFA; nginx deployment &#x6302;&#x8F7D; volume</h2>
<pre><code class="lang-Bash">$ vi nginx-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-dm
spec:
replicas: 2
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- name: gluster-dev-volume
mountPath: <span class="hljs-string">&quot;/usr/share/nginx/html&quot;</span>
volumes:
- name: gluster-dev-volume
persistentVolumeClaim:
claimName: glusterfs-nginx
<span class="hljs-comment"># &#x5BFC;&#x5165; deployment</span>
$ kubectl apply <span class="hljs-_">-f</span> nginx-deployment.yaml
<span class="hljs-comment"># &#x67E5;&#x770B; deployment</span>
$ kubectl get pods |grep nginx-dm
nginx-dm-3698525684-g0mvt 1/1 Running 0 6s
nginx-dm-3698525684-hbzq1 1/1 Running 0 6s
<span class="hljs-comment"># &#x67E5;&#x770B; &#x6302;&#x8F7D;</span>
$ kubectl <span class="hljs-built_in">exec</span> -it nginx-dm-3698525684-g0mvt -- df -h|grep k8s-volume
172.20.0.113:k8s-volume 1.0T 0 1.0T 0% /usr/share/nginx/html
<span class="hljs-comment"># &#x521B;&#x5EFA;&#x6587;&#x4EF6; &#x6D4B;&#x8BD5;</span>
$ kubectl <span class="hljs-built_in">exec</span> -it nginx-dm-3698525684-g0mvt -- touch /usr/share/nginx/html/index.html
$ kubectl <span class="hljs-built_in">exec</span> -it nginx-dm-3698525684-g0mvt -- ls <span class="hljs-_">-lt</span> /usr/share/nginx/html/index.html
-rw-r--r-- 1 root root 0 May 4 11:36 /usr/share/nginx/html/index.html
<span class="hljs-comment"># &#x9A8C;&#x8BC1; glusterfs</span>
<span class="hljs-comment"># &#x56E0;&#x4E3A;&#x6211;&#x4EEC;&#x4F7F;&#x7528;&#x5206;&#x5E03;&#x5377;&#xFF0C;&#x6240;&#x4EE5;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x67D0;&#x4E2A;&#x8282;&#x70B9;&#x4E2D;&#x6709;&#x6587;&#x4EF6;</span>
[root@sz-pg-oam-docker-test-001 ~] ls /opt/gfs_data/
[root@sz-pg-oam-docker-test-002 ~] ls /opt/gfs_data/
index.html
[root@sz-pg-oam-docker-test-003 ~] ls /opt/gfs_data/
</code></pre>
<h2 id="&#x53C2;&#x8003;">&#x53C2;&#x8003;</h2>
<p><a href="https://www.xf80.com/2017/04/21/kubernetes-glusterfs/?utm_source=tuicool&amp;utm_medium=referral#kubernetes-glusterfs" target="_blank">&#x5728;kubernetes&#x4E2D;&#x5B89;&#x88C5;glusterfs</a></p>
<p><a href="http://www.cnblogs.com/jicki/p/5801712.html" target="_blank">CentOS 7 &#x5B89;&#x88C5; GlusterFS</a></p>
<p><a href="https://github.com/kubernetes/kubernetes/tree/master/examples/volumes/glusterfs" target="_blank">GlusterFS with kubernetes</a></p>
<footer class="page-footer-ex"> <span class="page-footer-ex-copyright">for GitBook</span>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="page-footer-ex-footer-update">update
2017-08-21 18:23:35
</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="glusterfs.html" class="navigation navigation-prev " aria-label="Previous page: 4.4.1 GlusterFS">
<i class="fa fa-angle-left"></i>
</a>
<a href="storage-for-containers-using-glusterfs-with-openshift.html" class="navigation navigation-next " aria-label="Next page: 4.4.1.2 在OpenShift中使用GlusterFS做持久化存储">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"4.4.1.1 使用GlusterFS做持久化存储","level":"1.4.4.1.1","depth":4,"next":{"title":"4.4.1.2 在OpenShift中使用GlusterFS做持久化存储","level":"1.4.4.1.2","depth":4,"path":"practice/storage-for-containers-using-glusterfs-with-openshift.md","ref":"practice/storage-for-containers-using-glusterfs-with-openshift.md","articles":[]},"previous":{"title":"4.4.1 GlusterFS","level":"1.4.4.1","depth":3,"path":"practice/glusterfs.md","ref":"practice/glusterfs.md","articles":[{"title":"4.4.1.1 使用GlusterFS做持久化存储","level":"1.4.4.1.1","depth":4,"path":"practice/using-glusterfs-for-persistent-storage.md","ref":"practice/using-glusterfs-for-persistent-storage.md","articles":[]},{"title":"4.4.1.2 在OpenShift中使用GlusterFS做持久化存储","level":"1.4.4.1.2","depth":4,"path":"practice/storage-for-containers-using-glusterfs-with-openshift.md","ref":"practice/storage-for-containers-using-glusterfs-with-openshift.md","articles":[]}]},"dir":"ltr"},"config":{"plugins":["github","codesnippet","splitter","page-toc-button","image-captions","page-footer-ex","editlink","-lunr","-search","search-plus"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"github":{"url":"https://github.com/rootsongjc/kubernetes-handbook"},"editlink":{"label":"编辑本页","multilingual":false,"base":"https://github.com/rootsongjc/kubernetes-handbook/blob/master/"},"page-footer-ex":{"copyright":"for GitBook","update_format":"YYYY-MM-DD HH:mm:ss","update_label":"update"},"splitter":{},"codesnippet":{},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"page-toc-button":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"search-plus":{},"image-captions":{"variable_name":"_pictures"}},"page-footer-ex":{"copyright":"Jimmy Song","update_label":"最后更新:","update_format":"YYYY-MM-DD HH:mm:ss"},"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: wercker status","alt":"wercker status","nro":1,"url":"https://app.wercker.com/status/b8b69e593784e17ddcfd1286adfd8f3c/s/master","index":1,"caption_template":"Figure: _CAPTION_","label":"wercker status","attributes":{},"title":"wercker status","skip":false,"key":"1.1.1"},{"backlink":"concepts/index.html#fig1.2.1","level":"1.2","list_caption":"Figure: Borg架构","alt":"Borg架构","nro":2,"url":"../images/borg.png","index":1,"caption_template":"Figure: _CAPTION_","label":"Borg架构","attributes":{},"skip":false,"key":"1.2.1"},{"backlink":"concepts/index.html#fig1.2.2","level":"1.2","list_caption":"Figure: Kubernetes架构","alt":"Kubernetes架构","nro":3,"url":"../images/architecture.png","index":2,"caption_template":"Figure: _CAPTION_","label":"Kubernetes架构","attributes":{},"skip":false,"key":"1.2.2"},{"backlink":"concepts/index.html#fig1.2.3","level":"1.2","list_caption":"Figure: kubernetes整体架构示意图","alt":"kubernetes整体架构示意图","nro":4,"url":"../images/kubernetes-whole-arch.png","index":3,"caption_template":"Figure: _CAPTION_","label":"kubernetes整体架构示意图","attributes":{},"skip":false,"key":"1.2.3"},{"backlink":"concepts/index.html#fig1.2.4","level":"1.2","list_caption":"Figure: Kubernetes master架构示意图","alt":"Kubernetes master架构示意图","nro":5,"url":"../images/kubernetes-master-arch.png","index":4,"caption_template":"Figure: _CAPTION_","label":"Kubernetes master架构示意图","attributes":{},"skip":false,"key":"1.2.4"},{"backlink":"concepts/index.html#fig1.2.5","level":"1.2","list_caption":"Figure: kubernetes node架构示意图","alt":"kubernetes node架构示意图","nro":6,"url":"../images/kubernetes-node-arch.png","index":5,"caption_template":"Figure: _CAPTION_","label":"kubernetes node架构示意图","attributes":{},"skip":false,"key":"1.2.5"},{"backlink":"concepts/index.html#fig1.2.6","level":"1.2","list_caption":"Figure: Kubernetes分层架构示意图","alt":"Kubernetes分层架构示意图","nro":7,"url":"../images/kubernetes-layers-arch.jpg","index":6,"caption_template":"Figure: _CAPTION_","label":"Kubernetes分层架构示意图","attributes":{},"skip":false,"key":"1.2.6"},{"backlink":"concepts/concepts.html#fig1.2.1.1","level":"1.2.1","list_caption":"Figure: 分层架构示意图","alt":"分层架构示意图","nro":8,"url":"../images/kubernetes-layers-arch.jpg","index":1,"caption_template":"Figure: _CAPTION_","label":"分层架构示意图","attributes":{},"skip":false,"key":"1.2.1.1"},{"backlink":"concepts/pod-overview.html#fig1.2.2.1.1","level":"1.2.2.1","list_caption":"Figure: pod diagram","alt":"pod diagram","nro":9,"url":"../images/pod-overview.png","index":1,"caption_template":"Figure: _CAPTION_","label":"pod diagram","attributes":{},"skip":false,"key":"1.2.2.1.1"},{"backlink":"concepts/pod.html#fig1.2.2.1.1.1","level":"1.2.2.1.1","list_caption":"Figure: Pod示意图","alt":"Pod示意图","nro":10,"url":"../images/pod-overview.png","index":1,"caption_template":"Figure: _CAPTION_","label":"Pod示意图","attributes":{},"skip":false,"key":"1.2.2.1.1.1"},{"backlink":"concepts/pod.html#fig1.2.2.1.1.2","level":"1.2.2.1.1","list_caption":"Figure: Pod Cheatsheet","alt":"Pod Cheatsheet","nro":11,"url":"../images/kubernetes-pod-cheatsheet.png","index":2,"caption_template":"Figure: _CAPTION_","label":"Pod Cheatsheet","attributes":{},"skip":false,"key":"1.2.2.1.1.2"},{"backlink":"concepts/service.html#fig1.2.2.4.1","level":"1.2.2.4","list_caption":"Figure: userspace代理模式下Service概览图","alt":"userspace代理模式下Service概览图","nro":12,"url":"https://d33wubrfki0l68.cloudfront.net/b8e1022c2dd815d8dd36b1bc4f0cc3ad870a924f/1dd12/images/docs/services-userspace-overview.svg","index":1,"caption_template":"Figure: _CAPTION_","label":"userspace代理模式下Service概览图","attributes":{},"skip":false,"key":"1.2.2.4.1"},{"backlink":"concepts/service.html#fig1.2.2.4.2","level":"1.2.2.4","list_caption":"Figure: iptables代理模式下Service概览图","alt":"iptables代理模式下Service概览图","nro":13,"url":"https://d33wubrfki0l68.cloudfront.net/837afa5715eb31fb9ca6516ec6863e810f437264/42951/images/docs/services-iptables-overview.svg","index":2,"caption_template":"Figure: _CAPTION_","label":"iptables代理模式下Service概览图","attributes":{},"skip":false,"key":"1.2.2.4.2"},{"backlink":"concepts/deployment.html#fig1.2.2.6.1","level":"1.2.2.6","list_caption":"Figure: kubernetes deployment cheatsheet","alt":"kubernetes deployment cheatsheet","nro":14,"url":"../images/deployment-cheatsheet.png","index":1,"caption_template":"Figure: _CAPTION_","label":"kubernetes deployment cheatsheet","attributes":{},"skip":false,"key":"1.2.2.6.1"},{"backlink":"concepts/horizontal-pod-autoscaling.html#fig1.2.2.16.1","level":"1.2.2.16","list_caption":"Figure: horizontal-pod-autoscaler","alt":"horizontal-pod-autoscaler","nro":15,"url":"../images/horizontal-pod-autoscaler.png","index":1,"caption_template":"Figure: _CAPTION_","label":"horizontal-pod-autoscaler","attributes":{},"skip":false,"key":"1.2.2.16.1"},{"backlink":"concepts/label.html#fig1.2.2.17.1","level":"1.2.2.17","list_caption":"Figure: label示意图","alt":"label示意图","nro":16,"url":"../images/labels.png","index":1,"caption_template":"Figure: _CAPTION_","label":"label示意图","attributes":{},"skip":false,"key":"1.2.2.17.1"},{"backlink":"guide/using-kubectl.html#fig1.3.2.1.1","level":"1.3.2.1","list_caption":"Figure: kubectl cheatsheet","alt":"kubectl cheatsheet","nro":17,"url":"../images/kubernetes-kubectl-cheatsheet.png","index":1,"caption_template":"Figure: _CAPTION_","label":"kubectl cheatsheet","attributes":{},"skip":false,"key":"1.3.2.1.1"},{"backlink":"guide/using-kubectl.html#fig1.3.2.1.2","level":"1.3.2.1","list_caption":"Figure: kube-shell页面","alt":"kube-shell页面","nro":18,"url":"../images/kube-shell.jpg","index":2,"caption_template":"Figure: _CAPTION_","label":"kube-shell页面","attributes":{},"skip":false,"key":"1.3.2.1.2"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig1.3.5.1.1","level":"1.3.5.1","list_caption":"Figure: API","alt":"API","nro":19,"url":"../images/k8s-app-monitor-test-api-doc.jpg","index":1,"caption_template":"Figure: _CAPTION_","label":"API","attributes":{},"skip":false,"key":"1.3.5.1.1"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig1.3.5.1.2","level":"1.3.5.1","list_caption":"Figure: wercker","alt":"wercker","nro":20,"url":"../images/k8s-app-monitor-agent-wercker.jpg","index":2,"caption_template":"Figure: _CAPTION_","label":"wercker","attributes":{},"skip":false,"key":"1.3.5.1.2"},{"backlink":"guide/deploy-applications-in-kubernetes.html#fig1.3.5.1.3","level":"1.3.5.1","list_caption":"Figure: 图表","alt":"图表","nro":21,"url":"../images/k8s-app-monitor-agent.jpg","index":3,"caption_template":"Figure: _CAPTION_","label":"图表","attributes":{},"skip":false,"key":"1.3.5.1.3"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig1.3.5.2.1","level":"1.3.5.2","list_caption":"Figure: spark on yarn with kubernetes","alt":"spark on yarn with kubernetes","nro":22,"url":"../images/spark-on-yarn-with-kubernetes.png","index":1,"caption_template":"Figure: _CAPTION_","label":"spark on yarn with kubernetes","attributes":{},"skip":false,"key":"1.3.5.2.1"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig1.3.5.2.2","level":"1.3.5.2","list_caption":"Figure: Terms","alt":"Terms","nro":23,"url":"../images/terms-in-kubernetes-app-deployment.png","index":2,"caption_template":"Figure: _CAPTION_","label":"Terms","attributes":{},"skip":false,"key":"1.3.5.2.2"},{"backlink":"guide/migrating-hadoop-yarn-to-kubernetes.html#fig1.3.5.2.3","level":"1.3.5.2","list_caption":"Figure: 分解步骤解析","alt":"分解步骤解析","nro":24,"url":"../images/migrating-hadoop-yarn-to-kubernetes.png","index":3,"caption_template":"Figure: _CAPTION_","label":"分解步骤解析","attributes":{},"skip":false,"key":"1.3.5.2.3"},{"backlink":"practice/node-installation.html#fig1.4.1.6.1","level":"1.4.1.6","list_caption":"Figure: welcome-nginx","alt":"welcome-nginx","nro":25,"url":"http://olz1di9xf.bkt.clouddn.com/kubernetes-installation-test-nginx.png","index":1,"caption_template":"Figure: _CAPTION_","label":"welcome-nginx","attributes":{},"skip":false,"key":"1.4.1.6.1"},{"backlink":"practice/dashboard-addon-installation.html#fig1.4.1.8.1","level":"1.4.1.8","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":26,"url":"http://olz1di9xf.bkt.clouddn.com/kubernetes-dashboard-raw.jpg","index":1,"caption_template":"Figure: _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"1.4.1.8.1"},{"backlink":"practice/heapster-addon-installation.html#fig1.4.1.9.1","level":"1.4.1.9","list_caption":"Figure: dashboard-heapster","alt":"dashboard-heapster","nro":27,"url":"../images/kubernetes-dashboard-with-heapster.jpg","index":1,"caption_template":"Figure: _CAPTION_","label":"dashboard-heapster","attributes":{},"skip":false,"key":"1.4.1.9.1"},{"backlink":"practice/heapster-addon-installation.html#fig1.4.1.9.2","level":"1.4.1.9","list_caption":"Figure: grafana","alt":"grafana","nro":28,"url":"../images/kubernetes-heapster-grafana.jpg","index":2,"caption_template":"Figure: _CAPTION_","label":"grafana","attributes":{},"skip":false,"key":"1.4.1.9.2"},{"backlink":"practice/heapster-addon-installation.html#fig1.4.1.9.3","level":"1.4.1.9","list_caption":"Figure: kubernetes-influxdb-heapster","alt":"kubernetes-influxdb-heapster","nro":29,"url":"../images/kubernetes-influxdb-heapster.jpg","index":3,"caption_template":"Figure: _CAPTION_","label":"kubernetes-influxdb-heapster","attributes":{},"skip":false,"key":"1.4.1.9.3"},{"backlink":"practice/efk-addon-installation.html#fig1.4.1.10.1","level":"1.4.1.10","list_caption":"Figure: es-setting","alt":"es-setting","nro":30,"url":"../images/es-setting.png","index":1,"caption_template":"Figure: _CAPTION_","label":"es-setting","attributes":{},"skip":false,"key":"1.4.1.10.1"},{"backlink":"practice/efk-addon-installation.html#fig1.4.1.10.2","level":"1.4.1.10","list_caption":"Figure: es-home","alt":"es-home","nro":31,"url":"../images/kubernetes-efk-kibana.jpg","index":2,"caption_template":"Figure: _CAPTION_","label":"es-home","attributes":{},"skip":false,"key":"1.4.1.10.2"},{"backlink":"practice/traefik-ingress-installation.html#fig1.4.2.1.1","level":"1.4.2.1","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":32,"url":"../images/traefik-dashboard.jpg","index":1,"caption_template":"Figure: _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"1.4.2.1.1"},{"backlink":"practice/traefik-ingress-installation.html#fig1.4.2.1.2","level":"1.4.2.1","list_caption":"Figure: traefik-nginx","alt":"traefik-nginx","nro":33,"url":"../images/traefik-nginx.jpg","index":2,"caption_template":"Figure: _CAPTION_","label":"traefik-nginx","attributes":{},"skip":false,"key":"1.4.2.1.2"},{"backlink":"practice/traefik-ingress-installation.html#fig1.4.2.1.3","level":"1.4.2.1","list_caption":"Figure: traefik-guestbook","alt":"traefik-guestbook","nro":34,"url":"../images/traefik-guestbook.jpg","index":3,"caption_template":"Figure: _CAPTION_","label":"traefik-guestbook","attributes":{},"skip":false,"key":"1.4.2.1.3"},{"backlink":"practice/distributed-load-test.html#fig1.4.2.2.1","level":"1.4.2.2","list_caption":"Figure: traefik-dashboard-locust","alt":"traefik-dashboard-locust","nro":35,"url":"../images/traefik-dashboard-locust.jpg","index":1,"caption_template":"Figure: _CAPTION_","label":"traefik-dashboard-locust","attributes":{},"skip":false,"key":"1.4.2.2.1"},{"backlink":"practice/distributed-load-test.html#fig1.4.2.2.2","level":"1.4.2.2","list_caption":"Figure: locust-start-swarming","alt":"locust-start-swarming","nro":36,"url":"../images/locust-start-swarming.jpg","index":2,"caption_template":"Figure: _CAPTION_","label":"locust-start-swarming","attributes":{},"skip":false,"key":"1.4.2.2.2"},{"backlink":"practice/distributed-load-test.html#fig1.4.2.2.3","level":"1.4.2.2","list_caption":"Figure: sample-webapp-rc","alt":"sample-webapp-rc","nro":37,"url":"../images/sample-webapp-rc.jpg","index":3,"caption_template":"Figure: _CAPTION_","label":"sample-webapp-rc","attributes":{},"skip":false,"key":"1.4.2.2.3"},{"backlink":"practice/distributed-load-test.html#fig1.4.2.2.4","level":"1.4.2.2","list_caption":"Figure: locust-dashboard","alt":"locust-dashboard","nro":38,"url":"../images/locust-dashboard.jpg","index":4,"caption_template":"Figure: _CAPTION_","label":"locust-dashboard","attributes":{},"skip":false,"key":"1.4.2.2.4"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig1.4.2.3.1","level":"1.4.2.3","list_caption":"Figure: kubernetes-dashboard","alt":"kubernetes-dashboard","nro":39,"url":"http://olz1di9xf.bkt.clouddn.com/kubenetes-e2e-test.jpg","index":1,"caption_template":"Figure: _CAPTION_","label":"kubernetes-dashboard","attributes":{},"skip":false,"key":"1.4.2.3.1"},{"backlink":"practice/network-and-cluster-perfermance-test.html#fig1.4.2.3.2","level":"1.4.2.3","list_caption":"Figure: locust-test","alt":"locust-test","nro":40,"url":"http://olz1di9xf.bkt.clouddn.com/kubernetes-locust-test.jpg","index":2,"caption_template":"Figure: _CAPTION_","label":"locust-test","attributes":{},"skip":false,"key":"1.4.2.3.2"},{"backlink":"practice/edge-node-configuration.html#fig1.4.2.4.1","level":"1.4.2.4","list_caption":"Figure: 边缘节点架构","alt":"边缘节点架构","nro":41,"url":"../images/kubernetes-edge-node-architecture.png","index":1,"caption_template":"Figure: _CAPTION_","label":"边缘节点架构","attributes":{},"skip":false,"key":"1.4.2.4.1"},{"backlink":"practice/app-log-collection.html#fig1.4.3.2.1","level":"1.4.3.2","list_caption":"Figure: logstash日志收集架构图","alt":"logstash日志收集架构图","nro":42,"url":"../images/filebeat-log-collector.png","index":1,"caption_template":"Figure: _CAPTION_","label":"logstash日志收集架构图","attributes":{},"skip":false,"key":"1.4.3.2.1"},{"backlink":"practice/app-log-collection.html#fig1.4.3.2.2","level":"1.4.3.2","list_caption":"Figure: Kibana页面","alt":"Kibana页面","nro":43,"url":"../images/filebeat-docker-test.jpg","index":2,"caption_template":"Figure: _CAPTION_","label":"Kibana页面","attributes":{},"skip":false,"key":"1.4.3.2.2"},{"backlink":"practice/app-log-collection.html#fig1.4.3.2.3","level":"1.4.3.2","list_caption":"Figure: filebeat收集的日志详细信息","alt":"filebeat收集的日志详细信息","nro":44,"url":"../images/kubernetes-filebeat-detail.png","index":3,"caption_template":"Figure: _CAPTION_","label":"filebeat收集的日志详细信息","attributes":{},"skip":false,"key":"1.4.3.2.3"},{"backlink":"practice/monitor.html#fig1.4.3.4.1","level":"1.4.3.4","list_caption":"Figure: Kubernetes集群中的监控","alt":"Kubernetes集群中的监控","nro":45,"url":"../images/monitoring-in-kubernetes.png","index":1,"caption_template":"Figure: _CAPTION_","label":"Kubernetes集群中的监控","attributes":{},"skip":false,"key":"1.4.3.4.1"},{"backlink":"practice/monitor.html#fig1.4.3.4.2","level":"1.4.3.4","list_caption":"Figure: kubernetes的容器命名规则示意图","alt":"kubernetes的容器命名规则示意图","nro":46,"url":"../images/kubernetes-container-naming-rule.jpg","index":2,"caption_template":"Figure: _CAPTION_","label":"kubernetes的容器命名规则示意图","attributes":{},"skip":false,"key":"1.4.3.4.2"},{"backlink":"practice/monitor.html#fig1.4.3.4.3","level":"1.4.3.4","list_caption":"Figure: Heapster架构图改进版","alt":"Heapster架构图改进版","nro":47,"url":"../images/kubernetes-heapster-monitoring.png","index":3,"caption_template":"Figure: _CAPTION_","label":"Heapster架构图改进版","attributes":{},"skip":false,"key":"1.4.3.4.3"},{"backlink":"practice/monitor.html#fig1.4.3.4.4","level":"1.4.3.4","list_caption":"Figure: 应用监控架构图","alt":"应用监控架构图","nro":48,"url":"../images/kubernetes-app-monitoring.png","index":4,"caption_template":"Figure: _CAPTION_","label":"应用监控架构图","attributes":{},"skip":false,"key":"1.4.3.4.4"},{"backlink":"practice/monitor.html#fig1.4.3.4.5","level":"1.4.3.4","list_caption":"Figure: 应用拓扑图","alt":"应用拓扑图","nro":49,"url":"../images/weave-scope-service-topology.jpg","index":5,"caption_template":"Figure: _CAPTION_","label":"应用拓扑图","attributes":{},"skip":false,"key":"1.4.3.4.5"},{"backlink":"practice/jenkins-ci-cd.html#fig1.4.3.5.1","level":"1.4.3.5","list_caption":"Figure: 基于Jenkins的持续集成与发布","alt":"基于Jenkins的持续集成与发布","nro":50,"url":"../images/kubernetes-jenkins-ci-cd.png","index":1,"caption_template":"Figure: _CAPTION_","label":"基于Jenkins的持续集成与发布","attributes":{},"skip":false,"key":"1.4.3.5.1"},{"backlink":"practice/data-persistence-problem.html#fig1.4.3.6.1","level":"1.4.3.6","list_caption":"Figure: 日志持久化收集解决方案示意图","alt":"日志持久化收集解决方案示意图","nro":51,"url":"../images/log-persistence-logstash.png","index":1,"caption_template":"Figure: _CAPTION_","label":"日志持久化收集解决方案示意图","attributes":{},"skip":false,"key":"1.4.3.6.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig1.4.4.1.2.1","level":"1.4.4.1.2","list_caption":"Figure: Screen Shot 2017-03-23 at 21.50.34","alt":"Screen Shot 2017-03-23 at 21.50.34","nro":52,"url":"https://keithtenzer.files.wordpress.com/2017/03/screen-shot-2017-03-23-at-21-50-34.png?w=440","index":1,"caption_template":"Figure: _CAPTION_","label":"Screen Shot 2017-03-23 at 21.50.34","attributes":{},"skip":false,"key":"1.4.4.1.2.1"},{"backlink":"practice/storage-for-containers-using-glusterfs-with-openshift.html#fig1.4.4.1.2.2","level":"1.4.4.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":53,"url":"https://keithtenzer.files.wordpress.com/2017/03/screen-shot-2017-03-24-at-11-09-341.png?w=440","index":2,"caption_template":"Figure: _CAPTION_","label":"Screen Shot 2017-03-24 at 11.09.34.png","attributes":{},"skip":false,"key":"1.4.4.1.2.2"},{"backlink":"usecases/istio.html#fig1.5.1.1.1","level":"1.5.1.1","list_caption":"Figure: Istio架构图","alt":"Istio架构图","nro":54,"url":"../images/istio-arch.jpg","index":1,"caption_template":"Figure: _CAPTION_","label":"Istio架构图","attributes":{},"skip":false,"key":"1.5.1.1.1"},{"backlink":"usecases/istio-installation.html#fig1.5.1.1.1.1","level":"1.5.1.1.1","list_caption":"Figure: BookInfo Sample应用架构图","alt":"BookInfo Sample应用架构图","nro":55,"url":"../images/bookinfo-sample-arch.png","index":1,"caption_template":"Figure: _CAPTION_","label":"BookInfo Sample应用架构图","attributes":{},"skip":false,"key":"1.5.1.1.1.1"},{"backlink":"usecases/istio-installation.html#fig1.5.1.1.1.2","level":"1.5.1.1.1","list_caption":"Figure: BookInfo Sample页面","alt":"BookInfo Sample页面","nro":56,"url":"../images/bookinfo-sample.jpg","index":2,"caption_template":"Figure: _CAPTION_","label":"BookInfo Sample页面","attributes":{},"skip":false,"key":"1.5.1.1.1.2"},{"backlink":"usecases/istio-installation.html#fig1.5.1.1.1.3","level":"1.5.1.1.1","list_caption":"Figure: Istio Grafana界面","alt":"Istio Grafana界面","nro":57,"url":"../images/istio-grafana.jpg","index":3,"caption_template":"Figure: _CAPTION_","label":"Istio Grafana界面","attributes":{},"skip":false,"key":"1.5.1.1.1.3"},{"backlink":"usecases/istio-installation.html#fig1.5.1.1.1.4","level":"1.5.1.1.1","list_caption":"Figure: Prometheus页面","alt":"Prometheus页面","nro":58,"url":"../images/istio-prometheus.jpg","index":4,"caption_template":"Figure: _CAPTION_","label":"Prometheus页面","attributes":{},"skip":false,"key":"1.5.1.1.1.4"},{"backlink":"usecases/istio-installation.html#fig1.5.1.1.1.5","level":"1.5.1.1.1","list_caption":"Figure: Zipkin页面","alt":"Zipkin页面","nro":59,"url":"../images/istio-zipkin.jpg","index":5,"caption_template":"Figure: _CAPTION_","label":"Zipkin页面","attributes":{},"skip":false,"key":"1.5.1.1.1.5"},{"backlink":"usecases/istio-installation.html#fig1.5.1.1.1.6","level":"1.5.1.1.1","list_caption":"Figure: ServiceGraph页面","alt":"ServiceGraph页面","nro":60,"url":"../images/istio-servicegraph.jpg","index":6,"caption_template":"Figure: _CAPTION_","label":"ServiceGraph页面","attributes":{},"skip":false,"key":"1.5.1.1.1.6"},{"backlink":"usecases/linkerd.html#fig1.5.1.2.1","level":"1.5.1.2","list_caption":"Figure: source https://linkerd.io","alt":"source https://linkerd.io","nro":61,"url":"https://linkerd.io/images/diagram-individual-instance.png","index":1,"caption_template":"Figure: _CAPTION_","label":"source https://linkerd.io","attributes":{},"skip":false,"key":"1.5.1.2.1"},{"backlink":"usecases/linkerd-user-guide.html#fig1.5.1.2.1.1","level":"1.5.1.2.1","list_caption":"Figure: Jenkins pipeline","alt":"Jenkins pipeline","nro":62,"url":"../images/linkerd-jenkins-pipeline.jpg","index":1,"caption_template":"Figure: _CAPTION_","label":"Jenkins pipeline","attributes":{},"skip":false,"key":"1.5.1.2.1.1"},{"backlink":"usecases/linkerd-user-guide.html#fig1.5.1.2.1.2","level":"1.5.1.2.1","list_caption":"Figure: Jenkins config","alt":"Jenkins config","nro":63,"url":"../images/linkerd-jenkins.jpg","index":2,"caption_template":"Figure: _CAPTION_","label":"Jenkins config","attributes":{},"skip":false,"key":"1.5.1.2.1.2"},{"backlink":"usecases/linkerd-user-guide.html#fig1.5.1.2.1.3","level":"1.5.1.2.1","list_caption":"Figure: namerd","alt":"namerd","nro":64,"url":"../images/namerd-internal.jpg","index":3,"caption_template":"Figure: _CAPTION_","label":"namerd","attributes":{},"skip":false,"key":"1.5.1.2.1.3"},{"backlink":"usecases/linkerd-user-guide.html#fig1.5.1.2.1.4","level":"1.5.1.2.1","list_caption":"Figure: linkerd监控","alt":"linkerd监控","nro":65,"url":"../images/linkerd-helloworld-outgoing.jpg","index":4,"caption_template":"Figure: _CAPTION_","label":"linkerd监控","attributes":{},"skip":false,"key":"1.5.1.2.1.4"},{"backlink":"usecases/linkerd-user-guide.html#fig1.5.1.2.1.5","level":"1.5.1.2.1","list_caption":"Figure: linkerd监控","alt":"linkerd监控","nro":66,"url":"../images/linkerd-helloworld-incoming.jpg","index":5,"caption_template":"Figure: _CAPTION_","label":"linkerd监控","attributes":{},"skip":false,"key":"1.5.1.2.1.5"},{"backlink":"usecases/linkerd-user-guide.html#fig1.5.1.2.1.6","level":"1.5.1.2.1","list_caption":"Figure: linkerd性能监控","alt":"linkerd性能监控","nro":67,"url":"../images/linkerd-grafana.png","index":6,"caption_template":"Figure: _CAPTION_","label":"linkerd性能监控","attributes":{},"skip":false,"key":"1.5.1.2.1.6"},{"backlink":"usecases/linkerd-user-guide.html#fig1.5.1.2.1.7","level":"1.5.1.2.1","list_caption":"Figure: Linkerd ingress controller","alt":"Linkerd ingress controller","nro":68,"url":"../images/linkerd-ingress-controller.jpg","index":7,"caption_template":"Figure: _CAPTION_","label":"Linkerd ingress controller","attributes":{},"skip":false,"key":"1.5.1.2.1.7"},{"backlink":"usecases/service-discovery-in-microservices.html#fig1.5.1.3.1","level":"1.5.1.3","list_caption":"Figure: 微服务中的服务发现","alt":"微服务中的服务发现","nro":69,"url":"../images/service-discovery-in-microservices.png","index":1,"caption_template":"Figure: _CAPTION_","label":"微服务中的服务发现","attributes":{},"skip":false,"key":"1.5.1.3.1"},{"backlink":"usecases/spark-on-kubernetes.html#fig1.5.2.1.1","level":"1.5.2.1","list_caption":"Figure: spark master ui","alt":"spark master ui","nro":70,"url":"../images/spark-ui.jpg","index":1,"caption_template":"Figure: _CAPTION_","label":"spark master ui","attributes":{},"skip":false,"key":"1.5.2.1.1"},{"backlink":"usecases/spark-on-kubernetes.html#fig1.5.2.1.2","level":"1.5.2.1","list_caption":"Figure: zeppelin ui","alt":"zeppelin ui","nro":71,"url":"../images/zeppelin-ui.jpg","index":2,"caption_template":"Figure: _CAPTION_","label":"zeppelin ui","attributes":{},"skip":false,"key":"1.5.2.1.2"},{"backlink":"develop/client-go-sample.html#fig1.6.3.1","level":"1.6.3","list_caption":"Figure: 使用kubernetes dashboard进行故障排查","alt":"使用kubernetes dashboard进行故障排查","nro":72,"url":"../images/kubernetes-client-go-sample-update.jpg","index":1,"caption_template":"Figure: _CAPTION_","label":"使用kubernetes dashboard进行故障排查","attributes":{},"skip":false,"key":"1.6.3.1"},{"backlink":"appendix/issues.html#fig1.7.2.1","level":"1.7.2","list_caption":"Figure: pvc-storage-limit","alt":"pvc-storage-limit","nro":73,"url":"../images/pvc-storage-limit.jpg","index":1,"caption_template":"Figure: _CAPTION_","label":"pvc-storage-limit","attributes":{},"skip":false,"key":"1.7.2.1"}]},"title":"Kubernetes Handbook","language":"zh-cn","gitbook":"*","description":"Let's play fun with kubernetes!","image-captions":{"caption":"图片 - _CAPTION_"}},"file":{"path":"practice/using-glusterfs-for-persistent-storage.md","mtime":"2017-08-21T10:23:35.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2017-08-29T02:29:08.009Z"},"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-search-plus/jquery.mark.min.js"></script>
<script src="../gitbook/gitbook-plugin-search-plus/search.js"></script>
<script src="../gitbook/gitbook-plugin-sharing/buttons.js"></script>
<script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>