作为一个管理人员数据平面为容器化应用提供服务,Spot Ocean为在云中运行容器提供了全方位的体验。Ocean与您选择的控制平面集成,并处理基础设施管理的关键领域,从供应计算和自动伸缩,到定价优化和适当调整。
Ocean架构的核心组件是Ocean控制器,这是Ocean和Kubernetes集群集成和交互的方式。Ocean控制器将pod元数据导出到Spot后端,并使Ocean能够采取自动化操作来管理、控制和优化基础设施。
海洋控制器是如何工作的?
通常每个集群部署一个控制器,由6个Kubernetes资源组成:雷竞技rabet官网
- ConfigMap
- 秘密(可选)
- ServiceAccount
- ClusterRole
- ClusterRoleBinding
- 部署
控制器根据配置的Spot Account ID、Spot令牌和每个集群指定的唯一集群标识符将Kubernetes集群绑定到相关的Ocean资源。Ocean负责管理集群基础设施,由于控制器位于Kubernetes集群中的一个pod中,因此控制器始终可用是至关重要的,这样Ocean才能适应新增加的工作负载。为了确保可靠性,控制器配置了优先级类(system-node-critical priorityClassName),以便Kubernetes调度器将优先级Ocean控制器pod,以防它被驱逐或变成挂起(由于缩小事件、滚动更新、节点不健康等)。
在Ocean控制器不可用的罕见情况下,集群的当前容量将由Spot平台维持。如果存在中断风险,在现场实例上运行的工作负载将被替换,按需回退仍然启用,工作负载可以继续利用已提交的容量。然而,在这种情况下,Ocean将无法对未决的pod(放大)或因优化原因而缩小的pod做出反应。还要注意,终止节点的安全排水将受到影响。
海洋控制器架构
Ocean控制器部署在Kubernetes集群中,与Kubernetes API和Metrics服务器通信,以获取数据并将数据发送到Ocean SaaS,后者负责做出扩展决策。在做出缩减决策的情况下,Ocean控制器将确保从集群中移除节点的优雅排泄过程。
控制器使用HTTPS协议进行通信,只需要对Ocean SaaS进行出口通信。
控制器的权限
Controller策略由如下所述的多个部分组成:
- 只读:读取数据的权限。Ocean功能运行所需。
- 节点/Pod操作:更新节点和驱逐Pod的权限。此部分用于排水、将节点更新为不可调度的以及清除pod。
- 清理功能:需要海洋aks引擎集成。
- CSR审批:CSR审批特性所必需的。
- 自动更新:该部分赋予控制器更新其部署和角色的权限。这只需要自动更新功能。
- 资源的完全CRUD:目前资源雷竞技rabet官网包括pods、deployment和daemonsets。这是运行工作负载特性所必需的。
- Ocean for Apache Spark: Ocean for Spark特性所需。
策略可以根据需要的能力进行调整。您可以安全地删除部分,如果您想选择某些功能。
你可以延伸海洋成本分析功能,CustomResourceDefinitions通过添加另一个ClusterRole和ClusterRoleBinding,当crd扩展Kubernetes API时,控制器必须知道特定的扩展名,以便查询和收集相关数据。
请注意:如果自动更新被禁用,这些修改可以直接对Ocean Controller ClusterRole对象进行。
控制器自动更新-禁用自动更新
默认情况下,控制器自动更新功能是启用的,允许用户获得最新的Ocean控制器版本。控制器更新提高了稳定性,性能,新的指标收集,并支持新的Kubernetes版本和功能。启用自动更新功能后,用户无需监控新的控制器版本或手动升级。用户可以查看版本历史在这里.
要禁用自动更新,在控制器configMap对象中添加disable-auto-update: " true "参数,并重新启动控制器(删除当前pod)。
更新过程
部署新版本时,由Spot开发人员管理更新。在此过程中,Controller Deployment和ClusterRole对象都会被更新。
请注意:如果控制器在发布周期内不可用(由于任何原因,包括使用关机/运行小时功能),它将不会更新,直到下一次控制器更新。
请注意:自动更新过程将覆盖用户应用的任何Role更改
代理使用,Proxy -url
对于使用代理进行出口通信的客户,Ocean控制器支持一个可选的Proxy -url参数。这允许从Ocean Controller发送到Ocean SaaS的流量通过配置的代理服务器。Controller版本1.0.45支持该特性。
静态端点,base-url
使用严格防火墙规则进行出口通信的客户可能需要在防火墙规则中配置静态IP地址。默认情况下,Ocean控制器使用以下端点与Ocean SaaS通信:api.spotinst.io。
Ocean控制器可以配置为通过具有静态IP地址的不同端点进行通信。如果您的配置需要此功能,请与Spot代表或Spot支持团队联系以获取更多详细信息。
证书签名请求(CSR)审批,enable-csr-approval
Kubernetes集群可以配置TLS引导为了保持通信私有、无干扰,并确保当节点加入集群时,它创建一个证书签名请求,该请求必须在节点注册并可以作为集群的一部分进行操作之前得到批准。
Ocean可以批准节点注册证书签名请求(csr),这可以通过向控制器configMap添加以下配置轻松使用:enable-csr-approval=true
启用Ocean时,Ocean控制器将只批准Ocean启动的节点的csr,从而消除未知节点注册到集群的风险。
注意:Ocean对GKE屏蔽节点的支持执行类似的实践,但不需要更改控制器configMap。
图像位置
Ocean Controller映像位于两个主要存储库中:
- Docker hub - spotinst/kubernetes-cluster-controller:最新的
- GCR - GCR .io/spotinst-artifacts/kubernetes-cluster-controller:latest
由于Docker集线器速率限制,我们的安装脚本默认使用GCR映像位置。
控制员没有报告?
遵循这个有用的方法故障排除指南。如果这些步骤不能解决问题,请通过控制台与我们的支持团队联系以寻求帮助。
总结
该控制器支持Ocean强大的自动化特性和功能,因此您可以快速有效地扩展完全优化的Kubernetes集群。