K8S-jenkins

 制作jenkins镜像

FROM jdk-base:v8.212

RUN mkdir /apps/jenkins/ -p
ADD jenkins-2.222.1.war /apps/jenkins/
ADD run_jenkins.sh /usr/bin/

EXPOSE 8080 

CMD ["/usr/bin/run_jenkins.sh"]

 jenkins启动脚本

]# cat run_jenkins.sh
#!/bin/bash
cd /apps/jenkins && java -server -Xms1024m -Xmx1024m -Xss512k -jar jenkins-2.222.1.war --webroot=/apps/jenkins/jenkins-data --httpPort=8080

构建镜像

]# docker build -t jenkins:v2.222.1 .

jebkins数据持久化

/root/.jenkins

/apps/jenkins/jenkins-data

创建PV

jenkins-persistentvolume.yaml

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-datadir-pv
  namespace: magedu
spec:
  capacity:
    storage: 120Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    server: 172.31.7.204
    path: /data/k8sdata/magedu/jenkins_data

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-root-datadir-pv
  namespace: magedu
spec:
  capacity:
    storage: 120Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    server: 172.31.7.204
    path: /data/k8sdata/magedu/jenkins_root_data

创建PVC

jenkins-persistentvolumeclaim.yaml

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-datadir-pvc
  namespace: magedu
spec:
  volumeName: jenkins-datadir-pv
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-root-data-pvc
  namespace: magedu
spec:
  volumeName: jenkins-root-datadir-pv
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi

jenkins.yaml

kind: Deployment
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
metadata:
  labels:
    app: magedu-jenkins
  name: magedu-jenkins-deployment
  namespace: magedu
spec:
  replicas: 1
  selector:
    matchLabels:
      app: magedu-jenkins
  template:
    metadata:
      labels:
        app: magedu-jenkins
    spec:
      containers:
      - name: magedu-jenkins-container
        image: linux39-harbor.magedu.net/magedu/jenkins:v2.222.1
        #imagePullPolicy: IfNotPresent
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
          protocol: TCP
          name: http
        volumeMounts:
        - mountPath: "/apps/jenkins/jenkins-data/"   //对这两个目录做持久化
          name: jenkins-datadir-magedu
        - mountPath: "/root/.jenkins"
          name: jenkins-root-datadir
      volumes:
        - name: jenkins-datadir-magedu
          persistentVolumeClaim:
            claimName: jenkins-datadir-pvc
        - name: jenkins-root-datadir
          persistentVolumeClaim:
            claimName: jenkins-root-data-pvc

---
kind: Service
apiVersion: v1
metadata:
  labels:
    app: magedu-jenkins
  name: magedu-jenkins-service
  namespace: magedu
spec:
  type: NodePort
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080 //容器端口
    nodePort: 32080
  selector:
    app: magedu-jenkins

创建PV和PVC

]# kubectl  apply -f jenkins-persistentvolume.yaml
persistentvolume/jenkins-datadir-pv created
persistentvolume/jenkins-root-datadir-pv created

[root@master-1 pv]# kubectl   get pv
NAME                      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
jenkins-datadir-pv        120Gi      RWO            Retain           Available                                   10s
jenkins-root-datadir-pv   120Gi      RWO            Retain           Available                                   10s

[root@master-1 pv]# kubectl  apply -f jenkins-persistentvolumeclaim.yaml
persistentvolumeclaim/jenkins-datadir-pvc created
persistentvolumeclaim/jenkins-root-data-pvc created

[root@master-1 pv]# kubectl   get pvc -n magedu
NAME                    STATUS   VOLUME                    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
jenkins-datadir-pvc     Bound    jenkins-datadir-pv        120Gi      RWO                           13s
jenkins-root-data-pvc   Bound    jenkins-root-datadir-pv   120Gi      RWO                           13s

创建jenkins

]# kubectl  apply -f jenkins.yaml
deployment.apps/magedu-jenkins-deployment created
service/magedu-jenkins-service created

]# kubectl   get svc -A
NAMESPACE     NAME                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
magedu        magedu-jenkins-service   NodePort    10.110.21.128   <none>        80:32080/TCP             11s

访问

http://192.168.64.110:32080/login?from=%2F

查看密码

]# kubectl  exec -it -n magedu        magedu-jenkins-deployment-7d5bc67465-q92zr -- /bin/bash
[root@magedu-jenkins-deployment-7d5bc67465-q92zr /]# cat /root/.jenkins/secrets/initialAdminPassword
c1c61360d253491a861901d6bc01cd5a

注意:PV可以动态扩容,但是PVC不支持扩容,所以当生产环境PVC磁盘不足,需要手动创建一个PVC,拷贝原PVC数据到新盘,重新挂载。

 

posted @ 2022-04-29 20:12  不会跳舞的胖子  阅读(86)  评论(0编辑  收藏  举报