微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Helm Chart 将 CouchDB 部署到 K8S 时,如何定义持久卷?

如何解决使用 Helm Chart 将 CouchDB 部署到 K8S 时,如何定义持久卷?

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

该命令运行时没有错误消息,但不会发生持久存储分配。当我输入 kubectl describe pod couch-test-couchdb-0 时,我进入 Volumes for config-storage,database-storage EmptyDir

我想念什么?

我怀疑我需要先创建一个 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

解决方法

存储类是特定于环境/基础架构的,这就是 CouchDB Helm 图表停止创建任何内容的原因。

图表应使用图表值文件中指定的存储类为每个 Pod 创建一个 PersistantVolumeClaim。大多数生产 Kubernetes 环境将具有支持动态配置的预配置 StorageClass 资源列表(或您可以在您自己的 StorageClass 资源中引用的配置器),即在声明中指定存储类足以让后端启动并分配适当的存储并使其可用于 Kubernetes。

在您的情况下,您似乎正在为存储定义 Local Persistant Volume,这完全没问题,但比使用动态配置程序更复杂 - 您需要完成 {{ 3}} 对其进行配置并生成持久卷。

如果您的环境支持它,那么使用 documentation 列出的动态配置程序可能会更容易上手。

,

扩展 Will 的解决方案和我的边缘情况:

AnsibleVaultFormatError: Vault format unhexlify error: Odd-length string 无法进行动态配置时,舵图似乎不会创建 PersistentVolumeClaim

就我而言,我仅使用 Microk8s 为 Edge 设备配置了本地存储。幸运的是,Microk8s 带有一个 storageClass,它完全满足我的需求:动态配置本地存储。所以这里缺少的部分是条目

storageClass

(点符号 createAdminSecret: false allowAdminParty: false persistentVolume: enabled : true size: 10Gi storageClass : microk8s-hostpath 在这里不起作用)

注意事项:不要依赖这样的配置来进行重负载生产。就我而言,边缘设备会立即使用云数据库进行复制并使用 RAID5 驱动器,因此数据丢失的风险是可控的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。