好的,以下是一个完整的 Kubernetes 案例,展示如何在阿里云上使用 NAS(Network Attached Storage)为 Jenkins 配置持久存储。

步骤 1:创建阿里云 NAS 文件系统

  1. 登录阿里云控制台。
  2. 进入 NAS 服务。
  3. 创建一个新的文件系统,并记录文件系统的挂载地址(如:<Your-NAS-Server>)。

步骤 2:配置 StorageClass

首先,定义一个 StorageClass,用于动态供应 NAS 存储。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-nas
provisioner: nasplugin.csi.alibabacloud.com
parameters:
  server: <Your-NAS-Server>
  path: /k8s
  vers: "3"
  options: nolock,tcp
reclaimPolicy: Retain

请将 <Your-NAS-Server> 替换为实际的 NAS 挂载地址。

步骤 3:配置 Persistent Volume Claim (PVC)

定义一个 PVC,指定使用我们之前创建的 StorageClass。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
  storageClassName: alicloud-nas

步骤 4:配置 Jenkins Deployment

定义一个 Deployment 来部署 Jenkins,并将 PVC 挂载到 Jenkins 容器中。

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

完整案例的 YAML 文件

将上述部分整合到一个文件中,确保按顺序应用这些配置:

# storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-nas
provisioner: nasplugin.csi.alibabacloud.com
parameters:
  server: <Your-NAS-Server>
  path: /k8s
  vers: "3"
  options: nolock,tcp
reclaimPolicy: Retain
---
# persistentvolumeclaim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
  storageClassName: alicloud-nas
---
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
        - name: jenkins
          image: jenkins/jenkins:lts
          ports:
            - containerPort: 8080
          volumeMounts:
            - name: jenkins-storage
              mountPath: /var/jenkins_home
      volumes:
        - name: jenkins-storage
          persistentVolumeClaim:
            claimName: jenkins-pvc

应用配置

将上述文件保存为 storageclass.yamlpersistentvolumeclaim.yamldeployment.yaml,然后使用 kubectl 命令依次应用这些配置:

kubectl apply -f storageclass.yaml
kubectl apply -f persistentvolumeclaim.yaml
kubectl apply -f deployment.yaml

验证配置

  1. 验证 PVC 和 PV

    kubectl get pvc jenkins-pvc
    kubectl get pv
    

    确认 PVC 已绑定到 PV。

  2. 验证 Deployment 和 Pod

    kubectl get deployment jenkins
    kubectl get pods -l app=jenkins
    

    确认 Jenkins Pod 正在运行。

通过这个完整的案例,我们演示了如何在阿里云 Kubernetes 集群中配置和部署 Jenkins,使用 NAS 作为持久存储。这种方法确保 Jenkins 数据的持久性和可靠性,即使 Pod 被重新调度到不同的节点。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐