重要说明:

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 文件。

  1. 获取必需的平台访问令牌。 有关详细信息,请参阅 认证

  2. 针对 cc-home-pvc创建卷实例。 名称空间是安装时使用的 Watson Machine Learning 项目名称。

    WML_NAMESPACE=$(oc get wmlbase wml-cr -o=jsonpath='{.metadata.namespace}')
    echo $WML_NAMESPACE
    
    TOKEN=<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\" \
        }"
    
  3. 检查新卷实例是否可用。

    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'
    
  4. 上载定制软件规范

    重要说明

    • 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 设置为所需的平台。 受支持的平台名称为 spsspython
    • 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_JSON
    
    cat $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"
            }
          }
        }
      }
    }
    
  5. 上载新软件规范

    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
    
  6. 确认软件规范在卷上可用

    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 '{}'
    
  7. 确认软件规范可从 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

如果新卷实例不可用:

  1. 停止卷的文件服务器:

    curl -k -X DELETE \
    $CPDHOST/zen-data/v1/volumes/volume_services/$NAMESPACE::$VSNAME \
    -H "Authorization: Bearer $TOKEN"
    
  2. 重新启动文件服务器:

    curl -k -X POST \
    $CPDHOST/zen-data/v1/volumes/volume_services/$NAMESPACE::$VSNAME \
    -H "Authorization: Bearer $TOKEN" \
    -H 'Content-Type: application/json' \
    -d '{}'
    

后续步骤

上载更改后的配置

父主题: 定制部署运行时映像