![](/img/trans.png)
[英]Add persistent volume in Kubernetes StatefulSet on Minikube
[英]Kubernetes persistent volume with minikube
我在很长时间内在我的minikube
单节点上设置我的k8s pod,并在持续的音量创建阶段进行战斗。
即使我从kubernetes
文档中复制/粘贴示例规范,此命令也始终以错误结束:
$kubectl apply -f pv-volume.yml
错误:SchemaError(io.k8s.api.core.v1.ScaleIOVolumeSource):无效对象没有其他属性
$cat pv-volume.yml
kind: PersistentVolume
apiVersion: v1
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
我无法弄清楚为什么kubectl要求我在我的规范中指定ScaleIO
,而我正在使用本地卷。
我将storagaClassName
指定为standard
出现同样的错误
关于什么可能是问题的任何想法?
我的版本:
$minikube version
minikube version: v1.0.0
$kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:38:32Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:45:25Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
在minikube中,默认情况下动态配置器已经存在,您只需要使用该类创建持久性卷声明。
C02W84XMHTD5:Downloads iahmad$ minikube start
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
Loading cached images from config file.
C02W84XMHTD5:Downloads iahmad$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 4d v1.10.0
C02W84XMHTD5:Downloads iahmad$
C02W84XMHTD5:Downloads iahmad$ kubectl get storageclasses.storage.k8s.io
NAME PROVISIONER AGE
standard (default) k8s.io/minikube-hostpath 4d
C02W84XMHTD5:Downloads iahmad$
C02W84XMHTD5:Downloads iahmad$
因此,对于托管数据持久性,您只需要一个卷声明并在kubernetes部署中使用它。
使用内置的minikube存储类的示例mysql卷声明。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mysql-volumeclaim
annotations:
volume.beta.kubernetes.io/storage-class: standard
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
mysql部署中的用法:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.6
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql
key: password
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-volumeclaim
我是从错误转到错误,然后尝试创建另一个对象,如秘密和相同的问题。
然后
看起来kubectl
升级是解决方案的关键, 1.10
客户端版本试图与1.14
交谈 - 而API版本中的不匹配可以解释错误消息中的怪异。 它似乎与minikube
无关。
它现在正在工作,我实际上可以kube
运行我的kube
命令
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.