内容来源于官方 Longhorn 1.1.2 英文技术手册。

系列

  • Longhorn 是什么?
  • Longhorn 云原生容器分布式存储 - 设计架构和概念
  • Longhorn 云原生容器分布式存储 - 部署篇
  • Longhorn 云原生容器分布式存储 - 券和节点
  • Longhorn 云原生容器分布式存储 - K8S 资源配置示例
  • Longhorn 云原生容器分布式存储 - 监控(Prometheus)
  • Longhorn 云原生容器分布式存储 - 备份与恢复
  • Longhorn 云原生容器分布式存储 - 高可用
  • Longhorn 云原生容器分布式存储 - 支持 ReadWriteMany (RWX) 工作负载
  • Longhorn 云原生容器分布式存储 - 定制部署默认设置

Longhorn 可以通过使用 manifest fileHelm chartRancher 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 环境中。另一方面,如果您不指定文件名,脚本只会将镜像列表拉到您的计算机上。

    wget https://raw.githubusercontent.com/longhorn/longhorn/v1.1.2/scripts/save-images.sh
    chmod +x save-images.sh
    ./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 加载镜像并将它们推送到 <YOUR-PRIVATE-REGISTRY>

    wget https://raw.githubusercontent.com/longhorn/longhorn/v1.1.2/scripts/load-images.sh
    chmod +x load-images.sh
    ./load-images.sh --image-list longhorn-images.txt --images longhorn-images.tar.gz --registry <YOUR-PRIVATE-REGISTRY>
  • 有关使用脚本的更多选项,请参阅 flag --help

    ./save-images.sh --help
    ./load-images.sh --help

使用 Manifest File

  1. 获取 Longhorn Deployment manifest file

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

  2. 创建 Longhorn namespace

    kubectl create namespace longhorn-system

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

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

    • 在以下资源中将您的 secret 名称 SECRET_NAME 添加到 imagePullSecrets.name

      • longhorn-driver-deployer Deployment
      • longhorn-manager DaemonSet
      • longhorn-ui Deployment

      示例:

      apiVersion: apps/v1
      kind: Deployment
      metadata:labels:app: longhorn-uiname: longhorn-uinamespace: longhorn-system
      spec:replicas: 1selector:matchLabels:app: longhorn-uitemplate:metadata:labels:app: longhorn-uispec:containers:- name: longhorn-uiimage: longhornio/longhorn-ui:v0.8.0ports:- containerPort: 8000env:- name: LONGHORN_MANAGER_IPvalue: "http://longhorn-backend:9500"imagePullSecrets:- name: <SECRET_NAME>                          ## Add SECRET_NAME hereserviceAccountName: longhorn-service-account
  4. 对 manifest file 应用以下修改

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

      • CSI_ATTACHER_IMAGE
      • CSI_PROVISIONER_IMAGE
      • CSI_NODE_DRIVER_REGISTRAR_IMAGE
      • CSI_RESIZER_IMAGE
      • CSI_SNAPSHOTTER_IMAGE
      - name: CSI_ATTACHER_IMAGEvalue: <REGISTRY_URL>/csi-attacher:<CSI_ATTACHER_IMAGE_TAG>
      - name: CSI_PROVISIONER_IMAGEvalue: <REGISTRY_URL>/csi-provisioner:<CSI_PROVISIONER_IMAGE_TAG>
      - name: CSI_NODE_DRIVER_REGISTRAR_IMAGEvalue: <REGISTRY_URL>/csi-node-driver-registrar:<CSI_NODE_DRIVER_REGISTRAR_IMAGE_TAG>
      - name: CSI_RESIZER_IMAGEvalue: <REGISTRY_URL>/csi-resizer:<CSI_RESIZER_IMAGE_TAG>
      - name: CSI_SNAPSHOTTER_IMAGEvalue: <REGISTRY_URL>/csi-snapshotter:<CSI_SNAPSHOTTER_IMAGE_TAG>
    • 修改 Longhorn 镜像以指向您的私有 registry 镜像

      • longhornio/longhorn-manager

        image: <REGISTRY_URL>/longhorn-manager:<LONGHORN_MANAGER_IMAGE_TAG>

      • longhornio/longhorn-engine

        image: <REGISTRY_URL>/longhorn-engine:<LONGHORN_ENGINE_IMAGE_TAG>

      • longhornio/longhorn-instance-manager

        image: <REGISTRY_URL>/longhorn-instance-manager:<LONGHORN_INSTANCE_MANAGER_IMAGE_TAG>

      • longhornio/longhorn-share-manager

        image: <REGISTRY_URL>/longhorn-share-manager:<LONGHORN_SHARE_MANAGER_IMAGE_TAG>

      • longhornio/longhorn-ui

        image: <REGISTRY_URL>/longhorn-ui:<LONGHORN_UI_IMAGE_TAG>

      示例:

      apiVersion: apps/v1
      kind: Deployment
      metadata:labels:app: longhorn-uiname: longhorn-uinamespace: longhorn-system
      spec:replicas: 1selector:matchLabels:app: longhorn-uitemplate:metadata:labels:app: longhorn-uispec:containers:- name: longhorn-uiimage: <REGISTRY_URL>/longhorn-ui:<LONGHORN_UI_IMAGE_TAG>   ## Add image name and tag hereports:- containerPort: 8000env:- name: LONGHORN_MANAGER_IPvalue: "http://longhorn-backend:9500"imagePullSecrets:- name: <SECRET_NAME>serviceAccountName: longhorn-service-account
  5. 使用修改后的 manifest 文件部署 Longhorn

    kubectl apply -f longhorn.yaml

使用 Helm Chart

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

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

使用默认镜像名称

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

  1. 克隆 Longhorn 仓库:

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

  2. chart/values.yaml

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

      defaultSettings:registrySecret: <SECRET_NAME>privateRegistry:registryUrl: <REGISTRY_URL>registryUser: <REGISTRY_USER>registryPasswd: <REGISTRY_PASSWORD>registrySecret: <REGISTRY_SECRET_NAME>

使用自定义镜像名称

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

  1. 克隆 longhorn repo

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

  2. chart/values.yaml

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

    • 指定 Longhorn 镜像和 tag

      image:longhorn:engine:repository: longhornio/longhorn-enginetag: <LONGHORN_ENGINE_IMAGE_TAG>manager:repository: longhornio/longhorn-managertag: <LONGHORN_MANAGER_IMAGE_TAG>ui:repository: longhornio/longhorn-uitag: <LONGHORN_UI_IMAGE_TAG>instanceManager:repository: longhornio/longhorn-instance-managertag: <LONGHORN_INSTANCE_MANAGER_IMAGE_TAG>shareManager:repository: longhornio/longhorn-share-managertag: <LONGHORN_SHARE_MANAGER_IMAGE_TAG>
    • 指定 CSI Driver 组件镜像和标签:

      csi:attacher:repository: longhornio/csi-attachertag: <CSI_ATTACHER_IMAGE_TAG>provisioner:repository: longhornio/csi-provisionertag: <CSI_PROVISIONER_IMAGE_TAG>nodeDriverRegistrar:repository: longhornio/csi-node-driver-registrartag: <CSI_NODE_DRIVER_REGISTRAR_IMAGE_TAG>resizer:repository: longhornio/csi-resizertag: <CSI_RESIZER_IMAGE_TAG>snapshotter:repository: longhornio/csi-snapshottertag: <CSI_SNAPSHOTTER_IMAGE_TAG>
    • 指定 Private registry URL。如果 registry 需要身份验证,请指定 Private registry userPrivate registry passwordPrivate registry secretLonghorn 将使用这些信息自动生成一个 secret,并使用它从您的私有 registry 中提取镜像。

      defaultSettings:registrySecret: <SECRET_NAME>privateRegistry:registryUrl: <REGISTRY_URL>registryUser: <REGISTRY_USER>registryPasswd: <REGISTRY_PASSWORD>
  3. 安装 Longhorn

    • Helm2

      helm install ./chart --name longhorn --namespace longhorn-system

    • Helm3

      kubectl create namespace longhorn-system

      helm install longhorn ./chart --namespace longhorn-system

使用 Rancher app

使用默认镜像名称

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

  • Private Registry Settings 部分指定:

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

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

使用自定义镜像名称

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

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

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

故障排除

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

  1. 创建 Kubernetes secret

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

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

    apiVersion: longhorn.io/v1beta1
    kind: Setting
    metadata:name: registry-secretnamespace: longhorn-system
    value: <SECRET_NAME>

    kubectl apply -f registry-secret.yml

  3. 删除 Longhorn 并重新安装。

    • Helm2

      helm uninstall ./chart --name longhorn --namespace longhorn-system

      helm install ./chart --name longhorn --namespace longhorn-system

    • Helm3

      helm uninstall longhorn ./chart --namespace longhorn-system

      helm install longhorn ./chart --namespace longhorn-system

推荐:

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

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

公众号:黑客下午茶

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

  1. Kubernetes云原生开源分布式存储介绍

    Kubernetes存储介绍 为何引入PV.PVC以及StorageClass? 熟悉Kubernetes的都对PV.PVC以及StorageClass不陌生,我们经常用到,因此这里不再详细介绍PV. ...

  2. 在生产环境中,阿里云如何构建高性能云原生容器网络?(含 PPT 下载)

    作者 | 溪恒  阿里云技术专家 直播完整视频回顾:https://www.bilibili.com/video/BV1nC4y1x7mt/ 关注"阿里巴巴云原生"公众号,后台回复 ...

  3. 腾讯云EMR基于YARN针对云原生容器化的优化与实践

    导语 | 传统HADOOP生态系统使用YARN管理/调度计算资源,该系统⼀般具有明显的资源使⽤周期.实时计算集群资源消耗主要在⽩天,而数据报表型业务则安排在离线计算集群中.离在线业务分开部署的首要问题 ...

  4. 可靠、稳定、安全,龙蜥云原生容器镜像正式发布!

    文/云原生 SIG 01 背景 随着云原生的蓬勃发展,越来越多的企业在自己的生产或者测试环境使用云原生技术,而容器镜像正是云原生技术中应用的实际运行环境.一个好的容器运行环境即容器镜像会真正关系到应用 ...

  5. vivo 云原生容器探索和落地实践

    作者:vivo 互联网容器团队- Pan Liangbiao 本文根据潘良彪老师在"2022 vivo开发者大会"现场演讲内容整理而成.公众号回复[2022 VDC]获取互联网技术 ...

  6. 服务器和交换机物理连接_利用Calico融合物理网络的云原生容器SDN方案

    01 云原生的背景 随着云计算的蓬勃发展,越来越多的IT设施及架构具备了虚拟化.分布式.多租户的云计算能力,这些能力为高速发展的互联网行业插上了腾飞的翅膀.并为互联网业务的开展提供了极大的便利. 当移 ...

  7. 云原生容器化-1 Linux虚拟网络介绍

    背景: 本文开始引入一个新的专题--云原生容器化,用于收集云和容器化相关的文章: 以Docker和Kubernates的组成.实现原理.常见操作为主体内容,还会涉及一些云的概念:初步计划会整理出以下文 ...

  8. 云原生容器平台的容灾

    目录 引言 什么是业务连续性 什么是容灾 什么是灾难恢复 容灾的关键指标 容器平台的容灾 容器应用对业务连续性的要求 容器平台实现容灾的挑战 容器应用实现容灾的原则 容器平台的容灾实现思路 基于备份恢 ...

  9. Docker_虚拟化-云服务-云原生-容器概念-安装

    文章目录 为什么要学习docker.k8s.prometus? 虚拟化 云计算 容器 云原生 Docker 安装 相关概念 相关命令 相关进程 容器和虚拟机 区别 docker优缺点 为什么要学习do ...

  10. CNCF 云原生容器生态系统概要

    文章目录 1. Cloud(云) 公有云 私有云 2. Provisioning(部署) Host Management / Tooling Infrastructure Automation Con ...

最新文章

  1. 【物联网智能网关-02】获取摄像头数据+显示
  2. DL之GD:利用LogisticGD算法(梯度下降)依次基于一次函数和二次函数分布的数据集实现二分类预测(超平面可视化)
  3. wx轮播图接口学习用json格式_零基础学小程序008----列表和轮播图的实现,小程序解析json数据...
  4. mysql安装版安装
  5. BZOJ 2588: Spoj 10628. Count on a tree( LCA + 主席树 )
  6. Python的基本数据类型(1)
  7. 安装SVN时提示错误:vcredist 2019 download
  8. 绿盟漏洞扫描工具_IDC盘点2020上半年中国安全市场绿盟科技再获响应和编排能力认可...
  9. head first JavaScript pdf 下载
  10. vue扫码跳转页面_VUE 网页 扫码登录(微信)
  11. “人生就像滚雪球,重要的是发现很湿的雪和很长的坡。”+复利的力量
  12. 《临江仙》---摘抄
  13. typora配置好smms后还是typora上传图片失败:image load failed。
  14. Android中字母大小写切换的快捷键
  15. 抓包分析 TCP 握手和挥手
  16. Android 实现一键反混淆功能
  17. 中望CAD教程:如何将PDF转化为DWG格式文件
  18. BI领导驾驶舱的功能特点
  19. 【欧拉计划第 13 题】 大数之和 Large sum
  20. d6921高铁时刻表_哈尔滨高铁时刻表

热门文章

  1. 神来之笔,2021CTF内核漏洞精选解析
  2. 10个热门大数据发展趋势
  3. html5简单的数字加法效果
  4. kubernetes lowB安装方式
  5. zyb的面试 Hdu6468
  6. Hybrid App开发 四大主流平台
  7. 为什么Next-Key Lock可以解决幻读问题
  8. 通信工程是计算机类还是电子信息类公考,通信工程属于电子信息类吗
  9. UE4 关闭屏幕显示信息响应
  10. 疾病负担研究(GBD)介绍