IBM Cloud Docs
管道专用工作程序故障诊断

管道专用工作程序故障诊断

使用管道专用工作程序的一般问题可能包括 Kubernetes 集群和 kubectl 版本问题。 在许多情况下,只需执行几个简单的步骤即可解决这些问题。

为什么我的 Delivery Pipeline Private Worker 处于不活动状态?

工作程序池中的专用工作程序可能处于下列其中一个状态:

  • 活动(对于当前受支持版本的专用工作程序)
  • 不活动(对于不受支持版本的专用工作程序)
  • 不活动和未注册

您的专用工作程序处于不活动状态。 不活动的专用工作程序无法处理入局运行请求。 无法完成使用不活动专用工作程序的管道阶段。

代理人可以不活动

  1. 如果您的 Kubernetes 集群出现问题,且工作人员无法与区域控制计划服务部门通信
  2. 如果运行的私有程序版本不再受支持
  3. 如果群集上的代理已取消注册

如果代理在运行后报告“未注册”,您可以尝试运行以下命令来解决注册问题

kubectl patch worke${AGENT_NAME} --subresource=status --type=merge -p '{"status": {"registrationStatus": {"state": "Succeeded"}}}'

如果上述命令失败,或者 Delivery Pipeline 私有 Worker 已注册但仍处于非活动状态,则可以重新安装私有 Worker。 再次在 Kubernetes 集群上注册 Delivery Pipeline 私有 Worker。

我尝试在 Kubernetes 中安装对 Delivery Pipeline Private Worker 的支持。 为什么安装会失败?

如果在客户机上运行的 kubectl 版本存在问题,那么 Delivery Pipeline Private Worker 安装会失败。

尝试在 Kubernetes 中为 Private Worker 安装支持后,将显示一条错误消息,指示存在模式不匹配,并且安装失败。

SchemaError(io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup): invalid object doesn't have additional properties

在 Kubernetes 服务器和 Kubernetes 客户机上运行的 kubectl 版本之间存在不匹配的情况。

在客户机上安装最新版本的 kubectl。

为什么无法从某些容器注册表中拉取 tekton-releases 或 pipeline-private-worker 的映像?

集群安全性会阻止您拉取这些映像。

尝试安装专用工作程序框架时,将显示错误消息。

Error from server (InternalError): error when creating "https://private-worker-service.us-south.devops.cloud.ibm.com/install": Internal error occurred: admission webhook "trust.hooks.securityenforcement.admission.cloud.ibm.com" denied the request:
Deny "gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/controller@sha256:80e040a58ce6c4d58ae893eb934777bce013ef8be079967dc3db783d76fa5aaa", no matching repositories in ClusterImagePolicy and no ImagePolicies in the "tekton-pipelines" namespace
Error from server (InternalError): error when creating "https://private-worker-service.us-south.devops.cloud.ibm.com/install": Internal error occurred: admission webhook "trust.hooks.securityenforcement.admission.cloud.ibm.com" denied the request:
Deny "gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/webhook@sha256:da75fbdaeb800813d85b99f7f54b665e8d0edbb2c5a7ffc6a99d66aede0291a3", no matching repositories in ClusterImagePolicy and no ImagePolicies in the "tekton-pipelines" namespace

专用工作程序安装程序从 icr.io 拉取映像。 某些平台(如 IBM Cloud Private)不允许在缺省映像策略中使用这些容器注册表。

确保群集中的图像提取策略支持从 icr.io 提取图像。 例如,如果要在 IBM Cloud Private 上安装专用工作程序框架,请使用 IBM Cloud Private Web 控制台来添加这些策略。 有关使用 IBM Cloud Private Web 控制台管理映像安全强制执行的更多信息,请参阅 执行容器映像安全。 有关使用 Porteris 管理图像安全执行的更多信息,请参阅 Portieris Policies

下面的示例显示了如何使用 IBM Cloud CLI 创建 ClusterImagePolicy:

如果使用 Portieris 作为许可控制器,那么可能需要将示例中的 apiVersion 更改为 portieris.cloud.ibm.com/v1

cat <<EOF | kubectl apply -f -
apiVersion: securityenforcement.admission.cloud.ibm.com/v1beta1
kind: ClusterImagePolicy
metadata:
  name: iks-private-registries
spec:
  repositories:
  - name: "*.icr.io/*"
    policy:
EOF

为何未列出 Delivery Pipeline Private Worker?

我的专用工作程序代理程序列示在状态为 inactive 的集群上,但它未列示在专用工作程序集成“概述”页面上。

用于安装工作程序代理程序的 API 密钥可能不包含在专用工作程序集成所使用的 ServiceID 中。

从集群中除去配置错误的工作程序代理程序,然后再次安装该工作程序代理程序。 确保安装命令中包含的 API 密钥也存在于同一安装命令中使用的 ServiceId 中。 使用专用工作程序集成页面和 Identity and Access Management (IAM) 页面上提供的 ServiceId 链接来生成有效的 API 密钥。