Ops-controller-manager

功能简介

ops-controller-manager 是一个 Kubernetes Operator。它提供了三种对象:Host, Cluster, Task

Host

Host 对象用于描述一个主机,比如主机名,IP 地址,SSH 用户名,SSH 密码,SSH 私钥等。

Cluster

Cluster 对象用于描述一个集群,比如集群名,集群的主机数量、Pod 数量、负载、CPU、内存等。

Task

Task 对象用于描述一个任务,比如一次性任务、周期任务。

安装

前置要求

  • Kubernetes 1.19+
  • Helm 3.0+
  • NATS 服务器(可选,但推荐用于事件流)

安装 Helm

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

添加 Helm 仓库

helm repo add ops https://www.chenshaowen.com/ops/charts
helm repo update

安装 ops-controller-manager

基础安装:

使用默认配置安装:

helm install myops ops/ops --version 2.0.0 --namespace ops-system --create-namespace

使用自定义值安装:

可以使用 --set 参数自定义配置:

helm install myops ops/ops --version 2.0.0 \
  --namespace ops-system \
  --create-namespace \
  --set controller.env.eventEndpoint="http://app:password@nats-headless.ops-system.svc:4222" \
  --set replicaCount=2 \
  --set resources.limits.memory=4096Mi

使用 values 文件安装:

创建自定义 values 文件以进行更复杂的配置:

# my-values.yaml
replicaCount: 2

controller:
  env:
    activeNamespace: "ops-system"
    eventEndpoint: "http://app:password@nats-headless.ops-system.svc:4222"
    defaultRuntimeImage: "registry.cn-beijing.aliyuncs.com/opshub/ubuntu:22.04"

server:
  env:
    eventEndpoint: "http://app:password@nats-headless.ops-system.svc:4222"

resources:
  limits:
    cpu: 2000m
    memory: 4096Mi
  requests:
    cpu: 1000m
    memory: 2048Mi

prometheus:
  enabled: true

autoscaling:
  enabled: true
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 80

然后使用 values 文件安装:

helm install myops ops/ops --version 2.0.0 \
  --namespace ops-system \
  --create-namespace \
  -f my-values.yaml

查看安装结果

安装后,检查 Pod 状态以确保一切正常运行:

# 检查 Pod
kubectl get pods -n ops-system

# 检查 Service
kubectl get svc -n ops-system

# 检查 Deployment
kubectl get deployments -n ops-system

升级安装

升级现有安装:

helm upgrade myops ops/ops --version 2.0.0 --namespace ops-system

或使用自定义值:

helm upgrade myops ops/ops --version 2.0.0 \
  --namespace ops-system \
  -f my-values.yaml

卸载

卸载 ops-controller-manager:

helm uninstall myops --namespace ops-system

配置

命名空间配置

默认情况下,ops-controller-manager 只会处理 ops-system 命名空间下的 CRD 资源。

如果需要变更,可以修改 Helm values 中的 controller.env.activeNamespace 值。如果为空,则会处理所有命名空间的资源。

使用 --set:

helm install myops ops/ops --version 2.0.0 \
  --namespace ops-system \
  --create-namespace \
  --set controller.env.activeNamespace=""

使用 values 文件:

controller:
  env:
    activeNamespace: ""  # 空值表示所有命名空间

事件配置

为 controller 和 server 配置 NATS 事件端点:

controller:
  env:
    eventCluster: "default"
    eventEndpoint: "http://app:password@nats-headless.ops-system.svc:4222"

server:
  env:
    eventCluster: "default"
    eventEndpoint: "http://app:password@nats-headless.ops-system.svc:4222"

资源配置

配置资源限制和请求:

resources:
  limits:
    cpu: 2000m
    memory: 4096Mi
  requests:
    cpu: 1000m
    memory: 2048Mi

也可以为 server 单独配置资源:

server:
  resources:
    limits:
      cpu: 1000m
      memory: 2048Mi
    requests:
      cpu: 500m
      memory: 1024Mi

监控配置

启用 Prometheus 监控(创建 ServiceMonitor 资源):

prometheus:
  enabled: true

自动扩缩容配置

启用水平 Pod 自动扩缩容:

autoscaling:
  enabled: true
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 80
  targetMemoryUtilizationPercentage: 80

故障排查

查看 Pod 日志

# Controller 日志
kubectl logs -n ops-system deployment/myops-ops

# Server 日志
kubectl logs -n ops-system deployment/myops-ops-server

检查指标端点

# Controller 指标
kubectl port-forward -n ops-system svc/myops-ops-controller-metrics 8080:8080
curl http://localhost:8080/metrics

# Server 指标
kubectl port-forward -n ops-system svc/myops-ops-server 8080:80
curl http://localhost:8080/metrics

检查 ServiceMonitor

kubectl get servicemonitor -n ops-system

更多详细配置选项,请参阅 Helm Chart README

results matching ""

    No results matching ""

    results matching ""

      No results matching ""