我有一个关于Kubernetes StorageClasses的问题。
我计划在Confluent Helm Charts的帮助下将Kafka集群安装到K8s中……
我不太确定K8s中的StorageClasses是如何工作的,假设我有3个代理实例的集群,如果我正确阅读了帮助图表,我只能为它们的StatefulSet配置和values.yaml配置一个StorageClass
persistence:
enabled: true
storageClass: "kafka-storageclass"
size: 50Gi
disksPerBroker: 1现在我不太确定存储类是如何工作的(我可能会使用Azure磁盘),但我的问题是,如果我只能配置一个StorageClass,我的所有3个代理将使用相同的物理磁盘吗?这是我肯定会努力避免的一种情况。
我不希望我的代理实例相互争抢磁盘IO...
如果我的假设是正确的,我如何配置我的舵图为每个实例使用不同的StorageClass (请考虑我现在可以有3个实例,但如果需要的话,我也可以有20个代理实例)。
还有一个额外的参数'disksPerBroker',我无法想象它在K8s环境中会有什么优势?
感谢你的回答...
发布于 2021-02-12 23:06:22
存储类定义了如何动态创建存储单元。通常,您有一些预先创建的存储类,这些存储类具有特定的性能保证(即标准、高级)。您需要在云提供商的文档中找到详细信息。
也就是说,对于Apache Kafka,您需要使用块存储,因为需要良好的延迟。Azure托管磁盘和AWS EBS都运行良好。你可以把它们看作是专用的本地磁盘。为了避免不平衡,您应该始终在所有代理之间使用相同的存储类。
disksPerBroker属性用于确定连接到每个代理(JBOD)的磁盘数量。这更多的是关于增加/减少每个代理可用的存储量的灵活性,而不是性能。
https://stackoverflow.com/questions/66172716
复制相似问题