<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>StorageClass</title>
    <link>https://llinux.cn/kubernetes/%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86/storageclass/</link>
    <description>阿征的运维笔记</description>
    <language>zh</language>
    <atom:link href="https://llinux.cn/kubernetes/%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86/storageclass/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Longhorn</title>
      <link>https://llinux.cn/kubernetes/%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86/storageclass/longhorn/</link>
      
      <guid>https://llinux.cn/kubernetes/%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86/storageclass/longhorn/</guid>
      <description>&lt;h2 id=&#34;longhorn-概述&#34;&gt;Longhorn 概述&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#longhorn-%e6%a6%82%e8%bf%b0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Longhorn 是一款轻量级的云原生分布式块存储系统，它将集群内各个节点的本地物理磁盘聚合为统一的存储池，通过微服务架构和多副本跨节点冗余机制，为业务容器提供开箱即用、高可用且极易维护的持久化数据卷。&lt;/p&gt;&#xA;&lt;p&gt;核心功能：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;聚合底层：&lt;/strong&gt; 把零散的本地盘（比如 &lt;code&gt;/data/longhorn&lt;/code&gt;）统一纳管。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;微服务化：&lt;/strong&gt; 每个卷都有自己独立的控制器进程（Engine），一挂只挂一个卷，爆炸半径极小。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;高可用：&lt;/strong&gt; 自动在不同节点间做数据副本（默认 3 副本），节点宕机数据不丢。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;longhorn-部署&#34;&gt;Longhorn 部署&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#longhorn-%e9%83%a8%e7%bd%b2&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;通过 Helm 部署 Longhorn，将存储放在三个 worker 节点上。&lt;/p&gt;&#xA;&lt;h3 id=&#34;前期准备&#34;&gt;前期准备&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%89%8d%e6%9c%9f%e5%87%86%e5%a4%87&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Longhorn 强依赖宿主机操作系统的几个核心组件来实现底层的块设备映射和网络共享。因此必须在 3 个 Worker 节点上安装这些依赖，否则后续 Pod 会一直卡在 ContainerCreating 状态挂载不上存储。&lt;/p&gt;&#xA;&lt;p&gt;对于 Ubuntu/Debian 系统：&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y open-iscsi nfs-common util-linux&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 确保 iscsid 服务启动并开机自启&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt; --now iscsid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 检查 iscsid 服务状态&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl status iscsid&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;对于 CentOS/RHEL/AlmaLinux 系统：&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>NFS Provisioner</title>
      <link>https://llinux.cn/kubernetes/%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86/storageclass/nfs---provisioner/</link>
      
      <guid>https://llinux.cn/kubernetes/%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86/storageclass/nfs---provisioner/</guid>
      <description>&lt;h1 id=&#34;nfs-provisioner-概述&#34;&gt;NFS Provisioner 概述&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#nfs-provisioner-%e6%a6%82%e8%bf%b0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;要在Kubernetes中使用NFS作为外部存储解决方案，需要使用nfs-subdir-external-provisioner。&lt;/p&gt;&#xA;&lt;p&gt;nfs-subdir-external-provisioner是一个Kubernetes外部存储供应商，它允许在Kubernetes集群中自动创建NFS PV（Persistent Volume）和PVC（Persistent Volume Claim）。它通过在NFS服务器上创建子目录并将其用作PV来实现存储的动态供应和回收。&lt;/p&gt;&#xA;&lt;p&gt;使用nfs-subdir-external-provisioner，您可以通过创建一个存储类（StorageClass）来定义NFS存储的配置和参数，然后在PVC中引用该存储类。当创建PVC时，nfs-subdir-external-provisioner将自动在NFS服务器上创建一个子目录，并将其用作PV供PVC使用。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;自动创建的 PV 以 &lt;code&gt;${namespace}-${pvcName}-${pvName}&lt;/code&gt; 这样的命名格式创建在 NFS 服务器上的共享数据目录中&lt;/li&gt;&#xA;&lt;li&gt;而当这个 PV 被回收后会以 &lt;code&gt;archieved-${namespace}-${pvcName}-${pvName}&lt;/code&gt; 这样的命名格式存在 NFS 服务器上。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;项目地址：https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner&lt;/p&gt;&#xA;&lt;h1 id=&#34;nfs-provisioner-部署&#34;&gt;NFS Provisioner 部署&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#nfs-provisioner-%e9%83%a8%e7%bd%b2&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;准备-nfs&#34;&gt;准备 NFS&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e5%87%86%e5%a4%87-nfs&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;部署 NFS 服务，并确保可以被 K8s 集群所访问&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight code-sample&#34;&gt;&#xA;  &#xA;  &lt;div class=&#34;includecode&#34; &gt;&#xA;    &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 准备 NFS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@k8s-data:~# vim /etc/exports&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/k8s-data 172.16.0.0/18&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;rw,no_root_squash&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@k8s-data:~# exportfs -r&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@k8s-data:~# exportfs -v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/k8s-data     &#x9;172.16.0.0/18&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;rw,wdelay,no_root_squash,no_subtree_check,sec&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;sys,rw,secure,no_root_squash,no_all_squash&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 验证远程nfs可用性&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@k8s-worker6:~# showmount -e 172.16.0.138&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Export list &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; 172.16.0.138:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/k8s-data 172.16.0.0/18&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;通过-helm-部署-nfs-provisioner&#34;&gt;通过 Helm 部署 NFS Provisioner&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%e9%80%9a%e8%bf%87-helm-%e9%83%a8%e7%bd%b2-nfs-provisioner&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://artifacthub.io/packages/helm/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner&#34;&gt;https://artifacthub.io/packages/helm/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
