IBM Cloud Docs
规划 Portworx 设置

规划 Portworx 设置

在创建集群并安装 Portworx之前,请查看以下规划步骤。

  • 确定要存储 Portworx 元数据的位置。 您可以使用 KVDB 或外部数据库实例。 有关更多信息,请参阅 了解键值存储。 要了解有关键值的更多信息,请参阅 Portworx 文档
  • 决定是否要加密。 您可以使用 Hyper Protect Crypto Services 或 IBM Key Protect。 有关更多信息,请参阅 了解 Portworx
  • 决定是否要使用日志设备。 日志设备允许 Portworx 将日志直接写入工作程序节点上的本地磁盘。
  • 仅 VPC 或 Satellite 集群-决定是否要使用云驱动器。 云驱动器允许您动态供应 Portworx 卷。 如果不想使用云驱动器,必须手动将卷连接到工作程序节点。
  • 查看 限制

限制

查看以下 Portworx 限制。

Portworx 限制
限制 描述
蒙特利尔私人集群 蒙特利尔地区的专用群集尚不支持 Portworx Enterprise 和 Portworx Backup 的默认安装方法。 如果您需要在蒙特利尔的专用群集中安装 Portworx Enterprise 或 Portworx Backup,请联系 Portworx 支持。 更多信息,请参阅 Portworx 支持
经典集群 添加工作程序节点时需要重新启动 Pod。 由于 Portworx 在集群中作为 DaemonSet 运行,因此在部署 Portworx时,将自动检查现有工作程序节点以获取原始块存储器,并将其添加到 Portworx 数据层。 如果向集群添加或更新工作程序节点,并向这些工作程序添加原始块存储器,请在新的或更新的工作程序节点上重新启动 Portworx pod,以便 DaemonSet检测到存储卷。
VPC 集群 更新工作程序节点时需要存储卷重新连接。 更新 VPC 集群中的工作程序节点时,将从集群中除去该工作程序节点并将其替换为新的工作程序节点。 如果 Portworx 卷已连接到被更换的工作程序节点,那么必须将这些卷连接到新的工作程序节点。 您可以使用 APICLI 来连接存储卷。 请注意,此限制不适用于使用云驱动器的 Portworx 部署。
不支持 Portworx 试验性 InitializerConfiguration 功能。 Red Hat OpenShift on IBM Cloud 不支持 Portworx 试验性 InitializerConfiguration 许可控制器
专用集群 要在没有 VRF 或无法访问私有云服务端点 (CSE) 的集群中安装 Portworx,必须在缺省安全组中创建规则,以允许以下 IP 地址的入站和出站流量: 166.9.24.81166.9.22.100166.9.20.178。 有关更多信息,请参阅更新缺省安全组
Portworx 备份 Satellite 集群不支持 Portworx 备份。

Portworx 生命周期概述

  1. 创建 多专区集群
    1. 基础结构提供程序: 对于 Satellite 集群,请确保将块存储卷添加到主机,然后再将其连接到您的位置。 如果使用经典基础架构,那么必须为工作程序节点选择裸机类型模板。 对于经典集群,虚拟机只有 1000 Mbps 的网络速度,这不足以使用 Portworx运行生产工作负载。 而是在裸机机器上配置 Portworx 以获取最佳性能。
    2. 工作程序节点类型模板: 选择 SDS 或裸机类型模板。 如果要使用虚拟机,请使用具有 8 vCPU 和 8 GB 或更多内存的工作程序节点。
    3. 最小工作程序数: 跨三个专区的每个专区有两个工作程序节点,至少共有六个工作程序节点。
  2. 仅限 VPC 和非 SDS 经典工作程序节点: 创建原始,未格式化和已卸载的块存储器
  3. 对于生产工作负载,请为 Portworx 元数据键值存储创建 外部 Databases for etcd 实例。
  4. 可选 设置加密
  5. 安装 Portworx
  6. 在集群中维护 Portworx 部署的生命周期。
    1. 更新 VPC 集群中的工作程序节点时,必须执行其他步骤以重新连接 Portworx 卷。 您可以使用 API 或 CLI 来连接存储卷。
    2. 要除去 Portworx 卷,存储节点或整个 Portworx 集群,请参阅 Portworx 清除

创建私钥以存储 KMS 凭证

开始之前: 设置加密

  1. 将先前部分中检索到的凭证编码为 base64,并记下所有 base64 编码的值。 对每个参数重复此命令,以检索 Base64 编码值。
    echo -n "<value>" | base64
    
  2. 在群集中创建一个名为 portworx 的项目。
    oc create ns portworx
    
  3. 在群集的 portworx 项目中创建名为 px-ibm 的 Kubernetes 秘密,用于存储 IBM Key Protect 信息。
    1. 使用以下内容为 Kubernetes 私钥创建配置文件。

      apiVersion: v1
      kind: Secret
      metadata:
        name: px-ibm
        namespace: portworx
      type: Opaque
      data:
        IBM_SERVICE_API_KEY: <base64_apikey>
        IBM_INSTANCE_ID: <base64_guid>
        IBM_CUSTOMER_ROOT_KEY: <base64_rootkey>
        IBM_BASE_URL: <base64_endpoint>
      
      metadata.name
      输入 px-ibm 作为 Kubernetes 秘密的名称。 如果使用其他名称,Portworx 在安装期间不会识别到该私钥。
      data.IBM_SERVICE_API_KEY
      输入您之前获取的 base64 编码的 IBM Key Protect 或 Hyper Protect Crypto Services API 密钥。
      data.IBM_INSTANCE_ID
      输入您之前获取的 base64 编码服务实例 GUID。
      data.IBM_CUSTOMER_ROOT_KEY
      输入您之前获取的 base64 编码根密钥。
      data.IBM_BASE_URL
      IBM Key Protect:输入您服务实例的 base64 编码 API 端点。
      Hyper Protect Crypto Services: 输入 base64 编码的密钥管理公共端点。
    2. 在集群的 portworx 项目中创建私钥。

      oc apply -f secret.yaml
      
    3. 验证私钥是否已成功创建。

      oc get secrets -n portworx
      
  4. 如果是在安装 Portworx 之前设置的加密,那么现在可以在集群中安装 Portworx。 要在安装 Portworx 后将加密添加到群集,请更新 Portworx DaemonSet,将 "-secret_type""ibm-kp" 作为附加选项添加到 Portworx 容器定义中。
    1. 更新 Portworx DaemonSet。

      oc edit daemonset portworx -n kube-system
      

      示例已更新 DaemonSet

      containers:
      - args:
      - -c
      - testclusterid
      - -s
      - /dev/sdb
      - -x
      - kubernetes
      - -secret_type
      - ibm-kp
      name: portworx
      

      编辑 DaemonSet, 后,重新启动 Portworx pod,并自动更新工作节点上的 config.json 文件,以反映该更改。

    2. 列出 kube-system 项目中的 Portworx pod。

      oc get pods -n kube-system | grep portworx
      
    3. 登录到其中一个 Portworx pod。

      oc exec -it <pod_name> -it -n kube-system
      
    4. 导航到 pwx 目录。

      cd etc/pwx
      
    5. 查看 config.json 文件,以验证 "secret_type": "ibm-kp" 是否添加到 CLI 输出的 secret 部分。

      cat config.json
      

      示例输出

      {
      "alertingurl": "",
      "clusterid": "px-kp-test",
      "dataiface": "",
      "kvdb": [
        "etcd:https://portal-ssl748-34.bmix-dal-yp-12a2312v5-123a-44ac-b8f7-5d8ce1d123456.123456789.composedb.com:56963",
        "etcd:https://portal-ssl735-35.bmix-dal-yp-12a2312v5-123a-44ac-b8f7-5d8ce1d123456.12345678.composedb.com:56963"
      ],
      "mgtiface": "",
      "password": "ABCDEFGHIJK",
      "scheduler": "kubernetes",
      "secret": {
          "cluster_secret_key": "",
          "secret_type": "ibm-kp"
      },
      "storage": {
          "devices": [
        "/dev/sdc1"
          ],
          "journal_dev": "",
          "max_storage_nodes_per_zone": 0,
          "system_metadata_dev": ""
      },
      "username": "root",
      "version": "1.0"
      }
      
    6. 退出 pod。

请查看如何加密集群中的私钥,包括在其中存储 Portworx 存储集群的 Key Protect CRK 的私钥。