簡體   English   中英

Jenkins容器在Kubernetes集群上的持久性-PersistentVolumeClaim(VMware / Vsphere)

[英]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 CLIroot身份進入主機並執行以下命令:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM