参考文档:
Charmed Kubernetes 的设计足够灵活,可以高效地运行您的工作负载。 Charmed Kubernetes 的各种组件可以水平扩展以满足需求或提高可靠性,如下所述。
注意:此处的信息用于扩展已安装的 Kubernetes® 本身。有关 pod 自动缩放的信息,请参阅 Kubernetes自动缩放文档以获取详细信息。
kubernetes-master 节点充当集群的控制平面。 Charmed Kubernetes 设计有单独的主节点,以便这些节点可以独立于工作单元进行扩展,以提供更高的效率和灵活性。
可以像这样添加额外的单元:
juju add-unit kubernetes-master
要添加多个单元,您还可以指定一个数值
juju add-unit kubernetes-master -n 3
由于 Kubernetes 工作节点处理实际工作负载,它们通常运行在具有更多资源的机器上。 Juju 使用constraits来维护单元的资源配置文件。
您可以使用以下命令检查当前约束:
juju get-constraints kubernetes-worker
这将返回当前设置,例如:
cores=4 mem=4096M root-disk=16384M
要使用此资源配置文件创建额外的 kubernetes-worker 单元,您只需运行:
juju add-unit kubernetes-worker
要添加多个单位,您可以指定一个数字(例如 2)
juju add-unit kubernetes-worker -n 2
要添加具有特定新资源限制的附加单元,也可以在命令中指定这些单元。例如:
juju add-unit kubernetes-worker -n 2 --constraints “mem=6G cores=2”
.将导致添加两个新的 kubernetes-worker 单元,至少有 2 个内核、6G 内存和 16G 存储(因为继承了现有的应用程序约束)。
要更改 kubernetes-worker 未来所有单元的限制,您可以设置不同的限制,如下所示:
juju set-constraints kubernetes-worker cores=2 mem=6G root-disk=16G
请注意,在这种情况下,您提供的任何约束都将替换所有现有的约束,因此在此示例中,我们还包括现有的根磁盘要求。
注意:限制旨在提供所需的最小值。这可能导致实际实例远远超过这些值,具体取决于支持云。
如果工作负载减少,还可以缩减工作节点的数量。为了安全地执行此操作,可以暂停要删除的节点。
juju run-action kubernetes-worker/3 pause --wait
暂停工作程序将向 Kubernetes 表明它已停止服务。任何工作负载都将迁移到替代工作单元。您可以使用以下命令验证这一点:
kubectl get pod -o wide
然后可以安全地移除单个单元(在本例中为 3):
juju remove-unit kubernetes-worker/3
请注意,由于 Juju 使用的编号系统,如果您随后添加此应用程序的其他单元,则任何先前删除的单元的编号 _ 将不会被重新使用。
Charmed Distribution of Kubernetes® 为 etcd 安装了一个三机集群,它提供了对单个故障的容忍度。如果您希望扩展容错,您可以添加额外的 etcd 单元。
juju add-unit etcd -n 2
etcd 的推荐集群大小是三、五或七台机器。由于同步数据,添加大量附加单元会对性能产生负面影响。
在 Charmed Kubernetes 的默认部署中,只有一个控制器实例,这对于关键应用程序来说是不可取的。可以横向扩展控制器本身以防止单点故障。
Juju 支持高可用性模式以运行具有自动故障转移的多个控制器。
单个命令将自动为 Juju 创建和维护高可用性
juju enable-ha
您可以通过列出控制器模型中的机器来验证是否已添加其他机器:
juju machines -m controller
有关更详细的指南,请参阅 Juju 高可用性文档。
以下是实际操作:
因为原来部署的kubernetes master节点的约束是"root-disk=16G mem=4G cores=2",运行几天后,master节点的机器被log充满,所以准备增加新的master节点,并变更约束为root-disk 为60G。
增加两个两块cpu,内存4G,硬盘60G的kubernetes master节点:
juju add-unit kubernetes-master --n 2 --constraints="root-disk=60G mem=4G cores=2"
或者,也可以先增加带约束的机器,再增加单元到新增的机器。
增加机器,硬盘60G,内存4G,cpu数量2
juju add-machine --constraints="root-disk=60G mem=2G cores=2"
machine 24
然后再增加单元到此24机器
juju add-unit kubernetes-maseter --to 24
然后可以将原先的master/0和master/1节点暂停:
juju run-action kubernetes-master/0 pause --wait
juju run-action kubernetes-master/1 pause --wait
删除master/0和master/1节点
juju remove-unit master/0 --wait
juju remove-unit master/1 --wait