blob: db253bfd4f3f2a115f84fac5a791c68f91fee904 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Apache Ozone Documentation">
<title>Documentation for Apache Ozone</title>
<link href="../../css/bootstrap.min.css" rel="stylesheet">
<link href="../../css/ozonedoc.css" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#sidebar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="../../zh/index.html" class="navbar-left ozone-logo">
<img src="../../ozone-logo-small.png"/>
</a>
<a class="navbar-brand hidden-xs" href="../../zh/index.html">
Apache Ozone/HDDS documentation
</a>
<a class="navbar-brand visible-xs-inline" href="#">Apache Ozone</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="https://github.com/apache/hadoop-ozone">Source</a></li>
<li><a href="https://hadoop.apache.org">Apache Hadoop</a></li>
<li><a href="https://apache.org">ASF</a></li>
</ul>
</div>
</div>
</nav>
<div class="wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-sm-2 col-md-2 sidebar" id="sidebar">
<ul class="nav nav-sidebar">
<li class="">
<a href="../../zh/index.html">
<span>概述</span>
</a>
</li>
<li class="">
<a href="../../zh/start.html">
<span>快速入门</span>
</a>
</li>
<li class="">
<a href="../../zh/concept.html">
<span>概念</span>
</a>
<ul class="nav">
<li class="">
<a href="../../zh/concept/overview.html">概览</a>
</li>
<li class="">
<a href="../../zh/concept/ozonemanager.html">Ozone Manager</a>
</li>
<li class="">
<a href="../../zh/concept/storagecontainermanager.html">Storage Container Manager</a>
</li>
<li class="">
<a href="../../zh/concept/datanodes.html">数据节点</a>
</li>
<li class="">
<a href="../../zh/concept/containers.html">Containers</a>
</li>
<li class="">
<a href="../../zh/concept/recon.html">Recon</a>
</li>
</ul>
</li>
<li class="">
<a href="../../zh/feature.html">
<span>特点</span>
</a>
<ul class="nav">
<li class="">
<a href="../../zh/feature/ha.html">高可用</a>
</li>
<li class="">
<a href="../../zh/security/gdpr.html">Ozone 中的 GDPR</a>
</li>
<li class="">
<a href="../../zh/feature/quota.html">Ozone中的配额</a>
</li>
<li class="">
<a href="../../zh/feature/recon.html">Recon 服务器</a>
</li>
</ul>
</li>
<li class="">
<a href="../../zh/security.html">
<span>安全</span>
</a>
<ul class="nav">
<li class="">
<a href="../../zh/security/secureozone.html">安全化 Ozone</a>
</li>
<li class="">
<a href="../../zh/security/securingtde.html">透明数据加密</a>
</li>
<li class="">
<a href="../../zh/security/securings3.html">安全化 S3</a>
</li>
<li class="">
<a href="../../zh/security/securitywithranger.html">Apache Ranger</a>
</li>
<li class="">
<a href="../../zh/security/securityacls.html">Ozone 访问控制列表</a>
</li>
</ul>
</li>
<li class="">
<a href="../../zh/interface.html">
<span>编程接口</span>
</a>
<ul class="nav">
<li class="">
<a href="../../zh/interface/javaapi.html">Java API</a>
</li>
<li class="">
<a href="../../zh/interface/o3fs.html">Ozone 文件系统</a>
</li>
<li class="active">
<a href="../../zh/interface/csi.html">CSI 协议</a>
</li>
<li class="">
<a href="../../zh/interface/s3.html">S3 协议接口</a>
</li>
<li class="">
<a href="../../zh/interface/reconapi.html">Recon API</a>
</li>
</ul>
</li>
<li class="">
<a href="../../zh/tools.html">
<span>工具</span>
</a>
</li>
<li class="">
<a href="../../zh/recipe.html">
<span>使用配方</span>
</a>
</li>
<li><a href="../../design.html"><span><b>Design docs</b></span></a></li>
<li class="visible-xs"><a href="#">References</a>
<ul class="nav">
<li><a href="https://github.com/apache/hadoop"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span> Source</a></li>
<li><a href="https://hadoop.apache.org"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span> Apache Hadoop</a></li>
<li><a href="https://apache.org"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span> ASF</a></li>
</ul></li>
</ul>
</div>
<div class="col-sm-10 col-sm-offset-2 col-md-10 col-md-offset-2 main">
<div class="col-md-9">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="../../zh/index.html">Home</a></li>
<li class="breadcrumb-item" aria-current="page"><a href="../../zh/interface.html">编程接口</a></li>
<li class="breadcrumb-item active" aria-current="page">CSI 协议</li>
</ol>
</nav>
<div class="pull-right">
<a href="../../interface/csi.html"><span class="label label-success">English</span></a>
</div>
<div class="col-md-9">
<h1>CSI 协议</h1>
<!---
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<p>容器存储接口 <code>Container Storage Interface</code> (CSI) 使存储供应商(SP)能够一次性开发一个插件,并让它跨多个容器编排工作,
就像 Kubernetes 或者 YARN。</p>
<p>获取更多 CSI 的信息,可以参考<a href="https://github.com/container-storage-interface/spec/blob/master/spec.md">SCI spec</a></p>
<p>CSI 定义了一个简单的,包含3个接口(Identity, Controller, Node)的 GRPC 接口,它定义了容器编排器如何请求创建新的存储空间或挂载新创建的存储,
但没有定义如何挂载存储。</p>
<p><img src="CSI.png" alt="CSI"></p>
<p>默认情况下,Ozone CSI 服务使用 S3 FUSE 驱动程序(<a href="https://github.com/kahing/goofys">goofys</a>)挂载 Ozone 桶。
其他挂载方式(如专用 NFS 服务或本机FUSE驱动程序)的实现正在进行中。</p>
<p>Ozone CSI 是 CSI 的一种实现,它可以将 Ozone 用作容器的存储卷。</p>
<h2 id="入门">入门</h2>
<p>首先,我们需要一个带有 s3gateway 的 Ozone 集群,并且它的 OM 和 s3gateway 的端口都可以对 CSI pod 可见,
因为 CSIServer 将会访问 OM 来创建或者删除桶,同时 CSIServer 通过 goofys 创建一个可以访问 s3g 的挂载点来发布卷。</p>
<p>如果你没有一个运行在 Kubernetes 上的 Ozone 集群,你可以参考<a href="../../zh/start/kubernetes.html">Kubernetes</a> 来创建一个。
使用来自 <code>kubernetes/examples/ozone</code>的资源,你可以找到所有需要的 Kubernetes 资源来和指定的 CSI 运行在一起
(参考 <code>kubernetes/examples/ozone/csi</code>)</p>
<p>现在,使用如下命令,创建 CSI 相关的资源。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl create -f /ozone/kubernetes/examples/ozone/csi
</code></pre></div><h2 id="创建-pv-test-并查看结果">创建 pv-test 并查看结果</h2>
<p>通过执行以下命令,创建 pv-test 相关的资源。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl create -f /ozone/kubernetes/examples/ozone/pv-test
</code></pre></div><p>连接 pod scm-0 并在 /s3v/pvc* 桶中创建一个键值。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl exec -it scm-0 bash
<span style="color:#f92672">[</span>hadoop@scm-0 ~<span style="color:#f92672">]</span>$ ozone sh bucket list s3v
<span style="color:#f92672">{</span>
<span style="color:#e6db74">&#34;metadata&#34;</span> : <span style="color:#f92672">{</span> <span style="color:#f92672">}</span>,
<span style="color:#e6db74">&#34;volumeName&#34;</span> : <span style="color:#e6db74">&#34;s3v&#34;</span>,
<span style="color:#e6db74">&#34;name&#34;</span> : <span style="color:#e6db74">&#34;pvc-861e2d8b-2232-4cd1-b43c-c0c26697ab6b&#34;</span>,
<span style="color:#e6db74">&#34;storageType&#34;</span> : <span style="color:#e6db74">&#34;DISK&#34;</span>,
<span style="color:#e6db74">&#34;versioning&#34;</span> : false,
<span style="color:#e6db74">&#34;creationTime&#34;</span> : <span style="color:#e6db74">&#34;2020-06-11T08:19:47.469Z&#34;</span>,
<span style="color:#e6db74">&#34;encryptionKeyName&#34;</span> : null
<span style="color:#f92672">}</span>
<span style="color:#f92672">[</span>hadoop@scm-0 ~<span style="color:#f92672">]</span>$ ozone sh key put /s3v/pvc-861e2d8b-2232-4cd1-b43c-c0c26697ab6b/A LICENSE.txt
</code></pre></div><p>现在,通过映射 <code>ozone-csi-test-webserver-7cbdc5d65c-h5mnn</code> 端口,我们可以使用浏览器展示其 UI 页面。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">kubectl port-forward ozone-csi-test-webserver-7cbdc5d65c-h5mnn 8000:8000
</code></pre></div><p>最终,我们可以通过 <code>http://localhost:8000/</code> 看到结果</p>
<p><img src="pvtest-webui.png" alt="pvtest-webui"></p>
<a class="btn btn-success btn-lg" href="../../zh/interface/s3.html">Next >></a>
</div>
</div>
</div>
</div>
</div>
<div class="push"></div>
</div>
<footer class="footer">
<div class="container">
<span class="small text-muted">
Version: 1.1.0, Last Modified: October 5, 2020 <a class="hide-child link primary-color" href="https://github.com/apache/ozone/commit/19cb481896f091ec5c02fe4010a5ab428302f38f">19cb48189</a>
</span>
</div>
</footer>
<script src="../../js/jquery-3.5.1.min.js"></script>
<script src="../../js/ozonedoc.js"></script>
<script src="../../js/bootstrap.min.js"></script>
</body>
</html>