0

我正在使用 Spring Cloud 数据流进行 Spring 批处理(带有远程分区),并使用 Spring Cloud 任务包装,部署在 kubernetes 中。我还为此创建了一个服务帐户。当我在 SCDF UI 的任务选项卡上使用启动选项时,批处理运行良好。但是当我在 SCDF UI 中尝试调度选项时,它似乎没有考虑配置的服务帐户名称,它给出了以下错误

io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://<IP>/api/v1/namespaces/test/pods/batchsampleappworker-aeghj644g. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. pods "batchsampleappworker-j3ljqq3de9" is forbidden: User "system:serviceaccount:test:default" cannot get resource "pods" in API group "" in the namespace "test".

以下是 SCDF 服务器配置中提供的示例配置

data:
  application.yaml: |-
    spring:
      cloud:
        dataflow:
          task:
            platform:
              kubernetes:
                accounts:
                  default:
                    deploymentServiceAccountName: myserviceaccountname

请阐明这个问题并帮助我解决这个问题

4

1 回答 1

1

在探索问题解决方案的过程中,我遇到了这个 github 页面,建议在其中添加

env:
- name: SPRING_CLOUD_SCHEDULER_KUBERNETES_TASK_SERVICE_ACCOUNT_NAME
  value: myserviceaccountname

部署 SCDF 服务器,或者,

deployer.kubernetes.taskServiceAccountName=myserviceaccountname

在创建时添加到个人计划。不幸的是,他们都没有为我工作,但触发我尝试使用下面创建的每个时间表,它对我有用。

scheduler.kubernetes.taskServiceAccountName=myserviceaccountname

如果有人帮助我解释为什么第一个选项 - 更新部署不起作用,那就太好了?

于 2021-08-27T10:29:45.193 回答