• K8s复习笔记9--war包部署Jenkins war包k8s部署


    1. Jenkins 镜像制作

    1.1 获取Jenkins jar包

    wget https://get.jenkins.io/war-stable/2.346.3/jenkins.war
    
    • 1

    1.2 配置Dockerfile

    #Jenkins Version 2.190.1
    FROM harbor.intra.com/pub-images/jdk-base:v8.212
    
    ADD jenkins-2.319.2.war /apps/jenkins/jenkins.war
    ADD run_jenkins.sh /usr/bin/
    
    
    EXPOSE 8080 
    
    CMD ["/usr/bin/run_jenkins.sh"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    run_jenkins.sh

    #!/bin/bash
    cd /apps/jenkins && java -server -Xms1024m -Xmx1024m -Xss512k -jar jenkins.war --webroot=/apps/jenkins/jenkins-data --httpPort=8080
    
    • 1
    • 2

    1.3 Build

    #!/bin/bash
    docker build -t  harbor.intra.com/wework/jenkins:v2.319.2 .
    echo "镜像制作完成,即将上传至Harbor服务器"
    sleep 1
    docker push harbor.intra.com/wework/jenkins:v2.319.2
    echo "镜像上传完成"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1.4 构建Jenkins镜像

    root@k8s-master-01:/opt/k8s-data/dockerfile/web/wework/jenkins# ./build-command.sh 
    Sending build context to Docker daemon  72.25MB
    Step 1/5 : FROM harbor.intra.com/pub-images/jdk-base:v8.212
     ---> 7c67b5ec4ce0
    Step 2/5 : ADD jenkins-2.319.2.war /apps/jenkins/jenkins.war
     ---> cf6521e4609c
    Step 3/5 : ADD run_jenkins.sh /usr/bin/
     ---> 7739c730bcc5
    Step 4/5 : EXPOSE 8080
     ---> Running in 7a54bb8ee1d4
    Removing intermediate container 7a54bb8ee1d4
     ---> 021de5204e27
    Step 5/5 : CMD ["/usr/bin/run_jenkins.sh"]
     ---> Running in 8c7ccbfb8d50
    Removing intermediate container 8c7ccbfb8d50
     ---> a9f3698a4f0c
    Successfully built a9f3698a4f0c
    Successfully tagged harbor.intra.com/wework/jenkins:v2.319.2
    镜像制作完成,即将上传至Harbor服务器
    The push refers to repository [harbor.intra.com/wework/jenkins]
    12f86e00e26b: Pushed 
    c8e99d914e42: Pushed 
    aadaa9679cb8: Mounted from wework/tomcat-app1 
    fc305a4ba468: Mounted from wework/tomcat-app1 
    ab93afc6a659: Mounted from wework/tomcat-app1 
    d7f831641e18: Mounted from wework/tomcat-app1 
    f4b52134c525: Mounted from wework/tomcat-app1 
    0533300cca03: Mounted from wework/tomcat-app1 
    30a12549c4a3: Mounted from wework/tomcat-app1 
    ce1fb445c72c: Mounted from wework/tomcat-app1 
    174f56854903: Mounted from wework/redis 
    v2.319.2: digest: sha256:c1a2d3060e8b39f01ca8261bcf8c65f5b10960be11b3c32c22802a72493c60a8 size: 2628
    镜像上传完成
    
    • 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

    1.5 测试Jenkins镜像

    运行刚才构建的镜像,简单验证镜像是否可用。

    root@k8s-master-01:/opt/k8s-data/dockerfile/web/wework/jenkins# docker run -d --name jeknins -p 8080:8080 harbor.intra.com/wework/jenkins:v2.319.2
    febd6864c0d6a994faf6b4ee3e1e2cc803090783f4a4abaa9ad75b06919c0e41
    root@k8s-master-01:/opt/k8s-data/dockerfile/web/wework/jenkins# docker ps
    CONTAINER ID   IMAGE                                           COMMAND                  CREATED          STATUS          PORTS                    NAMES
    febd6864c0d6   harbor.intra.com/wework/jenkins:v2.319.2        "/usr/bin/run_jenkin…"   13 seconds ago   Up 12 seconds   0.0.0.0:8080->8080/tcp   jeknins
    d954cd26ea3b   d45bf977dfbf                                    "start_runit"            24 hours ago     Up 24 hours                              k8s_calico-node_calico-node-jd8xr_kube-system_07751b5d-1af5-4d83-ba32-07f96bbef217_11
    1447e8503433   harbor.intra.com/baseimages/pause-amd64:3.4.1   "/pause"                 24 hours ago     Up 24 hours                              k8s_POD_calico-node-jd8xr_kube-system_07751b5d-1af5-4d83-ba32-07f96bbef217_9
    root@k8s-master-01:/opt/k8s-data/dockerfile/web/wework/jenkins# ss -tnlup|grep 8080
    tcp   LISTEN   0        20480              0.0.0.0:8080           0.0.0.0:*      users:(("docker-proxy",pid=40462,fd=4)) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2. Jenkins k8s部署

    需要持久化数据的2个目录:
    /root/.jenkins
    /apps/jenkins/jenkis-data

    2.1 准备PV使用的NFS目录

    root@haproxy-1:~# mkdir /data/k8s/wework/jenkins-data
    root@haproxy-1:~# mkdir /data/k8s/wework/jenkins-root-data
    
    • 1
    • 2

    2.2 创建PV

    jenkins-persistentvolume.yaml

    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: jenkins-datadir-pv
      namespace: wework
    spec:
      capacity:
        storage: 100Gi
      accessModes:
        - ReadWriteOnce
      nfs:
        server: 192.168.31.109
        path: /data/k8s/wework/jenkins-data 
    
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: jenkins-root-datadir-pv
      namespace: wework
    spec:
      capacity:
        storage: 100Gi
      accessModes:
        - ReadWriteOnce
      nfs:
        server: 192.168.31.109
        path: /data/k8s/wework/jenkins-root-data
    
    • 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

    创建pv

    root@k8s-master-01:/opt/k8s-data/yaml/web/wework/jenkins/pv# kubectl apply -f jenkins-persistentvolume.yaml 
    persistentvolume/jenkins-datadir-pv created
    persistentvolume/jenkins-root-datadir-pv created
    root@k8s-master-01:/opt/k8s-data/yaml/web/wework/jenkins/pv# kubectl get pv
    NAME                      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                            STORAGECLASS   REASON   AGE
    jenkins-datadir-pv        100Gi      RWO            Retain           Available                                                            6s
    jenkins-root-datadir-pv   100Gi      RWO            Retain           Available                                                            6s
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.3 创建PVC

    jenkins-persistentvolumeclaim.yaml

    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: jenkins-datadir-pvc
      namespace: wework
    spec:
      volumeName: jenkins-datadir-pv
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 80Gi
    
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: jenkins-root-data-pvc
      namespace: wework
    spec:
      volumeName: jenkins-root-datadir-pv 
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 80Gi
    
    • 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

    创建pvc

    root@k8s-master-01:/opt/k8s-data/yaml/web/wework/jenkins/pv# kubectl apply -f jenkins-persistentvolumeclaim.yaml 
    persistentvolumeclaim/jenkins-datadir-pvc created
    persistentvolumeclaim/jenkins-root-data-pvc created
    root@k8s-master-01:/opt/k8s-data/yaml/web/wework/jenkins/pv# kubectl get pvc -n wework
    NAME                      STATUS   VOLUME                    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    data-mysql-0              Bound    mysql-datadir-1           50Gi       RWO                           17h
    data-mysql-1              Bound    mysql-datadir-4           50Gi       RWO                           17h
    data-mysql-2              Bound    mysql-datadir-6           50Gi       RWO                           17h
    data-mysql-3              Bound    mysql-datadir-2           50Gi       RWO                           16h
    jenkins-datadir-pvc       Bound    jenkins-datadir-pv        100Gi      RWO                           16s
    jenkins-root-data-pvc     Bound    jenkins-root-datadir-pv   100Gi      RWO                           16s
    zookeeper-datadir-pvc-1   Bound    zookeeper-datadir-pv-1    20Gi       RWO                           2d11h
    zookeeper-datadir-pvc-2   Bound    zookeeper-datadir-pv-2    20Gi       RWO                           2d11h
    zookeeper-datadir-pvc-3   Bound    zookeeper-datadir-pv-3    20Gi       RWO                           2d11h
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.4 创建Jenkins Deployment服务

    jenkins.yaml

    kind: Deployment
    apiVersion: apps/v1
    metadata:
      labels:
        app: wework-jenkins
      name: wework-jenkins-deployment
      namespace: wework
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: wework-jenkins
      template:
        metadata:
          labels:
            app: wework-jenkins
        spec:
          containers:
          - name: wework-jenkins-container
            image: harbor.intra.com/wework/jenkins:v2.319.2 
            imagePullPolicy: IfNotPresent
            #imagePullPolicy: Always
            ports:
            - containerPort: 8080
              protocol: TCP
              name: http
            volumeMounts:
            - mountPath: "/apps/jenkins/jenkins-data/"
              name: jenkins-datadir-wework
            - mountPath: "/root/.jenkins"
              name: jenkins-root-datadir
          volumes:
            - name: jenkins-datadir-wework
              persistentVolumeClaim:
                claimName: jenkins-datadir-pvc
            - name: jenkins-root-datadir
              persistentVolumeClaim:
                claimName: jenkins-root-data-pvc
    
    ---
    kind: Service
    apiVersion: v1
    metadata:
      labels:
        app: wework-jenkins
      name: wework-jenkins-service
      namespace: wework
    spec:
      type: NodePort
      ports:
      - name: http
        port: 80
        protocol: TCP
        targetPort: 8080
        nodePort: 38080
      selector:
        app: wework-jenkins
    
    • 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

    创建Jenkins Deployment服务

    root@k8s-master-01:/opt/k8s-data/yaml/web/wework/jenkins# kubectl apply -f jenkins.yaml 
    deployment.apps/wework-jenkins-deployment created
    service/wework-jenkins-service created
    root@k8s-master-01:/opt/k8s-data/yaml/web/wework/jenkins# kubectl get pods -n wework
    NAME                                         READY   STATUS    RESTARTS   AGE
    mysql-0                                      2/2     Running   0          18m
    mysql-1                                      2/2     Running   0          17m
    mysql-2                                      2/2     Running   0          17m
    mysql-3                                      2/2     Running   0          17m
    wework-jenkins-deployment-5697fd66cf-p8cmg   1/1     Running   0          9s
    zookeeper1-699d46468c-62nfk                  1/1     Running   0          12h
    zookeeper2-7cc484778-fl594                   1/1     Running   0          12h
    zookeeper3-cdf484f7c-bb9fr                   1/1     Running   0          12h
    root@k8s-master-01:/opt/k8s-data/yaml/web/wework/jenkins# kubectl get svc -n wework 
    NAME                         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                        AGE
    mysql                        ClusterIP   None             <none>        3306/TCP                                       17h
    mysql-read                   ClusterIP   10.200.195.5     <none>        3306/TCP                                       17h
    wework-jenkins-service       NodePort    10.200.71.97     <none>        80:38080/TCP                                   40s
    wework-nginx-service         NodePort    10.200.89.252    <none>        80:30090/TCP,443:30091/TCP                     3d19h
    wework-tomcat-app1-service   ClusterIP   10.200.21.158    <none>        80/TCP                                         3d
    zookeeper                    ClusterIP   10.200.117.19    <none>        2181/TCP                                       46h
    zookeeper1                   NodePort    10.200.167.230   <none>        2181:32181/TCP,2888:31774/TCP,3888:56670/TCP   46h
    zookeeper2                   NodePort    10.200.36.129    <none>        2181:32182/TCP,2888:46321/TCP,3888:30984/TCP   46h
    zookeeper3                   NodePort    10.200.190.129   <none>        2181:32183/TCP,2888:61447/TCP,3888:51393/TCP   46h
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    3. 登录测试

    请添加图片描述

    3.1 获取登录密码

    root@k8s-master-01:/opt/k8s-data/yaml/web/wework/jenkins# kubectl exec -it wework-jenkins-deployment-5697fd66cf-p8cmg -n wework bash
    kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
    [root@wework-jenkins-deployment-5697fd66cf-p8cmg /]# cat /root/.jenkins/secrets/initialAdminPassword
    865212293721405bb0ddff114ee57f2f
    
    • 1
    • 2
    • 3
    • 4

    请添加图片描述
    请添加图片描述
    请添加图片描述
    请添加图片描述
    请添加图片描述

    3.2 删除pod后自动重建

    root@k8s-master-01:/opt/k8s-data/yaml/web/wework/jenkins# kubectl get pods -n wework
    NAME                                         READY   STATUS    RESTARTS   AGE
    mysql-0                                      2/2     Running   0          41m
    mysql-1                                      2/2     Running   0          40m
    mysql-2                                      2/2     Running   0          40m
    mysql-3                                      2/2     Running   0          40m
    wework-jenkins-deployment-5697fd66cf-p8cmg   1/1     Running   0          23m
    zookeeper1-699d46468c-62nfk                  1/1     Running   0          13h
    zookeeper2-7cc484778-fl594                   1/1     Running   0          13h
    zookeeper3-cdf484f7c-bb9fr                   1/1     Running   0          13h
    root@k8s-master-01:/opt/k8s-data/yaml/web/wework/jenkins# kubectl delete pods wework-jenkins-deployment-5697fd66cf-p8cmg -n wework
    pod "wework-jenkins-deployment-5697fd66cf-p8cmg" deleted
    root@k8s-master-01:/opt/k8s-data/yaml/web/wework/jenkins# kubectl get pods -n wework
    NAME                                         READY   STATUS    RESTARTS   AGE
    mysql-0                                      2/2     Running   0          56m
    mysql-1                                      2/2     Running   0          56m
    mysql-2                                      2/2     Running   0          55m
    mysql-3                                      2/2     Running   0          55m
    wework-jenkins-deployment-5697fd66cf-mw8dl   1/1     Running   0          49s
    zookeeper1-699d46468c-62nfk                  1/1     Running   0          13h
    zookeeper2-7cc484778-fl594                   1/1     Running   0          13h
    zookeeper3-cdf484f7c-bb9fr                   1/1     Running   0          13h
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    请添加图片描述

    数据依然存在

    请添加图片描述

  • 相关阅读:
    【MATLAB源码-第49期】基于蚁群算法(ACO)算法的栅格路径规划,输出最佳路径图和算法收敛曲线图。
    使用golang及gorm通过MySQL实现消息队列,保证日志先行,持久化,失败补偿,事务性多客户端并发消费,可水平扩展...
    【数据结构与算法】递归全流程详细剖析 | 详解图的深度优先遍历
    UE5 ChaosVehicles载具换皮 (连载二)
    笔记 记录
    【Milvus的人脸检索】
    ​Python实战案例:航班票价预测这样做,效果真好啊
    exec函数族的应用
    微服务开发与实战Day11 - 微服务面试篇
    极几何,本质矩阵,基础矩阵,单应矩阵
  • 原文地址:https://blog.csdn.net/qq_29974229/article/details/126298465