k8s如何部署分布式jenkins

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

前提条件是,有storageclass,利用pvc 创建持久化存储 创建kube-ops namespace

这里创建opspvc 另外把accessmode 换成readwritemany,因为会有多个pod 进行读写

然后部署jenkins master deployment如下

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: jenkins
  namespace: kube-ops
spec:
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      terminationGracePeriodSeconds: 10
      serviceAccountName: jenkins
      containers:
      - name: jenkins
        image: jenkins/jenkins:lts
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
          name: web
          protocol: TCP
        - containerPort: 50000
          name: agent
          protocol: TCP
        resources:
          limits:
            cpu: 2000m
            memory: 4Gi
          requests:
            cpu: 1000m
            memory: 2Gi
        livenessProbe:
          httpGet:
            path: /login
            port: 8080
          initialDelaySeconds: 60
          timeoutSeconds: 5
          failureThreshold: 12
        readinessProbe:
          httpGet:
            path: /login
            port: 8080
          initialDelaySeconds: 60
          timeoutSeconds: 5
          failureThreshold: 12
        volumeMounts:
        - name: jenkinshome
          subPath: jenkins
          mountPath: /var/jenkins_home
        env:
        - name: LIMITS_MEMORY
          valueFrom:
            resourceFieldRef:
              resource: limits.memory
              divisor: 1Mi
        - name: JAVA_OPTS
          value: -Xmx$(LIMITS_MEMORY)m -XshowSettings:vm -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85 -Duser.timezone=Asia/Shanghai
      securityContext:
        fsGroup: 1000
      volumes:
      - name: jenkinshome
        persistentVolumeClaim:
          claimName: opspvc

---
apiVersion: v1
kind: Service
metadata:
  name: jenkins
  namespace: kube-ops
  labels:
    app: jenkins
spec:
  selector:
    app: jenkins
  ports:
  - name: web
    port: 8080
    targetPort: web
  - name: agent
    port: 50000
    targetPort: agent

分配权限,配置rbac如下

apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins
  namespace: kube-ops

---

kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: jenkins
  namespace: kube-ops
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
  namespace: kube-ops
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: jenkins
subjects:
  - kind: ServiceAccount
    name: jenkins
    namespace: kube-ops

安装k8s 插件,与k8s 目标集群进行远程连接

k8s如何部署分布式jenkinsk8s如何部署分布式jenkins

因为是腾讯云,并没有提供tls 客户端认证,所以直接利用账号密码,进行认证,记得,禁用https 证书检查,jenkins和k8s 就集成好了

划重点!!!:jenkins地址,这里我这里写的是内网地址以及暴露了50000端口(用来与slave 建立通信使用),因为master 和slave 分别在不通的k8s 集群里,那么需要远程进行联通,而jenkins-ui 我是以ingress 的方式对外暴露

slave 的配置

k8s如何部署分布式jenkinsk8s如何部署分布式jenkins

这里需要注意的是标签列表,这里填写的标签,需要在slave 所在k8s 集群的节点上进行标注,而这个名字,是label这个字段里的key 并未是value,这里要注意

job 里配置

k8s如何部署分布式jenkinsk8s如何部署分布式jenkins

这个意思就是 slave 会尽可能的在这个节点build

本文地址:https://www.linuxprobe.com/k8s-jenkins.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Kubernetes(简称k8s)是一个开源的容器编排系统,可以自动部署、扩展和管理应用程序的容器化版本。它能够让开发人员更轻松地将应用程序部署到多个服务器上,同时还能提供负载均衡、自动扩展、储存集成、日志聚合和统计监控等功能。 Jenkins是一个开源的自动化服务器,可以用来持续交付和部署软件。它提供了许多插件,可以用来构建、测试和部署软件。Jenkins可以帮助开发人员在代码提交后自动构建、测试和部署代码,从而提高软件的质量和效率。 总的来说,k8sJenkins有着不同的功能。k8s主要用于容器编排,而Jenkins则主要用于持续交付和部署软件。但是,它们可以结合使用,例如可以使用Jenkins来自动构建、测试和部署软件,然后使用k8s来管理这些软件的容器化版本。 ### 回答2: K8s(Kubernetes)和Jenkins是两个不同的工具,它们在软件开发和DevOps工作流中扮演不同的角色和功能。下面是它们之间的比较: 1. 功能定位: - K8s是一个容器编排平台,用于自动化部署、扩展和管理容器化应用程序。 - Jenkins是一个自动化构建、集成和部署工具,用于实现持续集成和持续交付。 2. 使用场景: - K8s用于在容器化环境中管理多个应用程序的部署、弹性伸缩、负载均衡和高可用性等。 - Jenkins用于将代码库中的变更自动构建、集成、测试和部署到目标环境。 3. 架构: - K8s使用分布式架构,由多个Master节点和多个工作节点组成,实现容器的编排和管理。 - Jenkins可以单独部署在服务器上,也可以使用Master-Slave模式实现分布式构建和集成。 4. 使用方式: - K8s使用命令行工具(kubectl)或基于Web的用户界面(如Kubernetes Dashboard)来管理和操作容器集群。 - Jenkins使用基于Web的用户界面,可以通过插件扩展功能,支持构建任务的配置和触发方式。 5. 与其他工具的集成: - K8s可以与其他DevOps工具(如Helm、Prometheus、Grafana等)集成,实现更强大的容器化应用管理和监控。 - Jenkins可以与版本控制系统(如Git、SVN)和构建工具(如Maven、Gradle)等集成,实现全自动的构建、集成和部署流程。 综上所述,K8sJenkins是两个不同的工具,分别用于容器编排和持续集成。它们在功能、使用场景、架构和集成等方面有所区别,但在一些DevOps工作流中,K8sJenkins可以搭配使用,实现更高效的应用程序开发和部署。 ### 回答3: K8s(Kubernetes)和Jenkins是两个在软件开发领域中常用的工具,虽然它们的功能不完全相同,但在实际应用中常常同时使用。 K8s是一个开源的容器编排平台,它能够自动化部署、扩展和管理应用程序的容器化。K8s提供了一个强大的集群管理系统,可以在集群中管理大规模的应用程序和容器,实现高可用性和负载平衡。K8s还具有自动恢复和故障排除的能力,提供了可靠的容器运行环境。 Jenkins是一个开源的持续集成和持续交付工具。它允许开发团队自动化软件开发流程中的构建、测试和部署等任务。Jenkins提供了丰富的插件和可定制性,使得它可以与各种不同的开发工具和平台集成,以满足不同团队的需求。Jenkins还支持分布式构建和监控,能够提高开发效率和质量。 虽然K8sJenkins的功能不同,但它们在软件开发流程中具有不可替代的作用。K8s负责容器的管理和部署,能够提供稳定可靠的容器运行环境;而Jenkins负责构建、测试和部署等开发任务的自动化,能够提高团队的开发效率。因此,在实际应用中,往往会同时使用K8sJenkins来搭建一个完整的软件开发和部署环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值