在Kubernetes和OpenShift上扩展MySQL¶
Kubernetes和OpenShift平台带来的最大优势之一是应用程序易于扩展。扩展应用程序的结果是添加资源或pod,并将它们调度到可用的Kubernetes节点。
缩放可以是垂直的和水平的。垂直扩展为MySQL节点增加了更多的计算或存储资源;水平扩展是指向集群中添加更多节点。
垂直扩展¶
规模计算¶
操作员可以部署和管理多个组件:Percona XtraDB Cluster (PXC)、HAProxy或ProxySQL等。雷竞技下载官网要增加或减少CPU或内存,需要在自定义资源中编辑相应的部分。我们遵循结构请求和限制, Kubernetes提供了。
要在PXC中为MySQL节点添加更多资源,请在自定义资源中编辑以下部分:
规范:pxc:资源:请求:内存:4 gcpu:2限制:内存:4 gcpu:2
使用我们的参考文档自定义资源选项有关其他组件的详细信息。
扩展存储¶
Kubernetes通过一个PersistentVolume (PV)(管理员提供的存储段)和一个PersistentVolumeClaim (PVC)(用户对存储的请求)来管理存储。在Kubernetes v1.11中,添加了允许用户增加现有PVC对象大小的功能。用户不能缩小现有PVC对象的大小。
卷扩展能力¶
某些卷类型支持pvc扩展(关于pvc和支持的卷类型的详细信息可以在Kubernetes文档).
使用实例查询当前存储是否支持扩容功能。
美元kubectl描述sc<存储类名称>|grepallowVolumeExpansion
预期的输出
allowVolumeExpansion:真
获取集群的卷列表:
美元kubectl得到聚氯乙烯- lapp.kubernetes.io /实例=< CLUSTER_NAME >预期的输出
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE datadir-cluster1-pxc-0绑定pvc-90f0633b-0938-4b66-a695-556bb8a9e943 6Gi RWO标准5m13s datadir-cluster1-pxc-1绑定pvc-7409ea83-15b6-448f-a6a0-12a139e2f5cc 6Gi RWO标准3m52s datadir-cluster1-pxc-2绑定pvc-90f0b2f8-9bba-4262-904c-1740fdd5511b 6Gi RWO标准2m40s修补卷以增加大小
您可以编辑pvc或执行patch命令:
美元kubectl补丁聚氯乙烯< pvc-name >- p”{“规范”:{"资源":{"请求":{“存储”:“新存储大小”}}}}”预期的输出
persistentvolumeclaim / datadir-cluster1-pxc-0修补执行describe命令检查扩容是否成功:
美元kubectl描述聚氯乙烯< pvc-name >预期的输出
…为kubernetes.io/gce-pd启用CSI迁移功能;waiting for external resizer to expand the pvc Normal Resizing 3m52s external-resizer pd.csi.storage.gke.io external resizer is Resizing volume pvc-90f0633b- 0338 -4b66-a695-556bb8a9e943 Normal filesystemresizerrequired 3m44s external-resizer pd.csi.storage.gke.io要求文件系统调整节点上的卷大小Normal filesystemresizessuccessful 3m10s kubelet MountVolume。NodeExpandVolume succeeded for volume "pvc-90f0633b-0938-4b66-a695-556bb8a9e943"对集群中的所有卷重复步骤2。
现在我们增加了存储,但是我们的StatefulSet和Custom Resource不同步。使用新的存储设置编辑自定义资源并应用:
spec: pxc: volumeSpec: persistentVolumeClaim: resources: requests: storage:应用自定义资源:
美元kubectl应用- fcr.yaml删除StatefulSet与自定义资源同步:
美元kubectl删除sts< statefulset-name >——级联=孤儿Pods将不会下降,Operator将重新创建StatefulSet:
美元kubectl得到sts< statefulset-name >预期的输出
cluster1- pxc3 /3 39s
无卷扩展能力¶
也可以在不进行卷扩展的情况下扩展存储。我们需要逐个删除pod和它们的持久卷,以便将数据重新同步到新卷。这也可以用来缩小存储空间。
使用新的存储大小编辑自定义资源,如下所示:
spec: pxc: volumeSpec: persistentVolumeClaim: resources: requests: storage:以通常的方式应用自定义资源更新:
美元kubectl应用- f部署/ cr.yaml方法删除StatefulSet
孤儿选项美元kubectl删除sts< statefulset-name >——级联=孤儿Pods将不会下降,Operator将重新创建StatefulSet:
美元kubectl得到sts< statefulset-name >预期的输出
cluster1- pxc3 /3 39s扩容集群(可选)
改变存储大小将要求我们终止Pods,这会降低集群的计算能力,并可能导致性能问题。为了在操作期间提高性能,我们将集群的大小从3个节点更改为5个节点:
…规范:pxc:大小:5应用更改:
美元kubectl应用- f部署/ cr.yaml新的pod已经有了新的存储空间:
美元kubectl得到聚氯乙烯预期的输出
名字状态体积容量访问模式STORAGECLASS年龄datadir-cluster1-pxc-0绑定pvc - 90 - f0633b - 0938 - 4 - b66 a695 10 - 556 bb8a9e943 gi两标准110 datadir-cluster1-pxc-1绑定pvc - 7409 - ea83 - 15 - b6 - 448 f - a6a0 10 - 12 a139e2f5cc gi两标准109 datadir-cluster1-pxc-2绑定pvc - 90 - f0b2f8 - 9 - bba - 4262 - 904 - c - 1740 fdd5511b 10 gi两标准108 datadir-cluster1-pxc-3绑定pvc - 439 - bee13 - 3 - b57 - 4582 - b342 - 98281 - aca50ba 19 gi两标准49米datadir-cluster1-pxc-4绑定pvc - 2 - d4f3a60 4 ec4 - 48 - a0 - 96 cd - 5243 e2f0523419Gi RWO标准47米逐个删除存储容量旧的pvc和pod。等待数据同步完成后再继续到下一个节点。
新的PVC将与Pod一起创建。美元kubectl删除聚氯乙烯<聚氯乙烯美元名称>kubectl删除圆荚体<豆荚名称>
水平扩展¶
集群的大小由控件控制关键尺寸在自定义资源选项配置。这就是为什么伸缩集群只需要更改这个选项并应用更新后的配置文件。这可以在专门保存的配置中完成:
…规范:pxc:大小:5
应用更改:
美元kubectl应用- f部署/ cr.yaml
或者,你也可以使用下面的命令来执行:
美元kubectl规模-副本=5pxc / <集群名称>
在本例中,我们将Percona XtraDB集群的大小更改为雷竞技下载官网5实例。
自动缩放¶
为了自动化水平缩放,可以使用它卧式吊舱自动标度仪。它将扩展自定义资源本身,让Operator处理其他一切。
也可以使用Kuvernetes事件驱动自动缩放(KEDA),在这里您可以应用更复杂的逻辑来进行扩展决策。
目前,由于VPA为带有所有者引用的对象引入的限制,不可能与操作符一起使用Vertical Pod Autoscaler (VPA)。