修改集群资源配置
集群创建完成并处在运行状态后,有时我们仍然需要调节 OBServer 节点的资源配置,例如 CPU、内存、存储卷等。在此篇文章中介绍了可以进行修改的资源配置以及具体操作,可参考使用。
垂直拓展:修改 CPU 和 内存资源
仅有 standalone
或 service
模式的集群支持本操作。
假设我们目前已经创建了一个单节点 Standalone 集群,节点资源规格为 2C+10G,该配置在 YAML 配置中应该如下片段所示。
observer:
# ...
resource:
cpu: 2
memory: 10Gi
# ...
若运行一段时间发现资源不足需要扩充,可以直接修改这部分配置,如下面 YAML 片段中我们将 OBServer 的资源规格扩充到了 4C+16G。
observer:
# ...
resource:
cpu: 4
memory: 16Gi
# ...
修改完成之后将新的 YAML(文件名 obcluster.yaml 为示例,以实际为准)应用到 K8s 集群中,ob-operator 会执行该集群的垂直拓展流程,待 OBCluster 从垂直扩展状态恢复到 running
状态后,表示垂直拓展完成。
kubectl apply -f obcluster.yaml
kubectl get obcluster -w
NAME STATUS AGE
test scale up obzone xxx
test scale up obzone xxx
...
test running xxx
动态扩容 PVC
该操作要求集群存储使用的存储类支持 AllowVolumeExpansion
特性。
假设我们目前已经部署了一个 OB 集群,其存储配置如下 YAML 片段所示:
observer:
# ...
storage:
dataStorage:
storageClass: my-storage-class
size: 50Gi
redoLogStorage:
storageClass: my-storage-class
size: 50Gi
logStorage:
storageClass: my-storage-class
size: 20Gi
# ...
如果现在我们希望将挂载的存储卷进行一定的扩容,可直接修改这个片段当中的 size
数值,并且通过 kubectl 应用到 K8s 集群当中,ob-operator 会执行该集群的 PVC 扩容流程。需要注意的是 PVC 只能扩容不能缩容,所以 size
只能增大不能减小。
修改后如下面片段所示:
observer:
# ...
storage:
dataStorage:
storageClass: my-storage-class
size: 60Gi
redoLogStorage:
storageClass: my-storage-class
size: 60Gi
logStorage:
storageClass: my-storage-class
size: 30Gi
# ...
执行 kubectl apply 将新的配置应用到集群中,再监听集群的状态变化,预期效果是 PVC 扩容完成后集群状态恢复到 running
状态。
kubectl apply -f obcluster.yaml
kubectl get obcluster -w
NAME STATUS AGE
test expand pvc xxx
test expand pvc xxx
...
test running xxx
修改运行中集群的存储类
如果需要修改运行中集群的存储类,可以修改 OBCluster YAML 配置中的存储类,并通过 kubectl 应用这些修改。ob-operator 将逐个 OBServer 地进行迁移。
假设我们已经部署了一个集群,存储配置如下 YAML 片段所示:
observer:
# ...
storage:
dataStorage:
storageClass: my-storage
size: 60Gi
redoLogStorage:
storageClass: my-storage
size: 60Gi
logStorage:
storageClass: my-storage
size: 30Gi
# ...
要修改存储类,可直接修改这个片段当中的 storageClass
值(具体设置为什么类型取决于实际情况,这里使用 new-storage
为例),并且通过 kubectl 应用到 K8s 集群当中。修改完成后的 YAML 配置如下所示:
observer:
# ...
storage:
dataStorage:
storageClass: new-storage
size: 60Gi
redoLogStorage:
storageClass: new-storage
size: 60Gi
logStorage:
storageClass: new-storage
size: 30Gi
# ...
为了保障集群的稳定性,ob-operator 会逐个 OBServer 地进行迁移。只有在一个 OBServer 成功迁移后,才会进行下一个 OBServer 的迁移。迁移过程不会影响集群的整体可用性,但可能会影响集群的性能,因此建议在非高峰时段进行此操作。