K8S学习之基础五十一:k8s部署jenkins

k8s部署jenkins

创建nfs共享目录,

复制代码
mkdir -p /data/v2
echo ''/data/v2 *(rw,no_root_squash)' > /etc/exports
exportfs -arv

创建pv、pvc

复制代码
vi pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-k8s-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteMany
  nfs:
    server: 172.16.80.131
    path: /data/v2

vi pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: jenkins-k8s-pvc
  namespace: jenkins-k8s
spec:
  resources:
    requests:
      storage: 1Gi
  accessModes:
  - ReadWriteMany

创建一个sa账号,并做rbac授权

复制代码
kubectl create sa jenkins-k8s-sa -n jenkins-k8s
kubectl create clusterrolebinding jenkins-k8s-sa-cluster   --clusterrole=cluster-admin --serviceaccount=jenkins-k8s:jenkins-k8s-sa

创建四个名称空间,分别为jenkins-k8s、开发、测试、生产

复制代码
kubectl create namespace jenkins-k8s
kubectl create namespace development
kubectl create namespace qatest
kubectl create namespace production

harbor创建jenkins项目,上传jenkins2.426.3.tar.gz、jenkins.agent:v2到harbor/jenkins项目

部署jenkins,包括deployment和svc

复制代码
vi jenkins-deployment.yaml 
kind: Deployment
apiVersion: apps/v1
metadata:
  name: jenkins
  namespace: jenkins-k8s
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      serviceAccount: jenkins-k8s-sa
      containers:
      - name: jenkins
        image:  172.16.80.140/jenkins/jenkins:2.426.3
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
          name: web
          protocol: TCP
        - containerPort: 50000
          name: agent
          protocol: TCP
        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


vi jenkins-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: jenkins-service
  namespace: jenkins-k8s
  labels:
    app: jenkins
spec:
  selector:
    app: jenkins
  type: NodePort
  ports:
  - name: web
    port: 8080
    targetPort: web
    nodePort: 30002
  - name: agent
    port: 50000
    targetPort: agent

通过svc,用浏览器登录jenkins

相关推荐
qzhqbb37 分钟前
神经网络—— 学习与感知器
神经网络·学习
AI小小怪4 小时前
在Linux服务器上安装CVAT (Docker 28.5.1)
运维·docker·容器·数据标注·cvat
charlie1145141915 小时前
CSS笔记4:CSS:列表、边框、表格、背景、鼠标与常用长度单位
css·笔记·学习·css3·教程
小坏讲微服务5 小时前
Docker-compose 搭建Maven私服部署
java·spring boot·后端·docker·微服务·容器·maven
!chen6 小时前
k8s-Pod中的网络通信
网络·docker·kubernetes
奥尔特星云大使8 小时前
《系统规划与管理师教程(第2版)》方法篇 第10章 云原生系统规划 知识点总结
云原生·软考·高级·系规
✎ ﹏梦醒͜ღ҉繁华落℘8 小时前
FreeRTOS学习笔记(应用)-- 各种 信号量的应用场景
笔记·学习
星星火柴9368 小时前
笔记 | C++面向对象高级开发
开发语言·c++·笔记·学习
BeingACoder8 小时前
【SAA】SpringAI Alibaba学习笔记(一):SSE与WS的区别以及如何注入多个AI模型
java·笔记·学习·saa·springai
熙客9 小时前
Kubernetes是如何保证有状态应用数据安全和快速恢复的
mysql·云原生·容器·kubernetes