zoukankan      html  css  js  c++  java
  • Longhorn 云原生容器分布式存储

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

    系列

    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-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
        
    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_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
        
    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 secret
        Longhorn 将使用这些信息自动生成一个 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-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 userPrivate registry passwordPrivate registry secret
        Longhorn 将使用这些信息自动生成一个 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-secret
        namespace: 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 相同。这有助于避免不必要的配置问题。

    公众号:黑客下午茶
    
  • 相关阅读:
    HTML学习心得
    VS相关
    安全算法
    第三方库的编译
    C++编译问题
    GCC编译
    linux系统·用户管理
    批处理遍历并计算子文件夹下的文件数目
    [Tianchi] Repeat Buyers Prediction-Challenge the Baseline -- version 0
    win10安装cuda
  • 原文地址:https://www.cnblogs.com/hacker-linner/p/15204320.html
Copyright © 2011-2022 走看看