Jenkins kubernetes 插件不工作

Jenkins kubernetes plugin not working

我正在尝试使用 jenkins-kubernetes 插件设置 Jenkins 动态从站创建。

我的 jenkins 运行在 K8s 集群之外。

Link: https://github.com/jenkinsci/kubernetes-plugin

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

我按照自述文件中提到的步骤成功设置了连接。

我的设置如下:

连接成功

然后我使用 pod 模板创建了一个作业:

问题从这里开始: 1。当我 运行 这个工作最初它 运行s 和我 pod 内的 jenkins 从属容器无法连接并抛出:

我启用了 JNLP 端口 (50000) 不确定它是否是正确的端口,甚至在 Jenkins 中使用随机选项进行测试也没有任何效果。

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

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

并且没有 pod 在 kubernetes 中启动。 这很奇怪

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

我建议您通过创建 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 服务的名称):

凭据:

然后填写文件(ID 将自动生成,描述将显示在凭据列表框中),但请务必按​​照我之前所说的在 kubernetes 中创建 serviceAccount:

我的说明是针对 kubernetes 中的 Jenkins master 的。如果你想要它在集群之外(但在集群内部)我认为你必须使用简单的 login/password 凭据。

关于你上次的错误,好像是主机解析错误:slave cannot resolve your host

希望对你有所帮助

好的!我发现了问题,我将容器上限设置为 10(在默认命名空间中),这对我的集群来说太低了。我有 15 个 Worker 节点集群,当 K8s master 尝试启动一个 pod 时,它会立即启动多个 pods(尽管在安排一个后终止 rest),最终超过容器上限限制(10 个)。我将 CAP 更改为 100,现在一切正常。

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