在使用K8S的helm chart将CouchDB部署到K8S时,如何定义持久卷?

qgzx9mmu  于 2022-12-09  发布在  CouchDB
关注(0)|答案(2)|浏览(309)

我正在尝试了解将[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

0sgqnhkj

0sgqnhkj1#

存储类是特定于环境/基础架构的,这就是CouchDB Helm图表没有创建任何存储类的原因。
图表应使用图表值文件中指定的存储类为每个单元创建一个PersistantVolumeClaim。(或您可以在自己的StorageClass资源中引用的调配程序),这些资源支持动态资源调配,即在声明中指定storageclass就足以让后端停止并分配适当的存储器,使其可用于Kubernetes。
在您的示例中,看起来像是为存储定义了一个Local Persistant Volume,这很好,但比使用动态配置程序要复杂-您需要完成文档中的步骤来配置它并生成持久卷。
如果您得环境支持,使用此处列出得动态置备程序可能会更易于入门.

yiytaume

yiytaume2#

为了扩展Will的解决方案和我的边缘案例:
storageClass不支持动态预配置时,看起来Helm图表不会创建PersistentVolumeClaim
在我的例子中,我只使用Microk8s配置了一个带有本地存储的边缘设备。幸运的是,Microk8s附带了一个storageClass,它正好满足了我的需要:动态配置本地存储。这里缺少的部分是

createAdminSecret: false
allowAdminParty: false
persistentVolume:
  enabled : true
  size: 10Gi
  storageClass : microk8s-hostpath

(The点标记persistentVolume.storageClass在这里不起作用)

一句忠告:不要依赖这样的配置进行高负载生产。在我的情况下,边缘设备将立即复制到云数据库,并使用RAID5驱动器,因此数据丢失的风险是可控的

相关问题