内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

免备案CDN_新网域名注册_哪个好

2021-06-10 01:13 出处:欧普曼云计算 人气: 评论(0

免备案CDN_新网域名注册_哪个好

最近,Kubernetes社区开始添加对运行大型有状态应用程序(如数据库、分析和机器学习)的支持。例如,您可以使用StatefulSet workload controller来维护每个pod的标识,并使用持久卷来持久化数据,使其能够在服务重新启动后生存。如果您的工作负载依赖于本地存储,您可以将PersistentVolumes与本地SSD一起使用,也可以将SSD persistent disk用作引导盘,以提高不同类型工作负载的性能。

但是,对于许多高级用例,如备份、还原和高可用性,这些核心Kubernetes原语可能还不够。这就是Kubernetes算子的用武之地。它们提供了一种通过使用自定义资源和自定义控制器的特定于应用程序的逻辑来扩展Kubernetes功能的方法。通过操作符模式,淘客基地,可以将特定应用程序的领域知识编码到kubernetesapi扩展中。使用它,您可以使用kubectl创建、访问和管理应用程序,就像您对Pods等内置资源所做的那样。

在Google Cloud,我们使用运营商更好地支持Kubernetes上的不同应用程序。例如,我们有用于以Kubernetes本地方式运行和管理Spark和Airflow应用程序的操作符。我们还在GCP市场上提供了这些运营商,以获得轻松的点击部署体验。Spark操作符代表用户自动运行Spark submit,为按计划运行Spark作业提供cron支持,超算云,支持自动应用程序重启和重试,并支持从本地Hadoop配置以及Google云存储装载数据。Airflow操作符为Airflow部署创建和管理必要的Kubernetes资源,并支持创建具有不同执行器的Airflow调度程序。

作为开发人员,我们在构建这些操作符时学到了很多。如果您正在编写自己的操作符来管理Kubernetes应用程序,下面是我们推荐的一些最佳实践。每个应用程序开发一个操作员

一个操作员可以自动化应用程序的各种功能,但它应该特定于单个应用程序。例如,Airflow通常与MySQL和Redis一起使用。您应该为每个应用程序开发一个操作符(即三个操作符),而不是一个包含所有三个操作符的操作符。这样就可以更好地分离每个应用程序的领域专业知识方面的关注点。使用像Kubebuilder

Kubebuilder这样的SDK是一个综合开发工具包,用于使用CRD构建和发布Kubernetes API和控制器。使用Kubebuilder,您可以轻松地编写操作符,而不必了解Kubernetes库是如何实现的所有底层细节。要了解更多信息,请查看Kubebuilder手册。

3。使用声明性API

为操作员设计声明性API,而不是命令式API。这与本质上是声明性的kubernetesapi非常吻合。使用声明式api,什么是物联网,用户只需表示所需的集群状态,同时让操作员执行所有必要的步骤即可实现。相反,使用命令式api时,原生淘客app,用户必须清楚地按顺序指定实现所需状态的步骤。通过多个控制器划分功能

应用程序可能具有不同的功能,如缩放、备份、恢复和监视。一个操作符应该由多个控制器组成,这些控制器专门处理这些特性中的每一个。例如,操作员可以有一个主控制器来生成和管理应用程序实例,一个备份控制器来处理备份操作,一个还原控制器来处理还原操作。这通过更好的抽象和更简单的同步循环简化了开发过程。请注意,每个控制器应对应于一个特定的CRD,以便每个控制器的职责范围是明确的。

5。使用异步同步循环

如果操作员在将当前集群状态调整到所需状态时检测到错误(例如,pod创建失败),则应立即终止当前同步调用并返回错误。然后,工作队列应在稍后安排重新同步;在解决错误之前,sync调用不应通过继续轮询集群状态来阻止应用程序。类似地,启动和监视长时间运行操作的控制器不应同步等待操作。相反,控制器应该返回睡眠状态,稍后再次检查。

监视和记录应用程序

一旦您编写了自己的操作员,您将需要为应用程序启用日志记录和监视。这对新手来说可能很复杂。以下是一些你可以遵循的最佳实践。执行应用程序级、节点级和集群级日志聚合

Kubernetes集群可能会变大,尤其是那些有状态应用程序的集群。如果为每个容器都保留一个日志,那么最终可能会出现无法管理的日志量。要解决这个问题,可以聚合日志。可以通过聚合容器日志并过滤出满足特定严重性和详细日志记录级别的日志消息来执行应用程序级日志记录。应用程序级聚合要求能够判断日志属于哪个应用程序。为此,您可能需要将特定于应用程序的详细信息集成到日志消息中,例如为应用程序名称添加前缀。

同样,对于节点级和群集级日志,您可以聚合节点或群集内的所有应用程序级日志。Kubernetes本机不支持此功能,因此您可能需要使用外部日志工具(如Google Stackdriver、Elasticsearch、Fluentd或Kibana)来执行聚合。

2。正确标记度量,以便于查看、聚合和分析

我们建议在度量中添加标签,以便通过监控系统进行聚合和分析。例如,如果您正在使用Prometheus来分析Prometheus风格的度量,那么添加的标签在查询和聚合度量方面对系统有很大帮助。通过pod端点公开应用程序度量以进行刮取

与将应用程序度量写入日志、文件或其他存储介质不同,一个更可行的选择是应用程序pod公开度量HTTP端点以用于监视刮取工具。这提供了更好的可发现性、一致性以及与度量分析工具(如googlestackdriver)的集成。实现这一点的一个好方法是使用开放源代码的特定于应用程序的导出器来公开普罗米修斯风格的度量标准。

要使在Kubernetes上运行有状态的应用程序像在虚拟机中一样简单,还需要做更多的工作,但是要使用Kubernetes操作符编写自定义控制器,我们已经走了很长的路。

关于Kubernetes和Google Kubernetes Engine(GKE)的开发者体验的更多见解,请查看这些最近的帖子:对于环境较小的开发者,请查看我们如何使其更容易和更经济地开始,对于那些希望直接从开发者那里学习的人,请查看我们策划的必看讲座列表涵盖各种重要话题。在接下来的几周里,我们将发布更多关于Kubernetes开发者体验的文章,因此请关注我们的系列文章,购物返利平台,并在@GCPcloud上关注我们的最新消息。

分享给小伙伴们:
本文标签: 备案新网域名注册哪个

相关文章

评论

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

签名: 验证码: 点击我更换图片

评论列表