Docker 在Kubernetes集群中部署Jenkins
我在Kubernetes的begginer尝试在集群中部署Jenkins,但pod正在等待 我需要jenkins访问kubernetes,包括访问docker和kubectl命令,以便与我的微服务进行持续集成 通过这个yaml文件示例,我可以通过Minikube在本地机器(我的笔记本)上启动jenkins实例 但现在我正尝试使用云集群作为我研究领域的一部分 我接受改进建议 正如我所说的:我只想上传一个jenkins的实例,通过它我可以不断地集成我的微服务 这些是我的配置和日志 我犯了什么错Docker 在Kubernetes集群中部署Jenkins,docker,jenkins,kubernetes,continuous-integration,continuous-deployment,Docker,Jenkins,Kubernetes,Continuous Integration,Continuous Deployment,我在Kubernetes的begginer尝试在集群中部署Jenkins,但pod正在等待 我需要jenkins访问kubernetes,包括访问docker和kubectl命令,以便与我的微服务进行持续集成 通过这个yaml文件示例,我可以通过Minikube在本地机器(我的笔记本)上启动jenkins实例 但现在我正尝试使用云集群作为我研究领域的一部分 我接受改进建议 正如我所说的:我只想上传一个jenkins的实例,通过它我可以不断地集成我的微服务 这些是我的配置和日志 我犯了什么错 ap
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: jenkins-rbac
subjects:
- kind: ServiceAccount
name: default
namespace: default
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
---
kind: PersistentVolume
apiVersion: v1
metadata:
name: jenkins
labels:
type: local
spec:
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/data/jenkins/"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: jenkins-claim
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
---
apiVersion: v1
kind: Service
metadata:
name: jenkins
labels:
app: jenkins
spec:
ports:
- port: 80
targetPort: 8080
nodePort: 32256
selector:
app: jenkins
tier: jenkins
type: NodePort
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: jenkins
labels:
app: jenkins
spec:
strategy:
type: Recreate
template:
metadata:
labels:
app: jenkins
tier: jenkins
spec:
containers:
- image: sammubr/jenkins
name: jenkins
securityContext:
privileged: true
ports:
- containerPort: 8080
name: jenkins
volumeMounts:
- name: jenkins-persistent-storage
mountPath: /var/jenkins_home
- name: docker
mountPath: /var/run/docker.sock
volumes:
- name: docker
hostPath:
path: /var/run/docker.sock
- name: jenkins-persistent-storage
persistentVolumeClaim:
claimName: jenkins-claim
然后kubectl--context do-sfo2-teste-cluster apply-f jenkins.yaml
但这一切都是悬而未决的:
samuel@samuel-Inspiron-5548:~/Documentos/teste/jenkins$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/jenkins-5dc7fbd78d-9wxfl 0/1 Pending 0 8m34s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/jenkins NodePort 10.245.30.47 <none> 80:32256/TCP 8m34s
service/kubernetes ClusterIP 10.245.0.1 <none> 443/TCP 79m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/jenkins 0/1 1 0 8m35s
NAME DESIRED CURRENT READY AGE
replicaset.apps/jenkins-5dc7fbd78d 1 1 0 8m35s
samuel@samuel-Inspiron-5548:~/Documentos/teste/jenkins$kubectl获取全部
名称就绪状态重新启动
吊舱/jenkins-5dc7fbd78d-9wxfl 0/1挂起0 8m34s
名称类型CLUSTER-IP外部IP端口年龄
service/jenkins节点端口10.245.30.47 80:32256/TCP 8m34s
service/kubernetes ClusterIP 10.245.0.1 443/TCP 79m
姓名就绪最新可用年龄
deployment.apps/jenkins 0/1 10 8m35s
名称所需的当前就绪年龄
replicaset.apps/jenkins-5dc7fbd78d 1 1 0 8m35s
samuel@samuel-Inspiron-5548:~/Documentos/teste/jenkins$kubectl描述pod/jenkins-5dc7fbd78d-9wxfl
名称:jenkins-5dc7fbd78d-9wxfl
名称空间:默认值
优先级:0
PriorityClassName:
节点:
标签:app=jenkins
pod模板散列=5dc7fbd78d
蒂尔=詹金斯
注释:
状态:待定
知识产权:
控制人:ReplicaSet/jenkins-5dc7fbd78d
容器:
詹金斯:
图片:sammubr/jenkins
端口:8080/TCP
主机端口:0/TCP
环境:
挂载:
/来自jenkins持久存储(rw)的var/jenkins_主页
/来自docker(rw)的var/run/docker.sock
/来自default-token-5wdgs(ro)的var/run/secrets/kubernetes.io/serviceCount
条件:
类型状态
播客计划错误
卷数:
码头工人:
类型:主机路径(裸主机目录卷)
路径:/var/run/docker.sock
主机路径类型:
jenkins持久存储:
类型:PersistentVolumeClaim(对同一命名空间中PersistentVolumeClaim的引用)
索赔名称:詹金斯索赔
只读:false
default-token-5wdgs:
类型:Secret(由Secret填充的卷)
SecretName:default-token-5wdgs
可选:false
QoS等级:最佳努力
节点选择器:
容差:node.kubernetes.io/未就绪:不执行300秒
node.kubernetes.io/不可访问:不执行300秒
活动:
从消息中键入原因年龄
---- ------ ---- ---- -------
警告失败调度7s(x8超过10m)默认调度程序pod已解除立即PersistentVolumeClaims的绑定(重复2次)
删除PersistentVolume定义文件中的引号
一致:
正确的文件应如下所示:
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: jenkins-rbac
subjects:
- kind: ServiceAccount
name: default
namespace: default
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
---
kind: PersistentVolume
apiVersion: v1
metadata:
name: jenkins
labels:
type: local
spec:
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/jenkins/
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: jenkins-claim
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
---
apiVersion: v1
kind: Service
metadata:
name: jenkins
labels:
app: jenkins
spec:
ports:
- port: 80
targetPort: 8080
nodePort: 32256
selector:
app: jenkins
tier: jenkins
type: NodePort
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: jenkins
labels:
app: jenkins
spec:
strategy:
type: Recreate
template:
metadata:
labels:
app: jenkins
tier: jenkins
spec:
containers:
- image: sammubr/jenkins
name: jenkins
securityContext:
privileged: true
ports:
- containerPort: 8080
name: jenkins
volumeMounts:
- name: jenkins-persistent-storage
mountPath: /var/jenkins_home
- name: docker
mountPath: /var/run/docker.sock
volumes:
- name: docker
hostPath:
path: /var/run/docker.sock
- name: jenkins-persistent-storage
persistentVolumeClaim:
claimName: jenkins-claim
应用更改
$ kubectl apply -f your-config-file.yaml
有关PersistentVolumes和PersistentVolumeClaims的更多信息,您可以在此处找到:。正如@ortomala lokni前面提到的,您在将未绑定的PersistentVolumeClaims绑定到已声明的PeristanceVolume时遇到问题,最终导致Jenkins Pod无法启动
在@ortomala lokni分享的关于SO的类似问题中,您可以了解此错误的各种原因,以及如何修复它们 在您的特定情况下,PVC的需求与集群上实际配置的PV之间的不匹配是在accessModes(ReadWriteOnce与ReadWriteMany)中 要解决您的问题,请相应地更新“PersistentVolumeClaim”定义,如下所示:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: jenkins-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
注意:对于Jenkins Pod的单个副本,您不需要“”访问模式。这是因为根据“jenkins”部署的当前定义,部署控制器在引擎盖下创建了一个ReplicaSet对象,默认情况下,该对象确保只有一个jenkins Pod实例正在运行(=简化jenkins server的一个实例,一次只将写入此卷)
请找到另一个关于使用helm(推荐方式)从头开始在Kubernetes上设置Jenkins的教程。您会看到这样一条消息:
pod已解除即时PersistentVolumeClaims的绑定。
。可能是重复了您部署在哪个云上的问题?@VishalBiyani DigitalOcean-这有帮助吗?
$ kubectl apply -f your-config-file.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: jenkins-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi