Jenkins kubernetes插件无法正常工作

问题描述 投票:5回答:2

我正在尝试使用jenkins-kubernetes插件设置Jenkins Dynamic slaves创建。

我的jenkins在K8s Cluster外面运行。

链接:https://github.com/jenkinsci/kubernetes-plugin

我的jenkins版本是2.60.2,Kubernetes插件版本是1.1.2

我按照自述文件中提到的步骤进行操作并成功设置连接。

我的设置如下:enter image description here

连接成功。

然后我用pod模板创建了一个作业:enter image description here

这里开始出现问题:1。当我最初运行此作业时,它运行并且我的pod中的jenkins slave容器无法连接并抛出:

enter image description here

我已经启用JNLP端口(50000)不确定它是否是正确的端口,即使在Jenkins中使用随机选项进行测试也没有用。

现在我放弃了这个詹金斯的工作并再次运行它说:

 Started by user Vaibhav Jain
[Pipeline] podTemplate
[Pipeline] {
[Pipeline] node
Still waiting to schedule task
Jenkins doesn’t have label defaultlabel

并且没有任何pod正在kubernetes开始。这很奇怪。

我不确定我做错了什么。需要帮忙!

jenkins kubernetes jenkins-plugins jenkins-pipeline jenkins-2
2个回答
9
投票

我建议您通过创建serviceAccount来使用kubernetes中的凭据,而不是使用证书:

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: jenkins
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
  resources: ["pods/exec"]
  verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
  resources: ["pods/log"]
  verbs: ["get","list","watch"]
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: jenkins
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: jenkins
subjects:
- kind: ServiceAccount
  name: jenkins

并使用该serviceAccount部署jenkins:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: jenkins
  name: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:           
      serviceAccountName: jenkins 
....

我向您展示了Kubernetes插件的截图(注意JNLP端口的Jenkins隧道,'jenkins'是我的kubernetes服务的名称):

enter image description here

enter image description here

凭证:

enter image description here

然后填写字段(ID将自动生成,说明将显示在凭据列表框中),但请确保在kubernetes中创建了serviceAccount,如前所述:

enter image description here

我的指示是针对kubernetes内的Jenkins大师。如果你想在群集之外(但是奴隶在里面),我认为你必须使用简单的登录/密码凭证。

对于您的上一个错误,它似乎是一个主机解析错误:从属无法解析您的主机。

我希望它对你有所帮助。


1
投票

好!我发现问题,我给容器上限为10(默认名称空间),这对我的集群来说太低了。我有15个工作节点集群,当K8主控尝试启动一个吊舱时,它会立即启动多个吊舱(虽然在安排一个吊舱后终止休息),最终超过了集装箱上限(即10)。我将CAP改为100,现在事情按预期工作了。

我注意到K8s Jenkins插件有一件事,它不会清除错误容器本身,这增加了容器数量并导致了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.