k8s安装Jenkins

这篇具有很好参考价值的文章主要介绍了k8s安装Jenkins。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

k8s安装Jenkins,项目构建,kubernetes,jenkins,容器

目录

​编辑

一、环境准备

1.1 环境说明

二、安装nfs

2.1 安装NFS

2.2 创建NFS共享文件夹

2.3 配置共享文件夹

2.4 使配置生效

2.5 查看所有共享目录

 2.6 启动nfs

2.7 其他节点安装nfs-utils

三、创建PVC卷

3.1 创建namespace

3.2 创建nfs 客户端sa授权

3.3 创建nfs 客户端

3.4 创建StorageClass

3.5 创建PVC卷

四、创建Service

五、创建deployment

六、登录验证

6.1 登录


 

一、环境准备

1.1 环境说明

本文搭建MongoDB,基于WMware虚拟机,操作系统CentOS 8,且已经基于Kubeadm搭好了k8s集群,k8s节点信息如下:

服务器 IP地址
master 192.168.31.80
node1 192.168.31.8
node2 192.168.31.9

如需知道k8s集群搭建,可跳转我的文章《kubeadm部署k8s集群》查看。

二、安装nfs

2.1 安装NFS

我选择在 master 节点创建 NFS 存储,首先执行如下命令安装 NFS:

yum -y install  nfs-utils rpcbind

2.2 创建NFS共享文件夹

mkdir -p /var/nfs/jenkins/pv1

2.3 配置共享文件夹

vim  /etc/exports

/var/nfs/jenkins/pv1  *(rw,sync,no_root_squash)

2.4 使配置生效  

exportfs -r

2.5 查看所有共享目录

exportfs -v

k8s安装Jenkins,项目构建,kubernetes,jenkins,容器

 2.6 启动nfs

systemctl start nfs-server
systemctl enabled nfs-server
systemctl start rpcbind
systemctl enabled rpcbind

2.7 其他节点安装nfs-utils

yum -y install nfs-utils

三、创建PVC卷


PVC是资源的申请,用来声明对存储空间、访问模式、存储类别需求信息。在创建PVC卷之前,需要创建NFS客户端、NFS 客户端sa授权和StoreClass存储类。

3.1 创建namespace

kubectl create ns jenkins

3.2 创建nfs 客户端sa授权

cat > jenkins-nfs-client-sa.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins-nfs-client
  namespace: jenkins
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: jenkins-nfs-client-runner
  namespace: jenkins
rules:
  - apiGroups: [""]
    resources: ["persistentvolumes"]
    verbs: ["get","list","watch","create","delete"]
  - apiGroups: [""]
    resources: ["persistentvolumeclaims"]
    verbs: ["get","list","watch","create","delete"]
  - apiGroups: ["storage.k8s.io"]
    resources: ["storageclasses"]
    verbs: ["get","list","watch"]
  - apiGroups: [""]
    resources: ["events"]
    verbs: ["get","list","watch","create","update","patch"]
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["create","delete","get","list","watch","patch","update"]

---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: jenkins-run-nfs-provisioner
  namespace: jenkins
subjects:
  - kind: ServiceAccount
    name: jenkins-nfs-client
    namespace: jenkins
roleRef:
  kind: ClusterRole
  name:  jenkins-nfs-client-runner
  apiGroup: rbac.authorization.k8s.io

3.3 创建nfs 客户端

cat > jenkins-nfs-client.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name:  jenkins-nfs-client
  labels:
    app: jenkins-nfs-client
  # replace with namespace where provisioner is deployed
  namespace: jenkins
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: jenkins-nfs-client
  template:
    metadata:
      labels:
        app: jenkins-nfs-client
    spec:
      serviceAccountName: jenkins-nfs-client
      containers:
        - name: jenkins-nfs-client
          image: quay.io/external_storage/nfs-client-provisioner:latest
          volumeMounts:
            - name: jenkins-nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME   ## 这个名字必须与storegeclass里面的名字一致
              value:  my-jenkins-nfs
            - name: ENABLE_LEADER_ELECTION  ## 设置高可用允许选举,如果replicas参数等于1,可不用
              value: "True"
            - name: NFS_SERVER
              value: 192.168.31.80  #修改为自己的ip(部署nfs的机器ip)
            - name: NFS_PATH
              value: /var/nfs/jenkins     #修改为自己的nfs安装目录
      volumes:
        - name: jenkins-nfs-client-root
          nfs:
            server: 192.168.31.80 #修改为自己的ip(部署nfs的机器ip)
            path: /var/nfs/jenkins     #修改为自己的nfs安装目录

3.4 创建StorageClass

cat > jenkins-storeclass.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: jenkins-nfs-storage
  namespace: jenkins
provisioner: my-jenkins-nfs

3.5 创建PVC卷

cat > jenkins-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-pvc
  namespace: jenkins
  labels:
    pvc: jenkins-pvc # 自定义
spec:
  storageClassName: jenkins-nfs-storage
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20G

四、创建Service

cat > jenkins-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: jenkins-service
  namespace: jenkins
  annotations:
      prometheus.io/scrape: 'true'    #这一段是官方文档带的,是用来让prometheus(普罗米修斯)来识别pod的,可暂时不用管他
      prometheus.io/path:   /
      prometheus.io/port:   '8080'
spec:
  selector:
    app: jenkins-server
  type: NodePort
  ports:
    - name: http
      port: 8080
      targetPort: 8080
      nodePort: 32000
    - name: agent
      port: 50000
      targetPort: 50000
      nodePort: 50000

提示:

如果50000端口没挂载上,需要修改kube-apiserver.yaml
 

vim /etc/kubernetes/manifests/kube-apiserver.yaml

- --service-node-port-range=3000-55000      #这行默认没有,自己给他加上,那端口范围我就不用解释了吧

五、创建deployment

cat > jenkins-deployment.yaml


apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
  namespace: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins-server
  template:
    metadata:
      labels:
        app: jenkins-server
    spec:
      securityContext:
            fsGroup: 1000
            runAsUser: 1000
      serviceAccountName: jenkins-nfs-client
      containers:
        - name: jenkins
          image: jenkins/jenkins:2.369       #镜像这里用这个就行,版本是2.369,官方文档的镜像版本太低,好像是2.2版本的,不支持一些插件
          imagePullPolicy: IfNotPresent

          ports:
            - name: httpport
              containerPort: 8080
            - name: jnlpport
              containerPort: 50000

          volumeMounts:
            - name: jenkins-data
              mountPath: /var/jenkins_home   #这里为jenkins工作目录,挂载出来就好了,这样重启jenkins数据也不会丢失
      volumes:
        - name: jenkins-data
          persistentVolumeClaim:
              claimName:  jenkins-pvc
              readOnly: false

六、登录验证

6.1 登录

进入k8s页面,进入到jenkins的deploment服务工作页面,找到服务的ip

k8s安装Jenkins,项目构建,kubernetes,jenkins,容器

 然后浏览器输入访问地址:

Sign in [Jenkins]

k8s安装Jenkins,项目构建,kubernetes,jenkins,容器

 输出默认的admin登录,密码初始密码在安装jenkins的 /var/jenkins_home/secrets/initialAdminPassword

可以cat /var/jenkins_home/secrets/initialAdminPassword 打印出来,复制粘贴出来登录

登录之后,可以创建自己的账号和密码

k8s安装Jenkins,项目构建,kubernetes,jenkins,容器

 好了,今天的在k8s中部署jenkins就分享到这里!欢约大家点赞+收藏,有疑问也欢迎大家评论留言!文章来源地址https://www.toymoban.com/news/detail-622890.html

到了这里,关于k8s安装Jenkins的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Jenkins构建项目并部署到K8S实践

    Jenkins构建项目并部署到K8S实践

    本次实践使用gitee上的开源项目悟空CRM9.0进行构建并部署到k8S中 悟空CRM9.0项目简介: 悟空CRM-基于jfinal+vue+ElementUI的前后端分离CRM系统。 项目gitee地址:https://gitee.com/wukongcrm/72crm-java.git 软件 版本 IP 备注 K8S 1.26.x 192.168.1.124 192.168.1.124为K8S集群master01节点IP地址 Harbor 2.6.2 192.168.1.

    2024年02月20日
    浏览(12)
  • k8s环境jenkins发布vue项目指定nodejs版本

    k8s环境jenkins发布vue项目指定nodejs版本

    发布一个前端项目,它需要nodejs 16.9.0版本支持,而kubesphere 3.2.0集成的jenkins 的镜像只支持nodejs v10.16.3 该项目基于的环境是k8s 1.23.4,docker 20.10.12. vue 2.7 Jenkins Kubernetes插件 kubesphere 平台安装了jenkins ,基于Jenkins Kubernetes插件,自动化在Kubernetes中运行的Jenkins-slave代理的缩放。该插件

    2024年02月09日
    浏览(11)
  • K8S + GitLab + Jenkins自动化发布项目实践(二)

    K8S + GitLab + Jenkins自动化发布项目实践(二)

    前置工作:已部署5节点k8s集群,并搭建了代码仓库和镜像仓库(GitLab + Harbor)。 主机名 IP 角色 k8s-master1 192.168.124.a k8s控制平面 k8s-master2 192.168.124.b k8s控制平面 k8s-master3 192.168.124.c k8s控制平面 k8s-worker1 192.168.124.d k8s工作节点 k8s-worker2 192.168.124.e k8s工作节点 harborgit 192.168.124.f

    2024年02月03日
    浏览(14)
  • 【Kubernetes 企业项目实战】06、基于 Jenkins+K8s 构建 DevOps 自动化运维管理平台(中)

    【Kubernetes 企业项目实战】06、基于 Jenkins+K8s 构建 DevOps 自动化运维管理平台(中)

    目录 一、基于 Jenkins+k8s+Git+Docker Hub 等技术链构建企业级 DevOps 容器云平台 1.1 安装 Jenkins 1.1.1 安装 nfs 服务 1.1.2 在 kubernetes 中部署 jenkins 1.2 配置 Jenkins ​1.2.1 获取管理员密码 1.2.2 安装插件 1.2.3 创建第一个管理员用户 1.3 测试 jenkins 的 CI/CD 1.3.1 在 Jenkins 中安装 kubernetes 插件

    2024年01月16日
    浏览(37)
  • 基于SNAT+DNAT发布内网K8S及Jenkins+gitlab+Harbor模拟CI/CD的综合项目

    基于SNAT+DNAT发布内网K8S及Jenkins+gitlab+Harbor模拟CI/CD的综合项目

    目录 项目名称 项目架构图 项目环境 项目概述 项目准备 项目步骤 一、修改每台主机的ip地址,同时设置永久关闭防火墙和selinux,修改好主机名,在firewalld服务器上开启路由功能并配置snat策略。 1. 在firewalld服务器上配置ip地址、设置永久关闭防火墙和selinux,并修改好主机名

    2024年02月09日
    浏览(31)
  • Kubernetes(k8s)实战:使用k8s+jenkins实现CICD

    Kubernetes(k8s)实战:使用k8s+jenkins实现CICD

    CIDI(Continuous Integration,Continuous Delivery Deployment),持续集成,持续部署,持续发布。 也就是说,在本地开发完代码之后,push到远程仓库,然后代码打包、部署的这个过程完全是自动化完成的。 但是我们不要进入一个误区,CICD并不意味着一定就是这一套流程,只要实现了代

    2024年02月12日
    浏览(16)
  • K8S部署jenkins

    K8S部署jenkins

    NFS服务器:1xx.xxx.xxx.229 K8Smaster:1xx.xxx.xxx.221 k8Snode1: 1xx.xxx.xxx.228 (宿主机) 需要将jenkins的配置目录挂载到NFS中,如果没安装可以参考之前的文档。 注意:jenkins2.372默认安装jdk11版本,没有mvn和jdk8,如果有需求就需要将宿主机的mvn、jdk、环境变量、都挂载到容器内。 jenki

    2024年02月14日
    浏览(10)
  • k8s 部署 jenkins

    一.前提条件 1.安装helm 二.安装harbor 1.添加harbor helm仓库 helm repo add jenkins https://charts.jenkins.io 2.更新仓库 helm repo update

    2023年04月08日
    浏览(10)
  • jenkins部署K8S应用

    jenkins部署K8S应用

      PS:这种方式是jenkins独立,然后slave已容器方式运行,master是独立出来的,减少运维成本,还能提高效率。 如果使用master部署需要把master加入k8s集群 jenkins安装不赘述 在k8s-master节点上生成对应的证书 在jenkins里添加凭据 凭据类型选Certificate 上传cert.pfx,输入刚才设置的密码

    2024年02月04日
    浏览(14)
  • Jenkins使用k8s部署应用

    Jenkins使用k8s部署应用

    1、jenkins在k8s内部署(请参考其他人的文章) 2、jenkins安装kubenents相关插件 3、配置k8s云         非常重要,目的是实现jenkins可以远程调用k8s进行部署,并可实现安装jenkins-slave进行构建。使得不再依赖jenkins单机能力进行构建,比较适合一定规模的公司。  插件安装后,打开

    2024年02月15日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包