栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 前沿技术 > 云计算 > Docker/k8s

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

Docker/k8s 更新时间:发布时间: 百科书网 趣学号



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 chmod +x save-images.sh 
  2. ./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 chmod +x load-images.sh 
  2. ./load-images.sh --image-list longhorn-images.txt --images longhorn-images.tar.gz --registry  

有关使用脚本的更多选项,请参阅 flag --help:

  1. ./save-images.sh --help ./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  --docker-server= --docker-username= --docker-password= 

longhorn-driver-deployer Deployment longhorn-manager DaemonSet longhorn-ui Deployment 在以下资源中将您的 secret 名称 SECRET_NAME 添加到 imagePullSecrets.name

示例:

  1. apiVersion: apps/v1 kind: Deployment 
  2. metadata:   labels: 
  3.     app: longhorn-ui   name: longhorn-ui 
  4.   namespace: longhorn-system spec: 
  5.   replicas: 1   selector: 
  6.     matchLabels:       app: longhorn-ui 
  7.   template:     metadata: 
  8.       labels:         app: longhorn-ui 
  9.     spec:       containers: 
  10.       - name: longhorn-ui         image: longhornio/longhorn-ui:v0.8.0 
  11.         ports:         - containerPort: 8000 
  12.         env:           - name: LONGHORN_MANAGER_IP 
  13.             value: "http://longhorn-backend:9500"       imagePullSecrets: 
  14.       - name:                           ## Add SECRET_NAME here       serviceAccountName: longhorn-service-account 

对 manifest file 应用以下修改

longhornio/longhorn-manager

  1. image: /longhorn-manager: 

longhornio/longhorn-engine

  1. image: /longhorn-engine: 

longhornio/longhorn-share-manager

  1. image: /longhorn-instance-manager: 

longhornio/longhorn-ui

  1. image: /longhorn-ui: 

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   value: /csi-attacher: 
  2. - name: CSI_PROVISIONER_IMAGE   value: /csi-provisioner: 
  3. - name: CSI_NODE_DRIVER_REGISTRAR_IMAGE   value: /csi-node-driver-registrar: 
  4. - name: CSI_RESIZER_IMAGE   value: /csi-resizer: 
  5. - name: CSI_SNAPSHOTTER_IMAGE   value: /csi-snapshotter: 

修改 Longhorn 镜像以指向您的私有 registry 镜像

示例:

  1. apiVersion: apps/v1 kind: Deployment 
  2. metadata:   labels: 
  3.     app: longhorn-ui   name: longhorn-ui 
  4.   namespace: longhorn-system spec: 
  5.   replicas: 1   selector: 
  6.     matchLabels:       app: longhorn-ui 
  7.   template:     metadata: 
  8.       labels:         app: longhorn-ui 
  9.     spec:       containers: 
  10.       - name: longhorn-ui         image: /longhorn-ui:   ## Add image name and tag here 
  11.         ports:         - containerPort: 8000 
  12.         env:           - name: LONGHORN_MANAGER_IP 
  13.             value: "http://longhorn-backend:9500"       imagePullSecrets: 
  14.       - name:        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:   registrySecret:  
  2.  privateRegistry: 
  3.     registryUrl:      registryUser:  
  4.     registryPasswd:      registrySecret:  

指定 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:   longhorn: 
  2.     engine:       repository: longhornio/longhorn-engine 
  3.       tag:      manager: 
  4.       repository: longhornio/longhorn-manager       tag:  
  5.     ui:       repository: longhornio/longhorn-ui 
  6.       tag:      instanceManager: 
  7.       repository: longhornio/longhorn-instance-manager       tag:  
  8.     shareManager:       repository: longhornio/longhorn-share-manager 
  9.       tag:  

指定 CSI Driver 组件镜像和标签:

  1. csi:     attacher: 
  2.       repository: longhornio/csi-attacher       tag:  
  3.     provisioner:       repository: longhornio/csi-provisioner 
  4.       tag:      nodeDriverRegistrar: 
  5.       repository: longhornio/csi-node-driver-registrar       tag:  
  6.     resizer:       repository: longhornio/csi-resizer 
  7.       tag:      snapshotter: 
  8.       repository: longhornio/csi-snapshotter       tag:  

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

  1. defaultSettings:   registrySecret:  
  2.  privateRegistry: 
  3.     registryUrl:      registryUser:  
  4.     registryPasswd:  

安装 Longhorn

Helm2

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

Helm3

  1. kubectl create namespace longhorn-system  
  2. 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  --docker-server= --docker-username= --docker-password= 

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

  1. apiVersion: longhorn.io/v1beta1 kind: Setting 
  2. metadata:   name: registry-secret 
  3.   namespace: longhorn-system value:  

kubectl apply -f registry-secret.yml

删除 Longhorn 并重新安装。

Helm2

  1. helm uninstall ./chart --name longhorn --namespace longhorn-system  
  2. helm install ./chart --name longhorn --namespace longhorn-system 

Helm3

  1. helm uninstall longhorn ./chart --namespace longhorn-system  
  2. helm install longhorn ./chart --namespace longhorn-system 

推荐:

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

 

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

 

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/796774.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号