Longhorn云原生容器分布式存储-Air Gap安装

Longhorn云原生容器分布式存储-Air Gap安装

作者:为少 2021-08-29 23:53:32

存储

存储软件

云原生

分布式 Longhorn 可以通过使用 manifest file、Helm chart 或 Rancher UI 安装在 air gapped 环境中。

[[420203]]

Longhorn 可以通过使用 manifest file、Helm chart 或 Rancher UI 安装在 air gapped 环境中。

目录

  • 前提要求
  • 使用 Manifest File
  • 使用 Helm chart
  • 使用 Rancher app
  • 故障排除

前提要求

  • 将 Longhorn Components 镜像部署到您自己的 registry。
  • 将 Kubernetes CSI driver 组件镜像部署到您自己的 registry。

注意:

  • 所有需要的镜像的完整列表在 longhorn-images.txt 中。首先,通过运行下载镜像列表:

wget https://raw.githubusercontent.com/longhorn/longhorn/v1.1.2/deploy/longhorn-images.txt

  • 我们提供了一个脚本 save-images.sh 来快速拉取上面的 longhorn-images.txt 列表。如果您为标志 –images 指定 tar.gz 文件名,脚本会将所有镜像保存到提供的文件名。在下面的示例中,脚本将 Longhorn 镜像拉取并保存到文件 longhorn-images.tar.gz。然后,您可以将该文件复制到您的 air-gap 环境中。另一方面,如果您不指定文件名,脚本只会将镜像列表拉到您的计算机上。
  1. wget https://raw.githubusercontent.com/longhorn/longhorn/v1.1.2/scripts/save-images.sh 
  2. chmod +x save-images.sh 
  3. ./save-images.sh --image-list longhorn-images.txt --images longhorn-images.tar.gz 
  • 我们提供了另一个脚本 load-images.sh,用于将 Longhorn 镜像推送到您的私有 registry。如果您为标志 –images 指定 tar.gz 文件名,脚本将从 tar 文件加载镜像并推送它们。否则,它将在您的本地 Docker 中找到镜像并推送它们。在下面的示例中,脚本从文件 longhorn-images.tar.gz 加载镜像并将它们推送到
  1. wget https://raw.githubusercontent.com/longhorn/longhorn/v1.1.2/scripts/load-images.sh 
  2. chmod +x load-images.sh 
  3. ./load-images.sh --image-list longhorn-images.txt --images longhorn-images.tar.gz --registry <YOUR-PRIVATE-REGISTRY> 
  • 有关使用脚本的更多选项,请参阅 flag –help:
  1. ./save-images.sh --help 
  2. ./load-images.sh --help 

使用 Manifest File

获取 Longhorn Deployment manifest file

  1. wget https://raw.githubusercontent.com/longhorn/longhorn/v1.1.2/deploy/longhorn.yaml 

创建 Longhorn namespace

  1. kubectl create namespace longhorn-system 

如果私有 registry 需要身份验证,在 longhorn-system 命名空间中创建 docker-registry secret:

  1. kubectl -n longhorn-system create secret docker-registry <SECRET_NAME> --docker-server=<REGISTRY_URL> --docker-username=<REGISTRY_USER> --docker-password=<REGISTRY_PASSWORD> 
  • longhorn-driver-deployer Deployment
  • longhorn-manager DaemonSet
  • longhorn-ui Deployment
  • 在以下资源中将您的 secret 名称 SECRET_NAME 添加到 imagePullSecrets.name

示例:

  1. apiVersion: apps/v1 
  2. kind: Deployment 
  3. metadata: 
  4.   labels: 
  5.     app: longhorn-ui 
  6.   name: longhorn-ui 
  7.   namespace: longhorn-system 
  8. spec: 
  9.   replicas: 1 
  10.   selector: 
  11.     matchLabels: 
  12.       app: longhorn-ui 
  13.   template: 
  14.     metadata: 
  15.       labels: 
  16.         app: longhorn-ui 
  17.     spec: 
  18.       containers: 
  19.       - name: longhorn-ui 
  20.         image: longhornio/longhorn-ui:v0.8.0 
  21.         ports: 
  22.         - containerPort: 8000 
  23.         env: 
  24.           - name: LONGHORN_MANAGER_IP 
  25.             value: "http://longhorn-backend:9500" 
  26.       imagePullSecrets: 
  27.       - name: <SECRET_NAME>                          ## Add SECRET_NAME here 
  28.       serviceAccountName: longhorn-service-account 

对 manifest file 应用以下修改

  • longhornio/longhorn-manager
  1. image: <REGISTRY_URL>/longhorn-manager:<LONGHORN_MANAGER_IMAGE_TAG> 
  • longhornio/longhorn-engine
  1. image: <REGISTRY_URL>/longhorn-engine:<LONGHORN_ENGINE_IMAGE_TAG> 
  • longhornio/longhorn-share-manager
  1. image: <REGISTRY_URL>/longhorn-instance-manager:<LONGHORN_INSTANCE_MANAGER_IMAGE_TAG> 
  • longhornio/longhorn-ui
  1. image: <REGISTRY_URL>/longhorn-ui:<LONGHORN_UI_IMAGE_TAG> 
  • CSI_ATTACHER_IMAGE
  • CSI_PROVISIONER_IMAGE
  • CSI_NODE_DRIVER_REGISTRAR_IMAGE
  • CSI_RESIZER_IMAGE
  • CSI_SNAPSHOTTER_IMAGE

修改 longhorn-driver-deployer Deployment 中的 Kubernetes CSI driver 组件环境变量指向你的私有 registry 镜像

  1. name: CSI_ATTACHER_IMAGE 
  2.   value: <REGISTRY_URL>/csi-attacher:<CSI_ATTACHER_IMAGE_TAG> 
  3. name: CSI_PROVISIONER_IMAGE 
  4.   value: <REGISTRY_URL>/csi-provisioner:<CSI_PROVISIONER_IMAGE_TAG> 
  5. name: CSI_NODE_DRIVER_REGISTRAR_IMAGE 
  6.   value: <REGISTRY_URL>/csi-node-driver-registrar:<CSI_NODE_DRIVER_REGISTRAR_IMAGE_TAG> 
  7. name: CSI_RESIZER_IMAGE 
  8.   value: <REGISTRY_URL>/csi-resizer:<CSI_RESIZER_IMAGE_TAG> 
  9. name: CSI_SNAPSHOTTER_IMAGE 
  10.   value: <REGISTRY_URL>/csi-snapshotter:<CSI_SNAPSHOTTER_IMAGE_TAG> 
  • 修改 Longhorn 镜像以指向您的私有 registry 镜像

示例:

  1. apiVersion: apps/v1 
  2. kind: Deployment 
  3. metadata: 
  4.   labels: 
  5.     app: longhorn-ui 
  6.   name: longhorn-ui 
  7.   namespace: longhorn-system 
  8. spec: 
  9.   replicas: 1 
  10.   selector: 
  11.     matchLabels: 
  12.       app: longhorn-ui 
  13.   template: 
  14.     metadata: 
  15.       labels: 
  16.         app: longhorn-ui 
  17.     spec: 
  18.       containers: 
  19.       - name: longhorn-ui 
  20.         image: <REGISTRY_URL>/longhorn-ui:<LONGHORN_UI_IMAGE_TAG>   ## Add image name and tag here 
  21.         ports: 
  22.         - containerPort: 8000 
  23.         env: 
  24.           - name: LONGHORN_MANAGER_IP 
  25.             value: "http://longhorn-backend:9500" 
  26.       imagePullSecrets: 
  27.       - name: <SECRET_NAME> 
  28.       serviceAccountName: longhorn-service-account 

使用修改后的 manifest 文件部署 Longhorn

  1. kubectl apply -f longhorn.yaml 

使用 Helm Chart

在 v1.1.2 中,Longhorn 自动为镜像添加 前缀。您只需设置 registryUrl 参数即可从您的私有 registry 中提取镜像。

注意: 一旦您将 registryUrl 设置为您的私有 registry ,Longhorn 会尝试专门从注册表中提取镜像。确保所有 Longhorn 组件的镜像都在注册表中,否则 Longhorn 将无法拉取镜像。

使用默认镜像名称

如果您按照此处推荐的方式保留镜像名称,则只需执行以下步骤:

克隆 Longhorn 仓库:

  1. git clone https://github.com/longhorn/longhorn.git 

在 chart/values.yaml

Longhorn 将使用这些信息自动生成一个 secret,并使用它从您的私人 registry 中提取镜像。

  1. defaultSettings: 
  2.   registrySecret: <SECRET_NAME> 
  3.  
  4. privateRegistry: 
  5.     registryUrl: <REGISTRY_URL> 
  6.     registryUser: <REGISTRY_USER> 
  7.     registryPasswd: <REGISTRY_PASSWORD> 
  8.     registrySecret: <REGISTRY_SECRET_NAME> 
  • 指定 Private registry URL。如果注册表需要身份验证,请指定 Private registry user、Private registry password 和 Private registry secret。

使用自定义镜像名称

如果要使用自定义图像的名称,可以使用以下步骤:

克隆 longhorn repo

  1. git clone https://github.com/longhorn/longhorn.git 

在 chart/values.yaml 中

注意: 不包括私有 registry 前缀,它将自动添加。例如:如果您的镜像是 example.com/username/longhorn-manager,请在以下 charts 中使用 username/longhorn-manager。

  • 指定 Longhorn 镜像和 tag:
  1. image: 
  2.   longhorn: 
  3.     engine: 
  4.       repository: longhornio/longhorn-engine 
  5.       tag: <LONGHORN_ENGINE_IMAGE_TAG> 
  6.     manager: 
  7.       repository: longhornio/longhorn-manager 
  8.       tag: <LONGHORN_MANAGER_IMAGE_TAG> 
  9.     ui: 
  10.       repository: longhornio/longhorn-ui 
  11.       tag: <LONGHORN_UI_IMAGE_TAG> 
  12.     instanceManager: 
  13.       repository: longhornio/longhorn-instance-manager 
  14.       tag: <LONGHORN_INSTANCE_MANAGER_IMAGE_TAG> 
  15.     shareManager: 
  16.       repository: longhornio/longhorn-share-manager 
  17.       tag: <LONGHORN_SHARE_MANAGER_IMAGE_TAG> 
  • 指定 CSI Driver 组件镜像和标签:
  1. csi: 
  2.     attacher: 
  3.       repository: longhornio/csi-attacher 
  4.       tag: <CSI_ATTACHER_IMAGE_TAG> 
  5.     provisioner: 
  6.       repository: longhornio/csi-provisioner 
  7.       tag: <CSI_PROVISIONER_IMAGE_TAG> 
  8.     nodeDriverRegistrar: 
  9.       repository: longhornio/csi-node-driver-registrar 
  10.       tag: <CSI_NODE_DRIVER_REGISTRAR_IMAGE_TAG> 
  11.     resizer: 
  12.       repository: longhornio/csi-resizer 
  13.       tag: <CSI_RESIZER_IMAGE_TAG> 
  14.     snapshotter: 
  15.       repository: longhornio/csi-snapshotter 
  16.       tag: <CSI_SNAPSHOTTER_IMAGE_TAG> 
  • 指定 Private registry URL。如果 registry 需要身份验证,请指定 Private registry user、Private registry password 和 Private registry secret。 Longhorn 将使用这些信息自动生成一个 secret,并使用它从您的私有 registry 中提取镜像。
  1. defaultSettings: 
  2.   registrySecret: <SECRET_NAME> 
  3.  
  4. privateRegistry: 
  5.     registryUrl: <REGISTRY_URL> 
  6.     registryUser: <REGISTRY_USER> 
  7.     registryPasswd: <REGISTRY_PASSWORD> 

安装 Longhorn

  • Helm2
  1. helm install ./chart --name longhorn --namespace longhorn-system 
  • Helm3
  1. kubectl create namespace longhorn-system 
  2.  
  3. helm install longhorn ./chart --namespace longhorn-system 

使用 Rancher app

使用默认镜像名称

如果您按照上面推荐的方式保留镜像名称,则只需执行以下步骤:

  • 在 Private Registry Settings 部分指定:

Longhorn 将使用这些信息自动生成一个 secret,并使用它从您的私人 registry 中提取镜像。

  • 私有 registry URL
  • 私有 registry user
  • 私有 registry password
  • 私有 registry secret name

使用自定义镜像名称

  • 如果要使用自定义镜像的名称,可以将 Use Default Images 设置为 False 并指定镜像的名称。

注意: 不包括私有 registry 前缀,它将自动添加。例如:如果您的镜像是 example.com/username/longhorn-manager,请在以下 charts 中使用 username/longhorn-manager。

  • 指定 Private registry URL。如果注册中心需要身份验证,请指定 Private registry user、Private registry password 和 Private registry secret name。Longhorn 将使用这些信息自动生成一个 secret,并使用它从您的私人 registry 中提取镜像。

故障排除

对于 Helm/Rancher 安装,如果用户忘记提交 secret 以对私有 registry 进行身份验证,则 longhorn-manager DaemonSet 将无法创建。

创建 Kubernetes secret

  1. kubectl -n longhorn-system create secret docker-registry <SECRET_NAME> --docker-server=<REGISTRY_URL> --docker-username=<REGISTRY_USER> --docker-password=<REGISTRY_PASSWORD> 

手动创建 registry-secret 设置对象。

  1. apiVersion: longhorn.io/v1beta1 
  2. kind: Setting 
  3. metadata: 
  4.   name: registry-secret 
  5.   namespace: longhorn-system 
  6. value: <SECRET_NAME> 

kubectl apply -f registry-secret.yml

删除 Longhorn 并重新安装。

  • Helm2
  1. helm uninstall ./chart --name longhorn --namespace longhorn-system 
  2.  
  3. helm install ./chart --name longhorn --namespace longhorn-system 
  • Helm3
  1. helm uninstall longhorn ./chart --namespace longhorn-system 
  2.  
  3. helm install longhorn ./chart --namespace longhorn-system 

推荐:

强烈建议不要操作镜像 tag,尤其是实例管理器镜像 tag,例如 v1_20200301,因为我们有意使用日期以避免将其与 Longhorn 版本相关联。

 

Longhorn 组件的镜像托管在 Dockerhub 中的 longhornio 帐户下。例如,longhornio/longhorn-manager:v1.1.2。建议在将镜像推送到私有 registry 时保持帐户名 longhornio 相同。这有助于避免不必要的配置问题。

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/279748.html<

(0)
管理的头像管理
上一篇2025-05-12 05:06
下一篇 2025-05-12 05:07

相关推荐

  • 站群服务器如何批量管理更高效,有哪些管理技巧?

    站群服务器批量管理想提效,自动化是唯一出路,通过统一配置管理工具与面板系统,结合服务商提供的底层基础设施支持,能将运维效率提升数倍,批量管理的核心痛点与解决思路多台站群服务器分散管理,最常见的问题就是重复劳动,每次软件更新、配置修改、安全加固,都需要逐台登录操作,不仅耗时,还容易漏掉某台机器,更头疼的是,一旦某……

    2026-07-27
    0
  • 服务器磁盘IO过高如何优化?,磁盘IO过高的原因有哪些?

    服务器磁盘IO过高,核心优化路径是“先定位、再分流、后升级”,你需要通过系统工具精确判断究竟是应用程序、日志策略还是硬件瓶颈导致,然后针对性地从代码、缓存、存储架构和硬件选型四个层面下手,其中选择持有持牌自营机房和增值电信业务经营许可证的服务商,能从根本上保障底层IO稳定性,定位IO瓶颈:动手优化的第一步盲目优……

    2026-07-27
    0
  • 跨境网站访问延迟高怎么解决,网站访问慢的原因是什么?

    跨境网站访问延迟高的核心解决思路在于多维度优化网络路径,包括使用全球CDN加速、选择靠近目标区域的优质IDC机房、调整传输协议以及精简应用层资源,其中服务商的基础设施质量直接决定优化上限,为什么跨境访问延迟高?三大核心因素物理距离与光速限制数据包在海底光缆中的传输速度受限于介质,从中国到美国西海岸的物理往返时间……

    2026-07-27
    0
  • 站群服务器到底是什么意思,怎么选择比较好

    站群服务器就是一台拥有多个独立IP地址、专门用于托管和管理多个网站的高性能服务器,其核心价值在于通过独立IP降低网站间的关联风险,并提升搜索引擎优化效果,站群服务器的工作原理与适用场景站群服务器本质上是将一台物理服务器通过虚拟化或直接配置的方式,分配给多个独立IP地址,每个IP对应一个独立的网站,这些网站共享服……

    2026-07-27
    0
  • 高防服务器误封正常流量如何调整,怎么解决?

    高防服务器误封正常流量,核心调整思路是从“一刀切”转向“精细化”——通过分析业务特征,调整防护阈值、配置白名单和启用智能学习模式,让防护系统学会区分真假流量,为什么会误封正常流量误封主要源于防护策略的通用化,高防服务器通常默认启用严格防护规则,当流量特征与攻击特征库部分匹配时,就会被拦截,据行业安全白皮书指出……

    2026-07-27
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注