[英]Persistence of permanent node on Jenkins running as container kubernetes
[英]Jenkins container persistence on Kubernetes cluster - PersistentVolumeClaim (VMware/Vsphere)
刪除部署/服務時嘗試將我的jenkins作業持久保存到vSphere存儲中。
我嘗試使用標准方法:使用StorageClass,然后制作一個PersistentVolumeClaim,該文件在將創建部署的.ayml文件中引用。
storage-class.yml:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: mystorage
provisioner: kubernetes.io/vsphere-volume
parameters:
diskformat: zeroedthick
持續體積聲明.yml:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc0003
spec:
storageClassName: mystorage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 15Gi
jenkins.yml:
---
apiVersion: v1
kind: Service
metadata:
name: jenkins-auto-ci
labels:
app: jenkins-auto-ci
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
selector:
app: jenkins-auto-ci
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: jenkins-auto-ci
spec:
replicas: 1
template:
metadata:
labels:
app: jenkins-auto-ci
spec:
containers:
- name: jenkins-auto-ci
image: jenkins
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: GET_HOSTS_FROM
value: dns
ports:
- name: http-port
containerPort: 80
- name: jnlp-port
containerPort: 50000
volumeMounts:
- name: jenkins-home
mountPath: "/var"
volumes:
- name: jenkins-home
persistentVolumeClaim:
claimName: pvc0003
我希望在刪除並重新創建部署時,jenkins作業能夠繼續存在。
您應該創建VMDK ,它是虛擬機磁盤。
您可以使用作為 vSphere CLI的govc進行此操作。
govc datastore.disk.create -ds datastore1 -size 2G volumes/myDisk.vmdk
或通過ssh使用ESXi CLI以root
身份進入主機並執行以下命令:
vmkfstools -c 2G /vmfs/volumes/datastore1/volumes/myDisk.vmdk
完成此操作后,應創建PV,將其vsphere_pv.yaml
,如下所示:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0001
spec:
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
vsphereVolume:
volumePath: "[datastore1] volumes/myDisk"
fsType: ext4
本示例中的datastore1
是在vCenter的根文件夾中創建的,如果您將其放置在其他位置,則需要更改volumePath
。 如果位於DatastoreCluster
則將volumePath
設置為"[DatastoreCluster/datastore1] volumes/myDisk"
。
通過kubectl apply -f vsphere_pv.yaml
yaml應用於kubectl apply -f vsphere_pv.yaml
您可以通過描述它來檢查它是否已創建kubectl describe pv pv0001
現在您需要PVC,我們將其vsphere_pvc.yaml
以消耗PV。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc0001
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
通過kubectl apply -f vsphere_pvc.yaml
您可以通過描述它來檢查它是否已創建kubectl describe pvc pv0001
完成此操作后,您的yaml
可能如下所示:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: jenkins-auto-ci
spec:
replicas: 1
template:
metadata:
labels:
app: jenkins-auto-ci
spec:
containers:
- name: jenkins-auto-ci
image: jenkins
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: GET_HOSTS_FROM
value: dns
ports:
- name: http-port
containerPort: 80
- name: jnlp-port
containerPort: 50000
volumeMounts:
- name: jenkins-home
mountPath: "/var"
volumes:
- name: jenkins-home
persistentVolumeClaim:
claimName: pvc0001
所有這些在Vmware GitHub vsphere-storage-for-kubernetes上都有很好的解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.