K8S?Operator部署及自定义详解(k8snode节点重启)这都可以

随心笔谈12个月前发布 admin
96 0



目录Kubernetes Operator是什么分析之前部署过的Prometheus Operator关于开发自定义的Operator

K8S Operator这个东西不好解释,这么说吧,比如有一个应用程序,并且想要将其部署到 k8s 上,并且希望能够实现自动化运维和可扩展性,那么就可以考虑使用 K8S Operator 的框架,将应用程序的管理逻辑抽象为 k8s 资源,并编写自定义 Operator 来管理和运维该应用程序。

还是有点懵?我举个例子:有一个基于 Kafka 的消息队列应用程序,想将其部署到 k8s 并实现自动化运维和可扩展性,就可以使用 Kubernetes Operator 的框架来管理和运维该应用程序了。

如果还是有疑问,更多详情可参考官方文档:kubernetes.io/zh-cn/docs/…

官方文档:prometheus-operator.dev/

查看Api Resources,发现prometheus被定义为了 Kubernetes API 中的一个自定义资源:

[root@k8s-a-master prometheus-operator]# kubectl api-resources | grep prometheus
prometheusagents promagent monitoring.coreos.com/v1alpha1 true PrometheusAgent
prometheuses prom monitoring.coreos.com/v1 true Prometheus
prometheusrules promrule monitoring.coreos.com/v1 true PrometheusRule
[root@k8s-a-master prometheus-operator]#

查看用于定义 Prometheus 实例的自定义资源类型:

[root@k8s-a-master prometheus-operator]# kubectl get prometheus
NAME VERSION DESIRED READY RECONCILED AVAILABLE AGE
prometheus 3 3 True True 54s

下面的yaml文件是我之前用来创建prometheus实例的,通过它可以自动创建、更新和删除 Prometheus 实例:

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: prometheus
spec:
serviceAccountName: prometheus
replicas: 3
alerting:
alertmanagers:
– namespace: default
name: alertmanager-example
port: web
serviceMonitorSelector:
matchLabels:
team: frontend
podMonitorSelector:
matchLabels:
team: frontend
resources:
requests:
memory: 400Mi
enableAdminAPI: false
ruleSelector:
matchLabels:
role: alert-rules
prometheus: example
ruleNamespaceSelector: {}

上面yaml中 “kind: Prometheus” 是 Prometheus Operator 用于创建 Prometheus 实例的 Kubernetes 自定义资源类型之一。

接下来看看带3个副本的prometheus pod:

[root@k8s-a-master prometheus-operator]# kubectl get pod
NAME READY STATUS RESTARTS AGE
prometheus-prometheus-0 2/2 Running 0 22s
prometheus-prometheus-1 2/2 Running 0 22s
prometheus-prometheus-2 2/2 Running 0 22s

小总结

通过简单分析已经很清楚了,Prometheus Operator 是一个 Kubernetes 控制器,它负责监视 Kubernetes API 中的 Prometheus 资源(包括 kind: Prometheus)的变化,并根据资源定义来管理 Prometheus 实例。Prometheus Operator 可以根据 Prometheus 自定义资源中定义的规则来创建、更新和删除 Prometheus 实例,并且支持自动发现和配置 Prometheus 监控对象,如 Kubernetes Service、Pod 等。

因此,可以将 Prometheus Operator 看作是一种控制器,它通过管理 Kubernetes API 中的 Prometheus 自定义资源,来实现Prometheus 实例的自动化部署和管理。

我很想分享一个开发自定义Operator的案例,但我现在能力有限,不能很快的给大家分享。当然了,我也在不断的摸索、学习。争取下次分享出来。

如果想要开发自己的 Operator,这个事情还是有一定难度的,至少需要做好以下技能的储备:

Kubernetes基础:了解 K8S 的基本概念,包括 Pod、Service、Deployment、StatefulSet、DaemonSet 等等。Go语言:Operator SDK 基于 Go 编写,因此需要掌握 GoOperator SDK:Operator SDK 是开发 K8S Operator 的开发工具,需要掌握其使用方法。(这一块我自己还是没有去看的,需要抽个时间好好看看)Kubernetes API:需要了解 K8S API 的使用方式,可以通过 K8S Go client 来与 K8S API 交互。(关于API的使用套路,前面有分享过,可以翻阅。)

关于提到Go语言,其实我一直都在建议运维工程师要把Go学好,如果想要在云原生运维领域深扎、做到高级,不懂Go是不行的,这就是我为什么会偶尔都要分享一下Go的知识。

以上就是K8S Operator部署及自定义详解的详细内容,更多关于K8S Operator部署的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:K8S?prometheus?operator监控工作原理介绍详解k8s?NetworkPolicy?网络策略是怎么样的k8s Job 执行一次性以及批处理任务使用场景案例k8s?Service?实现服务发现和负载均衡k8s?Ingress实现流量路由规则控制的定义格式类型kubeadm?init快速搭建k8s源码解析K8S-ConfigMap实现应用和配置分离详解带你学会k8s?更高级的对象Deployment

© 版权声明

相关文章