jenkins的slave/agent如何通过tcp端口和master建立连接
Jenkins是master-slave/agent结构,可以通过代理把任务下发到各个agent/slave上去执行
如图,首先在master上开启代理配置,指定master上开启的tcp端口,以及和slave进行通信的代理协议

然后就可以创建新的节点(node)。只有上面开启了代理配置,这里的“启动方式”才会出现“通过Java Web启动代理”的选项

在某个slave机器上,主动建立和master的连接,点击里面的“Launch”按钮就可以下载文件slave-agent.jnlp,通过txt打开,可以看到里面的各种启动信息,包括密钥。

另外一种启动方式如下:
这里的remoting-3.33.jar和上面的agent.jar都是代理的jar包,仓库源码是: https://github.com/jenkinsci/remoting
这里的test就是上面配置从节点的名字,要保持一致

java -Dorg.jenkinsci.remoting.engine.JnlpProtocol3.disabled=true -cp target/remoting-3.33.jar hudson.remoting.jnlp.Main -headless -url http://127.0.0.1:6060/ 775369839f50faddcae785239ac85ab09274afa3bc5a77b0d45a63794ea74597 test
slave-agent.jnlp的内容如下
<jnlp codebase="http://127.0.0.1:6060/computer/test/" spec="1.0+">
<information>
<title>Agent for test</title>
<vendor>Jenkins project</vendor>
<homepage href="https://jenkins-ci.org/"/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.8+"/><jar href="http://127.0.0.1:6060/jnlpJars/remoting.jar"/>
</resources>
<application-desc main-class="hudson.remoting.jnlp.Main">
<argument>6824195ad033f0c52d3235e0da0aced40578d1908a5f21be9636b91ac19f1972</argument>
<argument>test</argument>
<argument>-workDir</argument>
<argument>.jenkins/test</argument>
<argument>-internalDir</argument>
<argument>remoting</argument>
<argument>-url</argument>
<argument>http://127.0.0.1:6060/</argument>
</application-desc>
</jnlp>
常见错误
- 连接时使用的名字不一致导致:jenkins的master上配置的节点名字要和slave上连接时使用的名字一致

- 认证失败,查看密钥方法见上文

谈下jenkinde插件kubernetes-plugin的实现原理
主要是利用了上面的jnlp原理:
1、在全局配置里配置k8s信息,其中包括k8s地址,连接k8s的证书信息,k8s的命名空间namespace(创建slave/agent的地方),jenkins地址,k8s的pod节点配置模版等信息
2、监控jenkins的作业/任务Job排队情况,动态增加/减少slave/agent的数量
3、作业繁忙时,首先在Jenkins上创建从节点,拿到从节点的名字和密钥等信息
4、最后根据k8s的配置,远程调用k8s的创建pod,即slave/agent
slave/agent只是个代理,执行任务时,需要的jar包,都会从master上传输过来
Java Web Start即Java Network Launching Protocol (JNLP)
如何调试slave/agent?

jenkins的slave/agent如何通过tcp端口和master建立连接的更多相关文章
- TCP 3次握手建立连接
TCP 3次握手建立连接 1. (Client) –> [SYN] –> (Server) 假如Client和Server通讯. 当Client要和Server通信时,Client首先 ...
- TCP/IP协议的建立连接与关闭连接过程
一.建立连接(三次握手) 第一次握手:建立连接时,客户端发送SYN(seq=x)包到服务器,并进入SYN_SENT状态,等待服务器的确认.SYN:同步序列编号(Synchronize Sequence ...
- tcp 三次握手建立连接难点总结
所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包. 三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号 ...
- TCP三次握手建立连接
基本过程: ISN(初始序号)随时间变化,每一个连接具有不同的ISN,防止在网络延迟中分组被重新发送. 请求端发送SYN(同步序号 )=1,seq=ISN(32bits序号,每4ms+ ...
- Zabbix系列之五——监控TCP端口
监控端口的几个主要Keys: net.tcp.listen[port] Checks if this port is in LISTEN state. 0 - it is not, 1 - it is ...
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
参照: http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF http://hi.baidu.com/raycomer/item/94 ...
- TCP的三次握手(建立连接)和四次挥手(关闭连接)(转)
转自:(http://www.cnblogs.com/Jessy/p/3535612.html) 参照: http://course.ccniit.com/CSTD/Linux/reference/f ...
- 【转载】TCP的三次握手(建立连接)和四次挥手(关闭连接)
建立连接: 理解:窗口和滑动窗口TCP的流量控制 TCP使用窗口机制进行流量控制 什么是窗口? 连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端 接收方发送的确认信息中包 ...
- C++写Socket——TCP篇(0)建立连接及双方传输数据
满山的红叶--飘落之时-- 最近接触了点关于用C++写socket的东西,这里总结下. 这里主要是关于TCP的,TCP的特点什么的相关介绍在我另一篇博文里,所以这里直接动手吧. 我们先在windows ...
随机推荐
- 关于创建Django表单Forms继承BaseForm的问题
在创建Django表单时,因为需要验证用户输入的验证码是否正确,因此需要在session里提取当前验证码的值和POST提交过来的值进行比对,如图: form.py from django import ...
- 淘宝上的大智慧L2数据,月卡最便宜是8元钱,这个也可以获取BBD、DDX等数据!
Want:从顶牛股网上下载DDX数据. 1.下载历史DDE数据:获取最近120个交易日的DDE数据 #define SFURL_DNG_SINGLEL"http://www.dingniug ...
- trigger 和 triggerHandler(),自定义事件
trigger 和 triggerHandler(),自定义事件 语法: $(selector).trigger(event,[param1,param2,...]) 1,event 必需.规定指定元 ...
- 转,SqlServer 基础之(触发器)
概念: 触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触 ...
- 变形和透视 perspective
前面介绍了css3 2D变形(transform)移动.缩放.旋转.倾斜 有2D 也有3D,例如3D transform中有下面这三个方法: rotateX( angle ) rotateY( ang ...
- 判断List<E>内是否有重复对象
主要用到Java 8的Stream类 long distinctedSize = list.stream().distinct().count(); boolean hasRepeat = list. ...
- [bzoj 5332][SDOI2018]旧试题
传送门 Description \[ \sum_{i=1}^A\sum_{j=1}^B\sum_{k=1}^Cd(ijk) (\mathrm{mod\:} 10^9+7) \] 其中 \(d(ijk) ...
- [bzoj 2653][国家集训队]middle
传送门 Description 一个长度为\(n\)的序列\(a\),设其排过序之后为\(b\),其中位数定义为\(b[n/2]\),其中\(a,b\)从\(0\)开始标号,除法取下整. 给你一个长度 ...
- Eclipse中Git的操作
一.工程初始化为本地库 工程→右键→Team→Share Project→Git 点击Finish即可 二.Eclipse 中忽略不必追踪控制的文件 列如: .classpath 文件 .projec ...
- java集合类型源码解析之PriorityQueue
本来第二篇想解析一下LinkedList,不过扫了一下源码后,觉得LinkedList的实现比较简单,没有什么意思,于是移步PriorityQueue. PriorityQueue通过数组实现了一个堆 ...