【问题标题】:Deploying PV in MiniKube K8S在 MiniKube K8S 中部署 PV
【发布时间】:2018-09-09 23:51:36
【问题描述】:

我正在 K8S 中部署一个有状态的应用程序。

在此之前我试图实现一个例子。

在我的集群中部署my-sql之前,我已经创建了一个pv和一个pvc。

kind: PersistentVolume
apiVersion: v1
metadata:
  name: mysql-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

此时,我还没有编辑或创建任何新的StorageClass

然后我继续在我的部署中使用volumeMount 部署应用程序。

.
.
       volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pv-claim

我成功启动了应用程序,然后将其取下(首先是 pod 和部署)并重新启动应用程序,并注意到我的应用程序数据仍然存在于 /var/lib/mysql

我后来注意到/mnt/data 在我的主机上不存在。我在 minikube 工作。

我查看了存储类,它似乎正在使用:

StorageClass:    manual

但如果我检查所有存储类,我只会看到这个:

# kubectl describe storageclass
Name:            standard
IsDefaultClass:  Yes
Annotations:     kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"storageclass.beta.kubernetes.io/is-default-class":"true"},"labels":{"addonmanager.kubernetes.io/mode":"Reconcile"},"name":"standard","namespace":""},"provisioner":"k8s.io/minikube-hostpath"}
,storageclass.beta.kubernetes.io/is-default-class=true
Provisioner:           k8s.io/minikube-hostpath
Parameters:            <none>
AllowVolumeExpansion:  <unset>
MountOptions:          <none>
ReclaimPolicy:         Delete
VolumeBindingMode:     Immediate
Events:                <none>

但是my-sql使用的那个不在。

请帮助我理解这一点。 PV /mnt/data 在哪里?

在我的主机上查找/mnt/data 的结果是:

# cd /mnt/data
cd: no such file or directory: /mnt/data

【问题讨论】:

    标签: kubernetes minikube


    【解决方案1】:

    Minikube 是一种基于虚拟机 (VM) 的一体化解决方案。所以你有一个节点,整个控制平面都在其中,这也是你唯一的工作节点:

    $ kubectl get node
    NAME       STATUS  ROLES   AGE  VERSION 
    minikube   Ready   master  1d   v1.10.0
    

    现在,它是一个节点,即一个虚拟机,用于托管您的 Kubernetes 集群。因此,所有与主机相关的操作都必须在所述 VM 上完成:

    $ minikube ssh
                             _             _
                _         _ ( )           ( )
      ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
    /' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
    | ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
    (_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
    
    $ ls -al /mnt
    total 4
    drwxr-xr-x  3 root root   60 Sep  8 12:38 .
    drwxr-xr-x 17 root root  460 Sep  8 12:38 ..
    drwxr-xr-x  7 root root 4096 Sep  8 12:38 vda1
    

    这里有你的/mnt 目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 2019-05-09
      相关资源
      最近更新 更多