当前位置: 首页 > 知识库问答 >
问题:

Jenkins无法创建kubernetes POD

姬英耀
2023-03-14

我正在运行 jenkins 作业来构建我们的 maven 应用程序并部署到 kubernetes 集群中。为此,我创建了 Pod 容器模板来部署我的模块。

当我运行构建我的jenkins作业时,我的构建失败,出现以下错误,

Still waiting to schedule task
‘Jenkins’ doesn’t have label ‘Angular_71-bt2f0’

与此同时,当我检查kubernetes主服务器时,我可以看到pods正在尝试调度,并且在几秒钟后返回到终止状态。

root@poc:/var/run# kubectl get pods
NAME                           READY   STATUS              RESTARTS   AGE
angular-71-bt2f0-ns772-4rmrq   0/3     ContainerCreating   0          1s

root@poc:/var/run# kubectl get pods
NAME                           READY   STATUS        RESTARTS   AGE
angular-71-bt2f0-ns772-4rmrq   2/3     Terminating   0          28s
angular-71-bt2f0-ns772-mcv9z   2/3     Error         0          8s

管道脚本

def label = "worker-${UUID.randomUUID().toString()}"

podTemplate(containers: [
    containerTemplate(name: 'maven', image: 'maven:3.3.9-jdk-8-alpine', ttyEnabled: true, command: 'cat'),
    containerTemplate(name: 'golang', image: 'golang:1.8.0', ttyEnabled: true, command: 'cat')
  ]) {

    node(POD_LABEL) {
        stage('Get a Maven project') {
            git 'https://github.com/jenkinsci/kubernetes-plugin.git'
            container('maven') {
                stage('Build a Maven project') {
                    sh 'mvn -B clean install'
                }
            }
        }
    }
  }

请在下面找到主机配置

root@poc:~# kubectl get svc
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.96.0.1     <none>        443/TCP          2d

root@poc:~# kubectl get nodes
NAME          STATUS    ROLES    AGE    VERSION
poc-worker2   Ready    worker   6m3s   v1.17.0
poc.com       Ready    master   2d     v1.17.0

root@poc:~# kubectl get svc
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.96.0.1     <none>        443/TCP          2d

root@poc:~# kubectl cluster-info
Kubernetes master is running at https://10.0.0.4:6443
KubeDNS is running at https://10.0.0.4:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

kubectl错误日志

kubectl logs angular-71-bt2f0-ns772-4rmrq 

error: a container name must be specified for pod angular-77-l32fr-sfxqk-qhdgf, choose one of: [maven golang jnlp]
Below is the kubectl logs while running jenkins job

root@poc:~# kubectl logs angular103f578nkcrnfx69fk c maven
Error from server (NotFound): pods "angular103f578nkcrnfx69fk" not found

root@poc:~# kubectl logs angular103f578nkcrnfx69fk c golang
Error from server (NotFound): pods "angular103f578nkcrnfx69fk" not found

root@poc:~# kubectl logs angular103f578nkcrnfx69fk c jnlp
Error from server (NotFound): pods "angular103f578nkcrnfx69fk" not found

你能请有人帮我解决这个问题吗,我不确定我在这里做错了哪里。

共有2个答案

上官鸿祯
2023-03-14

也许你缺少一些??

由于下面的容器模板是真正的管道任务,您的jenkins从属代理(JNLP)容器在哪里?

...
    containerTemplate(name: 'maven', image: 'maven:3.3.9-jdk-8-alpine', ttyEnabled: true, command: 'cat'),
    containerTemplate(name: 'golang', image: 'golang:1.8.0', ttyEnabled: true, command: 'cat')
...
``
孟祯
2023-03-14

因为,< code > ku bectl-n Jenkins-namespace get services 显示:

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE
cicd-jenkins         ClusterIP   172.20.120.227   <none>        8080/TCP    128d
cicd-jenkins-agent   ClusterIP   172.20.105.189   <none>        50000/TCP   128d

你得去Jenkins

https://youtu.be/MkzCVvlpiaM 的学分

如果您使用的是Jenkins Configuration as Code(JCasC)插件,则可以通过jenkinsUrljenkinsTunnel键进行配置:

jenkins:
  clouds:
  - kubernetes:
      name: cluster
      serverUrl: https://kubernetes.default
      # ....
      jenkinsUrl: http://cicd-jenkins:8080/
      jenkinsTunnel:  cicd-jenkins-agent:50000
      # ....
 类似资料:
  • 我为应用程序创建了以下测试: Jenkins不能执行我的测试有什么问题?

  • 问题内容: 我目前正在尝试在构建服务器(Windows Server R2)上创建Jenkins CI作业,事实证明,这需要进行更多工作才能安装Visual Studio。为此,我尝试使用Visual Studio项目中的.csproj文件构建Web包。这是我在詹金斯(Jenkins)中的MSBuild操作设置的外观: 运行构建时发生的错误是这样的: C:\ Program Files(x86)\

  • 我正试图在Jenkins管道中创建新文件,但出现了错误。错误:java。io。FileNotFoundException:/var/lib/jenkins/workspace/Pipeline-Groovy/test。txt(无此类文件或目录) 但当我在没有管道的情况下执行以下命令时,它会创建新文件 如果我在管道中使用相同的代码,则会出现上述错误

  • 我的代码更长,但我没有复制所有的代码,我看到程序停在这里 对不起我的英语。

  • 问题内容: 我正在使用node.js,并将音频流式传输到我的node.js服务器。现在,我在构建音频Blob的过程中注意到: 我在新的Blob处收到ReferenceError。似乎不支持Blob。如何创建要使用node.js fs模块保存的Blob。 谢谢你们! 问题答案: 解决此问题的方法是创建一个可以在数组缓冲区和节点缓冲区之间转换的函数。 将二进制NodeJS缓冲区转换为JavaScrip

  • 我正在尝试基于此示例编写自己的代码。 我使用的是Spring Boot,所有依赖项都来自https://start.spring.io/ 这是我的知识库: 我的控制器的一部分: 我的Spring Boot: 我收到此错误: 我做错了什么?如果有必要,我可以发布更多类似实体的代码 我正在使用IntelliJ IDEA。