K8S Operator部署及自定义详解

 更新时间:2023年04月27日 11:12:02   作者:不背锅运维  
这篇文章主要为大家介绍了K8S Operator部署及自定义详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Kubernetes Operator是什么

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

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

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

分析之前部署过的Prometheus Operator

官方文档: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的案例,但我现在能力有限,不能很快的给大家分享。当然了,我也在不断的摸索、学习。争取下次分享出来。

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

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

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

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

相关文章

  • k8s编排之Deployment知识点详解

    k8s编排之Deployment知识点详解

    这篇文章主要为大家介绍了k8s编排之Deployment知识点详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 关于CentOS7日志文件及journalctl日志查看方法

    关于CentOS7日志文件及journalctl日志查看方法

    这篇文章主要介绍了关于CentOS7日志文件及journalctl日志查看方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Istio 自动注入 sidecar 失败导致无法访问webhook服务的解决方法

    Istio 自动注入 sidecar 失败导致无法访问webhook服务的解决方法

    最近工作中在部署Istio环境的过程中发现官方示例启动的pod不能访问不到Istio的webhook,这个问题也是困扰了我一天,我把他归类到sidecar注入失败的情况下,本文给大家分享问题解决方法,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • k8s自动化安装脚本(二进制)的操作步骤

    k8s自动化安装脚本(二进制)的操作步骤

    Kubernetes k8s安装脚本,非常好用,下面这篇文章主要给大家介绍了关于k8s自动化安装脚本(二进制)的操作步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • kubernetes Volume存储卷configMap学习笔记

    kubernetes Volume存储卷configMap学习笔记

    这篇文章主要为大家介绍了kubernetes Volume存储卷configMap学习笔记,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • K8s-helm简介及基本概念详解

    K8s-helm简介及基本概念详解

    ​Helm 使用的包格式称为 chart,它是一个描述 Kubernetes 相关资源对象的文件集合,这篇文章主要介绍了K8s-helm简介及基本概念,需要的朋友可以参考下
    2022-07-07
  • centos7部署k8s集群1.28.2版本完整步骤

    centos7部署k8s集群1.28.2版本完整步骤

    部署Kubernetes集群需要多台物理机或虚拟机,每个节点至少需要2个CPU、2GB内存和20GB硬盘空间,这篇文章主要给大家介绍了关于centos7部署k8s集群1.28.2版本的相关资料,需要的朋友可以参考下
    2024-01-01
  • helmfile声明式部署Helm Chart使用详解

    helmfile声明式部署Helm Chart使用详解

    这篇文章主要为大家介绍了helmfile声明式部署Helm Chart使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 阿里云oss对象存储使用详细步骤

    阿里云oss对象存储使用详细步骤

    本文主要介绍了阿里云oss对象存储使用详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 一文讲解如何获取k8s容器里运行的jar包

    一文讲解如何获取k8s容器里运行的jar包

    K8S是Google开源的容器集群管理系统,其设计目标是在主机集群之间提供一个能够自动化部署、可拓展、应用容器可运营的平台,这篇文章主要给大家介绍了关于如何获取k8s容器里运行的jar包的相关资料,需要的朋友可以参考下
    2022-09-09

最新评论