我正在尝试了解将[CouchDB](https:couchdb.apache.org)部署到Kubernetes集群的正确步骤。
我所做的是:
kubectl create secret --namespace mynamespace generic couch-test-couchdb \
--from-literal=adminUsername=admin
--from-literal=adminPassword=password
--from-literal=cookieAuthSecret=supersecret
helm install --namespace mynamespace couch-test \
--set couchdbConfig.couchdb.uuid=$(uuid | tr -d -) \
-f couch-test.yml \
couchdb/couchdb
使用couch-test.yml
:
createAdminSecret : false
persistentVolume.enabled : true
persistentVolume.size: 10Gi
该命令运行时没有错误消息,但是没有发生永久存储分配。
我错过了什么?
我想我需要先创建一个PV
,但不清楚如何将其链接到安装。是storageClass还是名称或其他内容?
更新
我重新开始,删除设置并使用k apply --namespace mynamespace -f couch-storage.yml
添加存储类定义
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: couch-storage
provisioner: kubernetes.io/no-provisioner
reclaimPolicy: Retain
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
因此,couch-farm.yml
现在看起来如下所示:
createAdminSecret : false
persistentVolume.enabled : true
persistentVolume.size: 10Gi
persistentVolume.storageClass : couch-storage
没有区别,k describe pod...
中的存储仍指向EmptyDir
2条答案
按热度按时间0sgqnhkj1#
存储类是特定于环境/基础架构的,这就是CouchDB Helm图表没有创建任何存储类的原因。
图表应使用图表值文件中指定的存储类为每个单元创建一个
PersistantVolumeClaim
。(或您可以在自己的StorageClass资源中引用的调配程序),这些资源支持动态资源调配,即在声明中指定storageclass就足以让后端停止并分配适当的存储器,使其可用于Kubernetes。在您的示例中,看起来像是为存储定义了一个Local Persistant Volume,这很好,但比使用动态配置程序要复杂-您需要完成文档中的步骤来配置它并生成持久卷。
如果您得环境支持,使用此处列出得动态置备程序可能会更易于入门.
yiytaume2#
为了扩展Will的解决方案和我的边缘案例:
当
storageClass
不支持动态预配置时,看起来Helm图表不会创建PersistentVolumeClaim
。在我的例子中,我只使用Microk8s配置了一个带有本地存储的边缘设备。幸运的是,Microk8s附带了一个storageClass,它正好满足了我的需要:动态配置本地存储。这里缺少的部分是
(The点标记
persistentVolume.storageClass
在这里不起作用)一句忠告:不要依赖这样的配置进行高负载生产。在我的情况下,边缘设备将立即复制到云数据库,并使用RAID5驱动器,因此数据丢失的风险是可控的