blog icon indicating copy to clipboard operation
blog copied to clipboard

将 Jenkins 从 Docker compose 迁移到 k8s 中

Open Bpazy opened this issue 2 years ago • 0 comments

两年前从裸机运行迁移到 Docekr compose 中: https://github.com/Bpazy/blog/issues/251

如今需要迁移到 k8s 集群中:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-pv-local
spec:
  capacity:
    storage: 2Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: jenkins-local-storage
  local:
    path: /home/ubuntu/jenkins/jenkins-data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - shan-tencent

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: jenkins-local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: jenkins-pvc-local
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
  storageClassName: jenkins-local-storage

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      name: jenkins
  template:
    metadata:
      labels:
        name: jenkins
    spec:
      containers:
        - name: jenkins
          image: jenkins/jenkins:lts
          ports:
            - containerPort: 8080
          volumeMounts:
            - name: jenkins-pvc-local
              mountPath: /var/jenkins_home
      volumes:
      - name: jenkins-pvc-local
        persistentVolumeClaim:
          claimName: jenkins-pvc-local

---
apiVersion: v1
kind: Service
metadata:
  name: jenkins
spec:
  type: NodePort
  selector:
    name: jenkins
  ports:
    - port: 30001
      targetPort: 8080
      nodePort: 30001

可以看到我的 PV 指定了一个路径: /home/ubuntu/jenkins/jenkins-data,这是之前 docker 挂载的目录,先通过 local-pv 无缝迁移上 k8s,后期再考虑高可用问题。

Bpazy avatar Mar 18 '24 13:03 Bpazy