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 插件中注意到一件事,它不会清除错误容器本身,这会增加容器数量并导致这个问题。
我正在尝试使用 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 插件中注意到一件事,它不会清除错误容器本身,这会增加容器数量并导致这个问题。