规划 Portworx 设置
在创建集群并安装 Portworx之前,请查看以下规划步骤。
- 确定要存储 Portworx 元数据的位置。 您可以使用 KVDB 或外部数据库实例。 有关更多信息,请参阅 了解键值存储。 要了解有关键值的更多信息,请参阅 Portworx 文档。
- 决定是否要加密。 您可以使用 Hyper Protect Crypto Services 或 IBM Key Protect。 有关更多信息,请参阅 了解 Portworx。
- 决定是否要使用日志设备。 日志设备允许 Portworx 将日志直接写入工作程序节点上的本地磁盘。
- 仅 VPC 或 Satellite 集群-决定是否要使用云驱动器。 云驱动器允许您动态供应 Portworx 卷。 如果不想使用云驱动器,必须手动将卷连接到工作程序节点。
- 查看 限制。
限制
查看以下 Portworx 限制。
限制 | 描述 |
---|---|
蒙特利尔私人集群 | 蒙特利尔地区的专用群集尚不支持 Portworx Enterprise 和 Portworx Backup 的默认安装方法。 如果您需要在蒙特利尔的专用群集中安装 Portworx Enterprise 或 Portworx Backup,请联系 Portworx 支持。 更多信息,请参阅 Portworx 支持。 |
经典集群 添加工作程序节点时需要重新启动 Pod。 | 由于 Portworx 在集群中作为 DaemonSet 运行,因此在部署 Portworx时,将自动检查现有工作程序节点以获取原始块存储器,并将其添加到 Portworx 数据层。 如果向集群添加或更新工作程序节点,并向这些工作程序添加原始块存储器,请在新的或更新的工作程序节点上重新启动 Portworx pod,以便 DaemonSet检测到存储卷。 |
VPC 集群 更新工作程序节点时需要存储卷重新连接。 | 更新 VPC 集群中的工作程序节点时,将从集群中除去该工作程序节点并将其替换为新的工作程序节点。 如果 Portworx 卷已连接到被更换的工作程序节点,那么必须将这些卷连接到新的工作程序节点。 您可以使用 API 或 CLI 来连接存储卷。 请注意,此限制不适用于使用云驱动器的 Portworx 部署。 |
不支持 Portworx 试验性 InitializerConfiguration 功能。 |
Red Hat OpenShift on IBM Cloud 不支持 Portworx 试验性 InitializerConfiguration 许可控制器。 |
专用集群 | 要在没有 VRF 或无法访问私有云服务端点 (CSE) 的集群中安装 Portworx,必须在缺省安全组中创建规则,以允许以下 IP 地址的入站和出站流量: 166.9.24.81 ,166.9.22.100 和 166.9.20.178 。 有关更多信息,请参阅更新缺省安全组。 |
Portworx 备份 | Satellite 集群不支持 Portworx 备份。 |
Portworx 生命周期概述
- 创建 多专区集群。
- 基础结构提供程序: 对于 Satellite 集群,请确保将块存储卷添加到主机,然后再将其连接到您的位置。 如果使用经典基础架构,那么必须为工作程序节点选择裸机类型模板。 对于经典集群,虚拟机只有 1000 Mbps 的网络速度,这不足以使用 Portworx运行生产工作负载。 而是在裸机机器上配置 Portworx 以获取最佳性能。
- 工作程序节点类型模板: 选择 SDS 或裸机类型模板。 如果要使用虚拟机,请使用具有 8 vCPU 和 8 GB 或更多内存的工作程序节点。
- 最小工作程序数: 跨三个专区的每个专区有两个工作程序节点,至少共有六个工作程序节点。
- 仅限 VPC 和非 SDS 经典工作程序节点: 创建原始,未格式化和已卸载的块存储器。
- 对于生产工作负载,请为 Portworx 元数据键值存储创建 外部 Databases for etcd 实例。
- 可选 设置加密。
- 安装 Portworx。
- 在集群中维护 Portworx 部署的生命周期。
- 更新 VPC 集群中的工作程序节点时,必须执行其他步骤以重新连接 Portworx 卷。 您可以使用 API 或 CLI 来连接存储卷。
- 要除去 Portworx 卷,存储节点或整个 Portworx 集群,请参阅 Portworx 清除。
创建私钥以存储 KMS 凭证
开始之前: 设置加密
- 将先前部分中检索到的凭证编码为 base64,并记下所有 base64 编码的值。 对每个参数重复此命令,以检索 Base64 编码值。
echo -n "<value>" | base64
- 在群集中创建一个名为
portworx
的项目。oc create ns portworx
- 在群集的
portworx
项目中创建名为px-ibm
的 Kubernetes 秘密,用于存储 IBM Key Protect 信息。-
使用以下内容为 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 编码的密钥管理公共端点。
-
在集群的
portworx
项目中创建私钥。oc apply -f secret.yaml
-
验证私钥是否已成功创建。
oc get secrets -n portworx
-
- 如果是在安装 Portworx 之前设置的加密,那么现在可以在集群中安装 Portworx。 要在安装 Portworx 后将加密添加到群集,请更新 Portworx DaemonSet,将
"-secret_type"
和"ibm-kp"
作为附加选项添加到 Portworx 容器定义中。-
更新 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
文件,以反映该更改。 -
列出
kube-system
项目中的 Portworx pod。oc get pods -n kube-system | grep portworx
-
登录到其中一个 Portworx pod。
oc exec -it <pod_name> -it -n kube-system
-
导航到
pwx
目录。cd etc/pwx
-
查看
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" }
-
退出 pod。
-
请查看如何加密集群中的私钥,包括在其中存储 Portworx 存储集群的 Key Protect CRK 的私钥。