Jenkins Kubernetes 插件无法配置 jnlp-slave pod

2023-11-21

我在 Ubuntu 17.04 VM 上运行 Kubernetes 1.10.0、Docker 17.03.2-ce 和 Jenkins 2.107.1,并在 Jenkins 中安装了 Kubernetes Plugin 1.5。我有另外 4 个 Ubuntu 虚拟机成功设置为集群中的节点,包括未受污染的主虚拟机。我可以直接部署基于 nginx 的服务,并且可以不受限制地访问仪表板。所以,Kubernetes 本身看起来就足够幸福了。

在提到它之前,我要说的是,我们没有短期计划在 Kubernetes 本身内部运行 Jenkins master。所以,我更愿意让这个策略发挥作用。

Kubernetes 云的插件配置如下:

“名称”:kubernetes

“Kubernetes 网址”:https://172.20.43.30:6443

from

# kubectl describe pods/kube-apiserver-jenkins-kube-master --namespace=kube-system | grep Liveness
Liveness:     http-get https://172.20.43.30:6443/healthz delay=15s timeout=15s period=10s #success=1 #failure=8

接受不安全的证书后,浏览器https://172.20.43.30:6443/将会呈现

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

  },
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path \"/\"",
  "reason": "Forbidden",
  "details": {

  },
  "code": 403
}

“Kubernetes 服务器证书密钥”获取自

# kubectl get pods/kube-apiserver-jenkins-kube-master -o yaml --namespace=kube-system | grep tls
    - --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
    - --tls-cert-file=/etc/kubernetes/pki/apiserver.crt

# cat /etc/kubernetes/pki/apiserver.crt
-----BEGIN CERTIFICATE-----
MIIDZ******
*******************
****PP5wigl
-----END CERTIFICATE-----

“Kubernetes 命名空间”:jenkins-slaves

jenkins-slaves 命名空间设置如下...

创建 jenkins-namespace.yaml 并添加以下内容:

apiVersion: v1
kind: Namespace
metadata:
  name: jenkins-slaves
  labels:
    name: jenkins-slaves
spec:
  finalizers:
  - kubernetes

then

# kubectl create -f jenkins-namespace.yaml
namespace "jenkins-slaves" created

# kubectl -n jenkins-slaves create sa jenkins
serviceaccount "jenkins" created

# kubectl create role jenkins --verb=get,list,watch,create,patch,delete --resource=pods
role.rbac.authorization.k8s.io "jenkins" created

# kubectl create rolebinding jenkins --role=jenkins --serviceaccount=jenkins-slaves:jenkins
rolebinding.rbac.authorization.k8s.io "jenkins" created

# kubectl create clusterrolebinding jenkins --clusterrole cluster-admin --serviceaccount=jenkins-slaves:jenkins
clusterrolebinding.rbac.authorization.k8s.io "jenkins" created

使用从中吐出的令牌添加了“秘密文本”的 Jenkins 凭证

# kubectl get -n jenkins-slaves sa/jenkins --template='{{range .secrets}}{{ .name }} {{end}}' | xargs -n 1 kubectl -n jenkins-slaves get secret --template='{{ if .data.token }}{{ .data.token }}{{end}}' | head -n 1 | base64 -d -

“测试连接”显示“连接测试成功”

应该注意的是,相同的令牌可用于登录具有完全访问权限的 Kubernetes 仪表板。

“詹金斯网址”:http://172.20.43.30:8080

“Kubernetes Pod 模板:名称”:jnlp 从属

“Kubernetes Pod 模板:命名空间”:jenkins-slaves

“Kubernetes Pod 模板:标签”:jenkins-slaves

“Kubernetes Pod Template:Usage”:仅构建标签表达式与该节点匹配的作业

“Kubernetes Pod 模板:容器模板:名称”:jnlp-slave

“Kubernetes Pod 模板:容器模板:Docker 镜像”:jenkins/jnlp-slave

“Kubernetes Pod 模板:容器模板:工作目录”:./.jenkins-agent

此时,如果我创建一个作业并将“限制此项目可以运行的位置”设置为“jenkins-slaves”的“标签表达式”,我会得到:

Label jenkins-slaves is serviced by no nodes and 1 cloud. Permissions or other restrictions provided by plugins may prevent this job from running on those nodes.

如果我尝试构建作业,它将位于构建队列中,并且“构建执行器状态”将定期显示“jnlp-slave-#####(离线)(挂起)”,然后几秒钟后消失。

系统日志说:

Apr 03, 2018 12:16:21 PM SEVERE org.csanchez.jenkins.plugins.kubernetes.KubernetesLauncher logLastLines
Error in provisioning; agent=KubernetesSlave name: jnlp-slave-t8004, template=PodTemplate{inheritFrom='', name='jnlp slave', namespace='jenkins-slaves', label='jenkins-slaves', nodeSelector='', nodeUsageMode=EXCLUSIVE, workspaceVolume=org.csanchez.jenkins.plugins.kubernetes.volumes.workspace.EmptyDirWorkspaceVolume@44dcba2d, containers=[ContainerTemplate{name='jnlp-slave', image='jenkins/jnlp-slave', workingDir='./.jenkins-agent', command='/bin/sh -c', args='cat', ttyEnabled=true, resourceRequestCpu='', resourceRequestMemory='', resourceLimitCpu='', resourceLimitMemory='', livenessProbe=org.csanchez.jenkins.plugins.kubernetes.ContainerLivenessProbe@58f0ceec}]}. Container jnlp exited with error 255. Logs: Warning: JnlpProtocol3 is disabled by default, use JNLP_PROTOCOL_OPTS to alter the behavior
Warning: SECRET is defined twice in command-line arguments and the environment variable
Warning: AGENT_NAME is defined twice in command-line arguments and the environment variable
Apr 03, 2018 4:16:16 PM hudson.remoting.jnlp.Main createEngine
INFO: Setting up agent: jnlp-slave-t8004
Apr 03, 2018 4:16:16 PM hudson.remoting.jnlp.Main$CuiListener <init>
INFO: Jenkins agent is running in headless mode.
Apr 03, 2018 4:16:16 PM hudson.remoting.Engine startEngine
INFO: Using Remoting version: 3.19
Apr 03, 2018 4:16:16 PM hudson.remoting.Engine startEngine
WARNING: No Working Directory. Using the legacy JAR Cache location: /home/jenkins/.jenkins/cache/jars
Apr 03, 2018 4:16:17 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Locating server among [http://172.20.43.30:8080/]
Apr 03, 2018 4:16:17 PM hudson.remoting.jnlp.Main$CuiListener error
SEVERE: http://172.20.43.30:8080/tcpSlaveAgentListener/ is invalid: 404 Not Found
java.io.IOException: http://172.20.43.30:8080/tcpSlaveAgentListener/ is invalid: 404 Not Found
    at org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver.resolve(JnlpAgentEndpointResolver.java:197)
    at hudson.remoting.Engine.innerRun(Engine.java:518)
    at hudson.remoting.Engine.run(Engine.java:469)
Apr 03, 2018 12:16:21 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesSlave _terminate
Terminating Kubernetes instance for agent jnlp-slave-t8004
Apr 03, 2018 12:16:21 PM WARNING io.fabric8.kubernetes.client.Config tryServiceAccount
Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
Apr 03, 2018 12:16:21 PM INFO okhttp3.internal.platform.Platform log
ALPN callback dropped: HTTP/2 is disabled. Is alpn-boot on the boot class path?
Apr 03, 2018 12:16:21 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesSlave _terminate
Terminated Kubernetes instance for agent jenkins-slaves/jnlp-slave-t8004
Apr 03, 2018 12:16:21 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesSlave _terminate
Disconnected computer jnlp-slave-t8004
Apr 03, 2018 12:16:25 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud provision
Excess workload after pending Kubernetes agents: 1
Apr 03, 2018 12:16:25 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud provision
Template: Kubernetes Pod Template
Apr 03, 2018 12:16:25 PM WARNING io.fabric8.kubernetes.client.Config tryServiceAccount
Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
Apr 03, 2018 12:16:25 PM INFO okhttp3.internal.platform.Platform log
ALPN callback dropped: HTTP/2 is disabled. Is alpn-boot on the boot class path?
Apr 03, 2018 12:16:25 PM INFO hudson.slaves.NodeProvisioner$StandardStrategyImpl apply
Started provisioning Kubernetes Pod Template from kubernetes with 1 executors. Remaining excess workload: 0
Apr 03, 2018 12:16:35 PM WARNING io.fabric8.kubernetes.client.Config tryServiceAccount
Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring.
Apr 03, 2018 12:16:35 PM INFO hudson.slaves.NodeProvisioner$2 run
Kubernetes Pod Template provisioning successfully completed. We have now 2 computer(s)
Apr 03, 2018 12:16:35 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud provision
Excess workload after pending Kubernetes agents: 0
Apr 03, 2018 12:16:35 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud provision
Template: Kubernetes Pod Template
Apr 03, 2018 12:16:35 PM INFO okhttp3.internal.platform.Platform log
ALPN callback dropped: HTTP/2 is disabled. Is alpn-boot on the boot class path?
Apr 03, 2018 12:16:35 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesLauncher launch
Created Pod: jnlp-slave-bnz94 in namespace jenkins-slaves
Apr 03, 2018 12:16:35 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesLauncher launch

-史蒂夫·马林

佛罗里达州奥兰多


我去了http://172.20.43.30:8080/configureSecurity/并将“代理:JNLP 代理的 TCP 端口”设置为“随机”

然后我得到了一个“jnlp-slave-ttm5v(暂停)”,它保留在“Build Executor Status”中

日志说:

Container is waiting jnlp-slave-ttm5v [jnlp-slave]: 
ContainerStateWaiting(message=Error response from daemon: the working directory './.jenkins-agent' is invalid, it needs to be an absolute path, reason=CreateContainerError, additionalProperties={})

将“工作目录”设置为“/home/jenkins”后,我看到实际上在 k8s 上创建了一个 pod:

# kubectl get pods --namespace=jenkins-slaves
NAME               READY     STATUS    RESTARTS   AGE
jnlp-slave-1ds27   2/2       Running   0          42s

我的工作成功运行了!

Started by user Buildguy
Agent jnlp-slave-1ds27 is provisioned from template Kubernetes Pod Template
Agent specification [Kubernetes Pod Template] (jenkins-slaves): 
* [jnlp-slave] jenkins/jnlp-slave(resourceRequestCpu: , resourceRequestMemory: , resourceLimitCpu: , resourceLimitMemory: )

Building remotely on jnlp-slave-1ds27 (jenkins-slaves) in workspace 
/home/jenkins/workspace/maven-parent-poms
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins Kubernetes 插件无法配置 jnlp-slave pod 的相关文章

  • 如何对 Xcode 进行 docker 化

    出于 CI 的目的 我需要建立一个能够构建 iOS 应用程序的构建从属集群 目前 我依赖于一台 MacMini 目标是在将来部署更多台 并且我想在其上虚拟化多个从属设备 其中一些虚拟从站将构建 iOS 应用程序 其他虚拟从站将是用于各种目的
  • Kubernetes,无法访问其他节点服务

    我正在 3 个带有 CentOS 7 的 VirtualBox 虚拟机 1 个 master 和 2 个 minions 中使用 Kubernetes 不幸的是安装手册说的是这样的every service will be accessib
  • Docker - 如何在 postgres 容器中运行 psql 命令?

    我想在 postgres 映像中使用 psql 以便对数据库运行一些查询 但不幸的是 当我附加到 postgres 容器时 我收到错误 psql 命令未找到 对我来说 如何在容器中运行 postgresql 查询或命令是一个谜 如何在pos
  • Google Cloud Kubernetes 访问私有 Docker Hub 托管映像

    是否可以将私有镜像从 Docker Hub 拉取到 Google Cloud Kubernetes 集群 是否建议这样做 或者我是否需要将我的私有映像也推送到 Google Cloud 我阅读了文档 但没有发现任何内容可以清楚地解释这一点
  • 无法在 Vagrant 上运行的 CentOS 7 上安装 Docker

    使用 Vagrant 文件的全新实例 VAGRANTFILE API VERSION 2 Vagrant configure VAGRANTFILE API VERSION do config config vm box chef cent
  • 在容器组的“imageRegistryCredentials”中找到重复的映像注册表“index.docker.io”

    PS C Source VelocityAzurev0 10 0 credentialagent docker compose gt docker compose up Running 0 1 Group credentialagent d
  • 在docker中使用MySQL数据库设置aspnetcore

    我正在尝试设置一个 docker compose 文件 其中包含 asp net core mysql 数据库和 phpmyadmin 的容器 设置我的 mysql 服务器没有问题 我可以使用 phpmyadmin 访问它 我的 asp n
  • 如何在 docker-compose 文件中引用 traefik v2 的自签名 SSL 证书?

    在 docker compose YAML 文件中引用 Tr fik v2 自签名证书的文档非常有限 您可以按照以下方法进行操作 让我们加密 https en wikipedia org wiki Let 27s Encrypt https
  • 无法将 docker 映像推送到本地 OpenShift Origin 注册表

    目标是能够在我的笔记本电脑上获取 Docker 映像并将其推送到 OpenShift Origin 映像注册表 由oc cluster up 进行本地开发 目前尚不清楚我是否做错了什么 或者 Docker 或 OpenShift Origi
  • Gitlab 合并请求事件不触发 Jenkins 多分支管道

    我正在尝试在合并请求事件上使用 GitLab Webhook 触发 Jenkins 多分支管道作业 当我测试 Webhook 时 我收到以下消息 Hook 执行成功但返回 HTTP 409 当我设置不同的 GitLab Webhook 例如
  • Docker Hub API v2 令牌身份验证问题

    目前 我正在开发一个非常轻量级版本的 Docker 容器编排器 并且我必须能够从公共 Docker Hub 注册表获取图像摘要 我想使用 Docker Registry API v2 来实现此目的 我正在尝试使用以下 API 调用获取授权令
  • Kubernetes 的调度器是如何工作的?

    Kubernetes 的调度器是如何工作的 我的意思是说Kubernetes的调度器看起来很简单 我最初的想法是这个调度器只是一个简单的准入控制系统 而不是真正的调度器 是这样正确的吗 我找到了一个简短的描述 但信息并不丰富 kuberne
  • Python jenkinsapi - 禁用/启用不工作的作业

    我正在尝试使用 禁用作业 詹金萨皮 https jenkinsapi readthedocs io en latest using jenkinsapi html example 3 disable enable a jenkins job
  • TeamCity 将功能分支推送到主分支

    有没有办法将成功构建的功能分支推送到另一个分支 我想要这样的东西 Git 存储库 Gitorious GitHub 等 分支机构 master 当前项目的代码 质量保证 代码等待 QA 的分支 功能分支 许多远程分支 开发人员可以在其中开发
  • Ingress 未在 GKE 和 GCE 上获取地址

    创建入口时 不会生成地址 并且从 GKE 仪表板查看时 它始终位于Creating ingress地位 描述入口没有显示任何事件 我在 GKE 仪表板上看不到任何线索 有没有人有类似的问题或关于如何调试的任何建议 我的部署 yaml api
  • 在没有 noexec 选项的情况下将卷挂载到 docker 容器中

    据我所知 docker 也包括 docker compose 使用 noexec 选项将卷安装到容器中 因此我无法从安装的目录中启动任何程序 services app build context dockerfile Dockerfile
  • 经常提交 docker 容器是一个好习惯吗?

    我在里面使用WebSphere Liberty 由于 WebSphere Liberty 需要频繁的 xml 编辑 这对于 Dockerfile 命令来说是不可能的 我必须不时地对容器进行 docker commit 以便其他人可以使用我的
  • 哪个持续集成服务器能够对作业进行排队?

    使用案例 CI 服务器轮询一些 VSC 存储库并为每个修订版运行测试套件 如果提交了两个或多个修订 即使在相对较小的时间间隔内 我也希望 CI 服务器将每个修订放入队列中 为每个修订运行测试 存储结果 并且不再为这些提交运行测试 而且我不希
  • 自动生成/删除詹金斯工作

    我正在寻找一种自动创建一组詹金斯作业的方法 通常在创建新的 git 分支之后 我已经为maven尝试过这个插件 http evgeny goldin com wiki Maven jenkins plugin http evgeny gol
  • 带有 npm 启动脚本的 Nodejs 应用程序

    我对nodejs很陌生 在我的docker化环境中 我想为nodejs应用程序提供appdynamics支持 这要求每个应用程序都要求将以下内容作为其应用程序的第一行 require appdynamics profile controll

随机推荐

  • 在对话框中选择微调器时,Android espresso 中出现 RunTimeException

    我有一个活动 其中打开了一些对话框 该对话框上有一个微调器 我想在此微调器中选择一个特定值 但出现以下异常 java lang RuntimeException Waited for the root of the view hierarc
  • ajax调用JQUERY中的变量数据

    我试图在 jquery 的 AJAX 调用中使用变量 但它不起作用 move 变量包含不同的值 请检查以下代码 var move next ajax type POST url somephp php data move 1 建议在数据中使
  • Slack 一次将多条消息发布到一个频道

    我需要将多个机器人回复 动态确定的响应 发布到同一频道 最明显的方法似乎是使用此 API 方法连续为每条消息执行 HTTP POST https api slack com methods chat postMessage 有没有办法将消息
  • 在 gnuplot 中绘制具有多个记录的一维二进制数组 (uint8)

    我知道这个问题类似于Gnuplot 如何从二进制格式绘制多个时间序列 但是我已经设置了一个略有不同的示例 所以希望可以发布 自我回答如下 我正在生成这样的二进制数据 见下文genbindata plPerl 脚本 perl genbinda
  • 使用 XLSX 导出 html 表(表到工作表)时隐藏/删除列

    我希望能够以 Excel 文件格式导出我的 DOM 表格 我的函数 Typescript 3 5 Angular 8 ExportTOExcel const ws XLSX WorkSheet XLSX utils table to she
  • Bash - 正确清除最后的输出

    我正在尝试创建一个可更新的进度状态 为了做到这一点 我需要能够完全清除最后的输出 以便我可以更新它 回车可以工作 但是当输出长于终端宽度并回绕时 将无法清除最后一个输出 所以我使用 tput n 0 while n ne 100 do n
  • 在 MySQL 中存储 SHA1 哈希值

    当我想将 SHA1 哈希结果存储在 MySQL 数据库中时 我有一个简单的问题 应该多长时间VARCHAR我存储哈希结果的字段是什么 我会用VARCHAR适用于可变长度数据 但不适用于固定长度数据 因为 SHA 1 值是always160位
  • 如何延迟一个转换而不延迟另一个转换?

    我设置了两个转换 circle 我只希望不透明度有延迟 但我只能在两个过渡都进行的地方进行延迟 我的全部目标是在圆圈处于中间旋转时 即正好 90 度 改变不透明度 但我会自己计算时间 我只想知道如何仅延迟一次转换 circle backgr
  • 图像在模拟器中显示,但在 iPhone 设备上不显示

    因此 当我从设备运行应用程序时 图片就会显示出来 一切都运行良好 然而 当我转到该设备时 我运行的 38 张图片中大约有 10 张没有显示 我正在从 sqlite 数据库中提取图像的名称 并且我已经检查过 名称 大小写和所有内容都是正确的
  • 在 Django 中实现“开放时间”的任何现有解决方案

    我正在为一位希望能够更改营业时间的客户制作一个网站 对于他的每一个不同的商店 Django 是否有针对此类问题的现有解决方案 你是什 么意思 看起来很简单 根据您工作日的订单进行调整 如果您愿意 可以添加验证 但人们应该足够聪明 不需要对这
  • Django 创建自定义模型字段

    我正在尝试在 Django 中创建一个自定义字段 它将采用十进制货币值 例如 1 56 并将其作为整数 例如 156 保存在数据库中以存储货币值 这就是我到目前为止所拥有的 我已经设置了固定值来测试 class CurrencyField
  • 为什么考虑_all_requests_local 因 rspec 配置而失败

    rspec rails 2 7 0 导轨 3 0 10 邮政 Rails 3 1 错误捕获对我来说无关紧要 Code class ApplicationController lt ActionController Base unless R
  • Chrome 检查元素的奇怪问题

    When I load my page one of the images is higher than it is supposed to be When I right click Inspect element anywhere on
  • DatePicker 回发后消失

    我有一个与 jquery DatePicker 关联的 asp TextBox 此输入有一个更新文字控件的 onTextChangedEvent 所有这些代码都位于 UpdatePanel 内 因此文字控件会更改 但页面不会刷新 我面临的问
  • 最大样本

    如果我想对数字进行采样来创建向量 我会这样做 set seed 123 x lt sample 1 100 200 replace TRUE sum x 1 10228 如果我想采样 20 个总和为 100 的随机数 然后采样 30 个数字
  • Erlang 节点无法看到彼此

    我是 Erlang 新手 尝试在我的笔记本电脑上设置两个节点 在一个终端中我输入 eli elimayost erlang apps gt erl sname foo setcookie secret 在第二个终端中 eli elimayo
  • 由 gcc 检查的 printf() 包装参数

    当Cprintf 它的家族是由gcc and Wall在命令行上使用时 编译器会根据正在使用的格式字符串警告错误放置的参数 例如 下面的代码会收到一条错误消息 指出格式指定了 3 个参数 但实际上您只传递了两个 printf d d d 1
  • LLDB 在启动时似乎没有读取我的 .lldbinit 文件

    我有一个带有单个别名的文件 lldbinit command alias pi print int 但是当我从 Xcode 运行我的应用程序时 别名不起作用 但是 如果我手动输入别名 则别名确实有效 lldb pi 6 error pi i
  • 在嵌套字典 python 中搜索值

    搜索一个值并获取父字典名称 键 Dictionary dict1 part1 wbxml application vnd wap wbxml rl application resource lists xml part2 wsdl appl
  • Jenkins Kubernetes 插件无法配置 jnlp-slave pod

    我在 Ubuntu 17 04 VM 上运行 Kubernetes 1 10 0 Docker 17 03 2 ce 和 Jenkins 2 107 1 并在 Jenkins 中安装了 Kubernetes Plugin 1 5 我有另外