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

内容来源于官方 Longhorn 1.1.2 英文技术手册。
系列
- Longhorn 是什么?
- Longhorn 云原生容器分布式存储 - 设计架构和概念
- Longhorn 云原生容器分布式存储 - 部署篇
- Longhorn 云原生容器分布式存储 - 券和节点
- Longhorn 云原生容器分布式存储 - K8S 资源配置示例
- Longhorn 云原生容器分布式存储 - 监控(Prometheus)
- Longhorn 云原生容器分布式存储 - 备份与恢复
- Longhorn 云原生容器分布式存储 - 高可用
- Longhorn 云原生容器分布式存储 - 支持 ReadWriteMany (RWX) 工作负载
- Longhorn 云原生容器分布式存储 - 定制部署默认设置
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环境中。另一方面,如果您不指定文件名,脚本只会将镜像列表拉到您的计算机上。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
获取 Longhorn Deployment manifest file
wget https://raw.githubusercontent.com/longhorn/longhorn/v1.1.2/deploy/longhorn.yaml创建 Longhorn namespace
kubectl create namespace longhorn-system如果私有
registry需要身份验证,在longhorn-system命名空间中创建docker-registrysecret: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.namelonghorn-driver-deployerDeploymentlonghorn-managerDaemonSetlonghorn-uiDeployment
示例:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: longhorn-ui
name: longhorn-ui
namespace: longhorn-system
spec:
replicas: 1
selector:
matchLabels:
app: longhorn-ui
template:
metadata:
labels:
app: longhorn-ui
spec:
containers:
- name: longhorn-ui
image: longhornio/longhorn-ui:v0.8.0
ports:
- containerPort: 8000
env:
- name: LONGHORN_MANAGER_IP
value: "http://longhorn-backend:9500"
imagePullSecrets:
- name: <SECRET_NAME> ## Add SECRET_NAME here
serviceAccountName: longhorn-service-account
对 manifest file 应用以下修改
修改
longhorn-driver-deployerDeployment 中的Kubernetes CSI driver组件环境变量指向你的私有registry镜像- CSI_ATTACHER_IMAGE
- CSI_PROVISIONER_IMAGE
- CSI_NODE_DRIVER_REGISTRAR_IMAGE
- CSI_RESIZER_IMAGE
- CSI_SNAPSHOTTER_IMAGE
- name: CSI_ATTACHER_IMAGE
value: <REGISTRY_URL>/csi-attacher:<CSI_ATTACHER_IMAGE_TAG>
- name: CSI_PROVISIONER_IMAGE
value: <REGISTRY_URL>/csi-provisioner:<CSI_PROVISIONER_IMAGE_TAG>
- name: CSI_NODE_DRIVER_REGISTRAR_IMAGE
value: <REGISTRY_URL>/csi-node-driver-registrar:<CSI_NODE_DRIVER_REGISTRAR_IMAGE_TAG>
- name: CSI_RESIZER_IMAGE
value: <REGISTRY_URL>/csi-resizer:<CSI_RESIZER_IMAGE_TAG>
- name: CSI_SNAPSHOTTER_IMAGE
value: <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-ui
name: longhorn-ui
namespace: longhorn-system
spec:
replicas: 1
selector:
matchLabels:
app: longhorn-ui
template:
metadata:
labels:
app: longhorn-ui
spec:
containers:
- name: longhorn-ui
image: <REGISTRY_URL>/longhorn-ui:<LONGHORN_UI_IMAGE_TAG> ## Add image name and tag here
ports:
- containerPort: 8000
env:
- name: LONGHORN_MANAGER_IP
value: "http://longhorn-backend:9500"
imagePullSecrets:
- name: <SECRET_NAME>
serviceAccountName: longhorn-service-account
使用修改后的
manifest文件部署Longhornkubectl apply -f longhorn.yaml
使用 Helm Chart
在 v1.1.2 中,Longhorn 自动为镜像添加 <REGISTRY_URL> 前缀。您只需设置 registryUrl 参数即可从您的私有 registry 中提取镜像。
注意: 一旦您将
registryUrl设置为您的私有registry,Longhorn会尝试专门从注册表中提取镜像。确保所有Longhorn组件的镜像都在注册表中,否则Longhorn将无法拉取镜像。
使用默认镜像名称
如果您按照此处推荐的方式保留镜像名称,则只需执行以下步骤:
克隆 Longhorn 仓库:
git clone https://github.com/longhorn/longhorn.git在
chart/values.yaml指定
Private registry URL。如果注册表需要身份验证,请指定Private registry user、Private registry password和Private registry secret。
Longhorn将使用这些信息自动生成一个secret,并使用它从您的私人registry中提取镜像。defaultSettings:
registrySecret: <SECRET_NAME> privateRegistry:
registryUrl: <REGISTRY_URL>
registryUser: <REGISTRY_USER>
registryPasswd: <REGISTRY_PASSWORD>
registrySecret: <REGISTRY_SECRET_NAME>
使用自定义镜像名称
如果要使用自定义图像的名称,可以使用以下步骤:
克隆 longhorn repo
git clone https://github.com/longhorn/longhorn.git在
chart/values.yaml中注意: 不包括私有
registry前缀,它将自动添加。例如:如果您的镜像是example.com/username/longhorn-manager,请在以下 charts 中使用username/longhorn-manager。指定 Longhorn 镜像和
tag:image:
longhorn:
engine:
repository: longhornio/longhorn-engine
tag: <LONGHORN_ENGINE_IMAGE_TAG>
manager:
repository: longhornio/longhorn-manager
tag: <LONGHORN_MANAGER_IMAGE_TAG>
ui:
repository: longhornio/longhorn-ui
tag: <LONGHORN_UI_IMAGE_TAG>
instanceManager:
repository: longhornio/longhorn-instance-manager
tag: <LONGHORN_INSTANCE_MANAGER_IMAGE_TAG>
shareManager:
repository: longhornio/longhorn-share-manager
tag: <LONGHORN_SHARE_MANAGER_IMAGE_TAG>
指定 CSI Driver 组件镜像和标签:
csi:
attacher:
repository: longhornio/csi-attacher
tag: <CSI_ATTACHER_IMAGE_TAG>
provisioner:
repository: longhornio/csi-provisioner
tag: <CSI_PROVISIONER_IMAGE_TAG>
nodeDriverRegistrar:
repository: longhornio/csi-node-driver-registrar
tag: <CSI_NODE_DRIVER_REGISTRAR_IMAGE_TAG>
resizer:
repository: longhornio/csi-resizer
tag: <CSI_RESIZER_IMAGE_TAG>
snapshotter:
repository: longhornio/csi-snapshotter
tag: <CSI_SNAPSHOTTER_IMAGE_TAG>
指定
Private registry URL。如果registry需要身份验证,请指定Private registry user、Private registry password和Private registry secret。
Longhorn将使用这些信息自动生成一个secret,并使用它从您的私有registry中提取镜像。defaultSettings:
registrySecret: <SECRET_NAME> privateRegistry:
registryUrl: <REGISTRY_URL>
registryUser: <REGISTRY_USER>
registryPasswd: <REGISTRY_PASSWORD>
安装 Longhorn
Helm2
helm install ./chart --name longhorn --namespace longhorn-systemHelm3
kubectl create namespace longhorn-systemhelm 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 user、Private registry password和Private registry secret name。
Longhorn 将使用这些信息自动生成一个secret,并使用它从您的私人registry中提取镜像。

故障排除
对于 Helm/Rancher 安装,如果用户忘记提交 secret 以对私有 registry 进行身份验证,则 longhorn-manager DaemonSet 将无法创建。
创建 Kubernetes secret
kubectl -n longhorn-system create secret docker-registry <SECRET_NAME> --docker-server=<REGISTRY_URL> --docker-username=<REGISTRY_USER> --docker-password=<REGISTRY_PASSWORD>手动创建
registry-secret设置对象。apiVersion: longhorn.io/v1beta1
kind: Setting
metadata:
name: registry-secret
namespace: longhorn-system
value: <SECRET_NAME>
kubectl apply -f registry-secret.yml删除 Longhorn 并重新安装。
Helm2
helm uninstall ./chart --name longhorn --namespace longhorn-systemhelm install ./chart --name longhorn --namespace longhorn-systemHelm3
helm uninstall longhorn ./chart --namespace longhorn-systemhelm 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 安装的更多相关文章
- Longhorn 云原生容器分布式存储 - Python Client
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 云原生容器分布式存储 - 设计架构和概念 Longhorn 云原生容器分布式存储 - ...
- Longhorn 云原生容器分布式存储 - 故障排除指南
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 云原生容器分布式存储 - 设计架构和概念 Longhorn 云原生容器分布式存储 - ...
- Longhorn,企业级云原生容器分布式存储 - 定制默认设置
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 云原生容器分布式存储 - 设计架构和概念 Longhorn 云原生容器分布式存储 - ...
- Longhorn,企业级云原生容器分布式存储 - 备份与恢复
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...
- Longhorn,企业级云原生容器分布式存储 - 监控(Prometheus+AlertManager+Grafana)
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...
- Longhorn,企业级云原生容器分布式存储 - 支持 ReadWriteMany (RWX) 工作负载(实验性功能)
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...
- Longhorn,企业级云原生容器分布式存储 - K8S 资源配置示例
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...
- Longhorn,企业级云原生容器分布式存储 - 高可用
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...
- Longhorn 企业级云原生容器存储解决方案-部署篇
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 云原生分布式块存储解决方案设计架构和概念 安装 Longhorn 可以通过多种方式安装 ...
随机推荐
- 国产深度学习框架mindspore-1.3.0 gpu版本无法进行源码编译
官网地址: https://www.mindspore.cn/install 所有依赖环境 进行sudo make install 安装,最终报错: 错误记录信息: cat /tmp/mind ...
- PAT甲级:1152 Google Recruitment (20分)
PAT甲级:1152 Google Recruitment (20分) 题干 In July 2004, Google posted on a giant billboard along Highwa ...
- debian9 python环境设置
file /usr/bin/python which python2 which python3 mv /usr/bin/python /usr/bin/python_bk ln -s /usr/bi ...
- 每天五分钟Go - 数组
//数组的声明,默认为0值 var a1 [2]int fmt.Println(a1) //数组的长度 fmt.Println(len(a1)) //遍历数组 for i, v := range a1 ...
- 在 Golang 中实现一个简单的Http中间件
本文主要针对Golang的内置库 net/http 做了简单的扩展,通过添加中间件的形式实现了管道(Pipeline)模式,这样的好处是各模块之间是低耦合的,符合单一职责原则,可以很灵活的通过中间件的 ...
- [POI2008]PER
很有思维的一道题 这个题的题面非常简单,出题人很友好,没有搞什么奇怪的背景,(卡农(P3214)的作者看看人家),所以理解题面就是: 一句话题意: 给定一个长度为 \(n\) 的数列,求这个数列是在其 ...
- Python基础之PyQt5关闭界面
想让执行完程序后自动关闭窗口,而不用点击右上角叉叉的方法是self.close(),具体应用还是以treewidget为例. 前面我们写了一个treewidget的界面,并且实现了界面代码分离,具体实 ...
- 一文彻底弄懂cookie、session、token
前言 作为一个JAVA开发,之前有好几次出去面试,面试官都问我,JAVAWeb掌握的怎么样,我当时就不知道怎么回答,Web,日常开发中用的是什么?今天我们来说说JAVAWeb最应该掌握的三个内容. 发 ...
- centos ansible常用命令
ansible在日常运维中经常使用,特别是批量执行多台服务器的时候,有效减小重复的操作成本,以下从安装到使用仅讲解工作中常用的几种方式,模块很多功能很强大,但不做全面讨论. ansible安装 在ce ...
- 《MySQL实战45讲》(1-7)笔记
<MySQL实战45讲>笔记 目录 <MySQL实战45讲>笔记 第一节: 基础架构:一条SQL查询语句是如何执行的? 连接器 查询缓存 分析器 优化器 执行器 第二节:日志系 ...