IBM Cloud Pak® for Data 4.6 版本将于 2025 年 7 月 31 日结束支持(EOS)。 欲了解更多信息,请参阅 IBM Cloud Pak for Data 版本 4.X 的停止服务公告。
在 IBM Cloud Pak for Data 4.6 版本支持结束之前,升级到 IBM Software Hub 5.1 版本。 更多信息,请参阅 IBM Software Hub 版本 5.1 文档中的升级 IBM Software Hub。
为定制映像创建新的基本软件规范
创建,注册和上载定制映像后,必须创建定制软件规范和运行时定义文件。必须执行此操作才能使用您在定制 Watson Machine Learning 映像中指定的库和包。
遵循以下步骤以创建软件规范和运行时定义文件。 在示例步骤中,使用 "卷服务" 将文件上载到指定卷中的必需路径。
注:
此处提供的一些脚本编制命令使用 jq(也称为 JSON Processor ) 开放式源代码工具,以帮助在 shell 终端中格式化 JSON 文件。
获取必需的平台访问令牌。 有关详细信息,请参阅 认证。
针对
cc-home-pvc创建卷实例。 名称空间是安装时使用的 Watson Machine Learning 项目名称。WML_NAMESPACE=$(oc get wmlbase wml-cr -o=jsonpath='{.metadata.namespace}') echo $WML_NAMESPACETOKEN=<platform access token> VSNAME=CCHome NAMESPACE=<namespace> curl -k -X POST \ $CPDHOST/zen-data/v3/service_instances \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d "{ \"addon_type\": \"volumes\", \ \"addon_version\": \"-\", \ \"create_arguments\": { \ \"metadata\": { \"existing_pvc_name\": \"cc-home-pvc\" \ } \ }, \ \"namespace\": \"$NAMESPACE\", \ \"display_name\": \"$VSNAME\" \ }"检查新卷实例是否可用。
curl -k \ $CPDHOST/zen-data/v3/service_instances \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' | jq '.service_instances[] | .display_name,.id,.metadata.existing_pvc_name'上载定制软件规范
重要说明:
- 将
entity.software_specification.built_in设置为false。 - 将
entity.software_specification.type设置为base。 - 将
metadata.name设置为软件规范名称。 - 您可以在
entity.software_specification.software_configuration.included_packages下包含额外的软件包。 但是,此数组是参考数组; 不会执行任何验证。 - 将
entity.software_specification.software_configuration.platform.name设置为所需的平台。 受支持的平台名称为spss和python。 - 将
entity.software_specification.software_configuration.platform.version设置为映像的正确版本。 受支持的值为: 对于 SPSS,为18.2; 对于 Python,为3.9。
创建元数据:
SW_SPEC_NAME='demo-spec-1_py39' DISPLAY_NAME='test custom image' SW_SPEC_JSON=${SW_SPEC_NAME}.json PATH_SW_SPEC_JSON=`pwd`"/"$SW_SPEC_JSON echo $PATH_SW_SPEC_JSON上载规范:
echo '{ "metadata": { "name": "'"$SW_SPEC_NAME"'", "description": "Test" }, "entity": { "software_specification": { "type": "base", "built_in": false, "package_extensions": [], "display_name": "'"$DISPLAY_NAME"'", "software_configuration": { "included_packages": [], "platform": { "name": "python", "version": "3.9" } } } } }' > $SW_SPEC_JSONcat $SW_SPEC_JSON返回:
{ "metadata": { "name": "demo-spec-1_py39", "description": "Test" }, "entity": { "software_specification": { "type": "base", "built_in": false, "package_extensions": [], "display_name": "test custom image", "software_configuration": { "included_packages": [ ], "platform": { "name": "python", "version": "3.9" } } } } }- 将
上载新软件规范
curl -k -X PUT \ $CPDHOST/zen-volumes/$NAMESPACE::$VSNAME/v1/volumes/files/%2F_global_%2Fconfig%2Fenvironments%2Fsoftware-specifications%2F$SW_SPEC_JSON \ -H "Authorization: Bearer $TOKEN" \ -H 'content-type: multipart/form-data' \ -F upFile=@"$PATH_SW_SPEC_JSON"返回:
{"_messageCode_":"Success","message":"Successfully uploaded file and created the necessary directory structure"}检查以确认上载的软件规范文件:
echo "Uploaded Custom Software Spec file: $SW_SPEC_JSON"返回:
Uploaded Custom Software Spec file: demo-spec-1_py39.json确认软件规范在卷上可用
curl -k -X GET \ $CPDHOST/zen-volumes/$NAMESPACE::$VSNAME/v1/volumes/files/%2F_global_%2Fconfig%2Fenvironments%2Fsoftware-specifications%2F$SW_SPEC_JSON \ -H "Authorization: Bearer $TOKEN"重新启动卷。
curl -k -X DELETE \ $CPDHOST/zen-data/v1/volumes/volume_services/$NAMESPACE::$VSNAME \ -H "Authorization: Bearer $TOKEN"curl -k -X POST \ $CPDHOST/zen-data/v1/volumes/volume_services/$NAMESPACE::$VSNAME \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ -d '{}'确认软件规范可从 REST 端点访问
列出可用的软件规范。
curl -k -X GET \ $CPDHOST/v2/software_specifications?name=$SW_SPEC_NAME \ -H "Authorization: Bearer $TOKEN" | jq "."返回:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 727 100 727 0 0 580 0 0:00:01 0:00:01 --:--:-- 580 { "total_results": 1, "resources": [ { "metadata": { "created_at": "2020-10-15T14:36:33.536Z", "updated_at": "2020-10-15T14:36:33.536Z", "name": "demo-spec-1_py39", "description": "Test", "asset_type": "software_specification", "asset_id": "51301be2-ea21-5848-bb86-bdd86c4b893d", "href": "/v2/software_specifications/51301be2-ea21-5848-bb86-bdd86c4b893d" }, "entity": { "software_specification": { "type": "base", "built_in": false, "package_extensions": [], "display_name": "test custom image", "software_configuration": { "included_packages": [], "platform": { "name": "python", "version": "3.9" } } } } } ] }
故障诊断
如果以下情况,请查看这些故障诊断提示:
- 您无法查看与定制运行时定义关联的新创建的定制软件规范
- 定制软件规范定义文件在卷中似乎不可用
软件规范文件由 cron 作业选取。 要检查 cron 作业是否正在运行,请输入以下命令:
oc get cronjobs env-spec-sync-job
命令输出应该类似于:
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
env-spec-sync-job */5 * * * * False 0 116s 13d
如果收到以下消息:
Error from server (NotFound): cronjobs.batch "env-spec-sync-job" not found
切换到安装了 Cloud Pak for Data 的项目 (例如: oc project cpd35 ) ,然后重试。
如果命令输出 Events 部分包含类似如下的消息:
Warning FailedNeedsStart 166m (x2600 over 10h) cronjob-controller Cannot determine if job needs to be started: too many missed start time (> 100). Set or decrease .spec.startingDeadlineSeconds or check clock skew
输入以下命令:
oc patch cronjob env-spec-sync-job -p '{"spec":{"startingDeadlineSeconds": 180}}'
大约 5 分钟后,软件规范应在 API 中可视。 Events 部分应包含类似于以下内容的信息:
Normal SuccessfulCreate 36m cronjob-controller Created job env-spec-sync-job-1614762300
如果新卷实例不可用:
停止卷的文件服务器:
curl -k -X DELETE \ $CPDHOST/zen-data/v1/volumes/volume_services/$NAMESPACE::$VSNAME \ -H "Authorization: Bearer $TOKEN"重新启动文件服务器:
curl -k -X POST \ $CPDHOST/zen-data/v1/volumes/volume_services/$NAMESPACE::$VSNAME \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ -d '{}'
后续步骤
父主题: 定制部署运行时映像