blog
blog copied to clipboard
将 Jenkins 从 Docker compose 迁移到 k8s 中
两年前从裸机运行迁移到 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,后期再考虑高可用问题。