• k8s--基础--27.2--企业级devops平台--安装jenkins


    k8s–基础–27.2–企业级devops平台–安装jenkins


    1、安装nfs服务

    1.1、安装

    1. 我选择master1节点(192.168.187.154)
    2. 因为我们已经安装过了,这里只给安装资料
    3. 参考资料
    https://blog.csdn.net/zhou920786312/article/details/124919461
    
    • 1

    1.2、设置共享目录

    1.2.1、创建共享目录

    # 创建目录
    mkdir /nfs/devops -p
    
    # 给与权限
    chmod 777 /nfs/devops
     
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.2.2、编辑配置文件

    # vim /etc/exports	
    /nfs/devops 192.168.187.0/24(rw,no_root_squash)
    
    • 1
    • 2

    说明

    1. /nfs/devops 允许192.168.187.0/24的客户端访问。
    2. rw:表示允许读写,ro表示为只读;
    3. no_root_squash:表示当客户机以root身份访问时赋予本地root权限

    1.3、重启NFS服务程序

    # 宣告共享目录
    exportfs -arv
    # 重启NFS服务程序
    systemctl restart nfs
    
    • 1
    • 2
    • 3
    • 4

    2、部署jenkins

    2.1、创建名称空间

    
    kubectl create namespace jenkins-k8s
    
    • 1
    • 2

    2.2、创建pv

    2.2.1、脚本

    vi /root/k8s/devops/pv.yaml
    
    
    • 1
    • 2

    内容

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # pv名称
      name: jenkins-k8s-pv
    spec:
      # 设置资源大小
      capacity:
        storage: 1Gi
      # 设置访问模式
      accessModes:
      # 多节点读写
      - ReadWriteMany
      # nfs配置
      nfs:
        server: 192.168.187.154
        path: /nfs/devops
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.2.2、执行

    
    kubectl apply  -f  /root/k8s/devops/pv.yaml
    
    # 查看
    kubectl get pv 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    2.3、创建pvc

    2.3.1、脚本

    vi /root/k8s/devops/pvc.yaml
    
    
    • 1
    • 2

    内容

    
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      # 定义pvc的名称和空间
      name: jenkins-k8s-pvc
      namespace: jenkins-k8s
    spec:
      # 定义资源
      resources:
        requests:
          storage: 1Gi
      # 访问模式
      accessModes:
        # 多节点读写
        - ReadWriteMany
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    2.3.2、执行

    
    kubectl apply  -f  /root/k8s/devops/pvc.yaml
    
    # 查看
    kubectl get pvc -n jenkins-k8s
    kubectl get pv -n jenkins-k8s
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    2.4、创建一个sa账号并rbac授权

    2.4.1、创建一个sa账号

    # 在jenkins-k8s名称空间下,创建sa账号 jenkins-k8s-sa
    kubectl create sa jenkins-k8s-sa -n jenkins-k8s
    
    • 1
    • 2

    2.4.2、rbac授权

    kubectl create clusterrolebinding jenkins-k8s-sa-cluster -n jenkins-k8s  --clusterrole=cluster-admin --serviceaccount=jenkins-k8s:jenkins-k8s-sa
    
    • 1
    1. 在jenkins-k8s名称空间下创建一个clusterrolebinding,名字叫做jenkins-k8s-sa-cluster
    2. 将jenkins-k8s名称空间下的jenkins-k8s-sa账号通过clusterrole绑定集群角色cluster-admin,这样jenkins-k8s-sa账号就有了cluster-admin角色的权限。

    2.5、通过deployment部署jenkins

    2.5.1、脚本

    vi /root/k8s/devops/jenkins-deployment.yaml
    
    
    • 1
    • 2

    内容

    kind: Deployment
    apiVersion: apps/v1
    metadata:
      # Deployment 名称
      name: jenkins
      # Deployment 使用的名称空间
      namespace: jenkins-k8s
    spec:
      # 副本数量
      replicas: 1
      # 通过标签,定义选择哪个模板
      selector:
        matchLabels:
          app: jenkins
      # 定义模板的标签
      template:
        metadata:
          labels:
            app: jenkins
        spec:
          # 使用的账号
          serviceAccount: jenkins-k8s-sa
          # 定义容器
          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: 1000m
                memory: 1Gi
              requests:
                cpu: 500m
                memory: 512Mi
            # 存活检查
            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: jenkins-volume
              subPath: jenkins-home
              mountPath: /var/jenkins_home
          # 存储卷定义
          volumes:
          - name: jenkins-volume
            persistentVolumeClaim:
              claimName: jenkins-k8s-pvc
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71

    2.5.2、执行

    # 修改nfs 共享目录的权限
    chown -R 1000 /nfs/devops/jenkins-home
    
     
    kubectl apply  -f  /root/k8s/devops/jenkins-deployment.yaml
    
    # 查看
    kubectl get Deployment -n jenkins-k8s
    kubectl get pods -n jenkins-k8s
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    2.6、部署jenkins对应的service

    1. 可以让浏览器访问

    2.6.1、脚本

    vi /root/k8s/devops/jenkins-service.yaml
    
    
    • 1
    • 2

    内容

    apiVersion: v1
    kind: Service
    metadata:
      # 服务名称和服务所在的名称空间
      name: jenkins-service
      namespace: jenkins-k8s
      # 标签
      labels:
        app: jenkins
    spec:
      # 通过标签和对应的POD关联在一起
      selector:
        app: jenkins
      # 可以让浏览器访问
      type: NodePort
      # 定义端口
      ports:
      - name: web
        port: 8080
        # 目标pod的端口,可以是名称,也可以是数字,如果写了名称,那么对应的pod,必须定义对应名称的端口
        targetPort: web
        nodePort: 30002
      - name: agent
        port: 50000
        targetPort: agent
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    2.6.2、执行

    
    kubectl apply  -f  /root/k8s/devops/jenkins-service.yaml
    
    # 查看
    kubectl get svc -n jenkins-k8s
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    3、配置Jenkins

    更多的资料,看我的Jenkins学习

    3.1、登陆

    http://192.168.187.154:30002
    
    
    • 1
    • 2

    在这里插入图片描述

    3.1.1、获取管理员密码

    在nfs服务端,也就是我们的master1节点获取密码

    cd /nfs/devops/jenkins-home/secrets
    cat initialAdminPassword
    
    • 1
    • 2

    在这里插入图片描述

    3.2、操作

    安装推荐的插件

    在这里插入图片描述

    在这里插入图片描述

    插件安装好,会让你创建用户

    我这都是admin
    在这里插入图片描述

    添加Jenkins服务地址

    在这里插入图片描述

  • 相关阅读:
    最新720全景云系统/可生成小程序+带PC端+安装教程/价值800元的720云全景系统源码
    互联网摸鱼日报(2023-11-06)
    玩转ChatGPT:图像识别(vol. 1)
    服务网络基础
    JVM 篇之 牛刀小试 (一)
    【ESP32--FreeRTOS 任务间的同步与通信】
    聊聊 QianKun JS 沙箱的那些事
    十、Spring Boot 安全管理(5)
    【无标题】
    STM32 FREERTOS osDelayUntil()异常
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/126244453