helm repo add vm https://victoriametrics.github.io/helm-charts/
helm repo update
helm search repo vm/
NAME CHART VERSION APP VERSION DESCRIPTION
vm/victoria-logs-single 0.9.2 v1.14.0 Victoria Logs Single version - high-performance...
vm/victoria-metrics-agent 0.17.0 v1.113.0 Victoria Metrics Agent - collects metrics from ...
vm/victoria-metrics-alert 0.15.0 v1.113.0 Victoria Metrics Alert - executes a list of giv...
vm/victoria-metrics-anomaly 1.8.0 v1.20.0 Victoria Metrics Anomaly Detection - a service ...
vm/victoria-metrics-auth 0.10.0 v1.113.0 Victoria Metrics Auth - is a simple auth proxy ...
vm/victoria-metrics-cluster 0.19.0 v1.113.0 Victoria Metrics Cluster version - high-perform...
vm/victoria-metrics-common 0.0.41 Victoria Metrics Common - contains shared templ...
vm/victoria-metrics-distributed 0.9.0 v1.113.0 A Helm chart for Running VMCluster on Multiple ...
vm/victoria-metrics-gateway 0.8.0 v1.113.0 Victoria Metrics Gateway - Auth & Rate-Limittin...
vm/victoria-metrics-k8s-stack 0.39.0 v1.113.0 Kubernetes monitoring on VictoriaMetrics stack....
vm/victoria-metrics-operator 0.43.0 v0.54.1 Victoria Metrics Operator
vm/victoria-metrics-single 0.15.0 v1.113.0 Victoria Metrics Single version - high-performa...
helm pull vm/victoria-metrics-operator
如果遇到如下问题,说明需要科学上网,下载victoria-metrics-operator-0.43.0.tgz
压缩包
Error: Get "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-operator-0.43.0/victoria-metrics-operator-0.43.0.tgz": read tcp 10.0.2.21:36530->20.205.243.166:443: read: connection reset by peer
创建命名空间
kubectl create namespace vmtrics-monitor
tar -xvf victoria-metrics-operator-0.43.0.tgz
cd victoria-metrics-operator-0.43.0
helm install vmoperator . -f values.yaml -n vmtrics-monitor
如果已经可以科学上网可以直接使用如下命令:
helm install vmoperator vm/victoria-metrics-operator -f values.yaml -n vmtrics-monitor
安装成功提示
NOTES:
victoria-metrics-operator has been installed. Check its status by running:
kubectl --namespace vmtrics-monitor get pods -l "app.kubernetes.io/instance=vmoperator"
Get more information on https://github.com/VictoriaMetrics/helm-charts/tree/master/charts/victoria-metrics-operator.
See "Getting started guide for VM Operator" on https://docs.victoriametrics.com/guides/getting-started-with-vm-operator
这个helm install vmoperator . -f values.yaml -n vmtrics-monitor
执行后,需要等待一定的时间。检查victoria-metrics-operator是否启动成功
kubectl --namespace vmtrics-monitor get pods -l "app.kubernetes.io/instance=vmoperator"
大概会出现以下错误,是因为拉取不到镜像失败
NAME READY STATUS RESTARTS AGE
vmoperator-victoria-metrics-operator-5b8dc96466-zcc2g 0/1 ImagePullBackOff 0 13m
通过以下地址搜索国内镜像
https://docker.aityp.com/
修改values.yaml文件
image:
# -- Image registry
registry: ""
# -- Image repository
repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/operator #修改镜像仓库
# -- Image tag
# override Chart.AppVersion
tag: "v0.53.0" #修改镜像tag
再次参考安装情况
helm list --all-namespaces
kubectl get all -n vmtrics-monitor
显示结果
[root@mk8s-master op]# helm list --all-namespaces
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
vmoperator vmtrics-monitor 1 2025-03-14 17:02:58.383908049 +0800 CST deployed victoria-metrics-operator-0.43.0 v0.54.1
[root@mk8s-master op]# kubectl get all -n vmtrics-monitor
NAME READY STATUS RESTARTS AGE
pod/vmoperator-victoria-metrics-operator-684997574c-5sll5 1/1 Running 0 5m30s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/vmoperator-victoria-metrics-operator ClusterIP 10.106.48.186 <none> 8080/TCP,9443/TCP 5m30s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/vmoperator-victoria-metrics-operator 1/1 1 1 5m30s
NAME DESIRED CURRENT READY AGE
replicaset.apps/vmoperator-victoria-metrics-operator-684997574c 1 1 1 5m30s
创建文件vmcluster.yaml
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMCluster
metadata:
name: demo
namespace: vmtrics-monitor
spec:
retentionPeriod: "1"
replicationFactor: 2
vmstorage:
image:
repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/vmstorage
tag: v1.110.0-cluster
pullPolicy: Always
replicaCount: 1
storageDataPath: "/vm-data"
storage:
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
storageClassName: nfs-sc
resources:
requests:
storage: "1Gi"
resources:
limits:
cpu: "1"
memory: "1Gi"
vmselect:
image:
repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/vmselect
tag: v1.110.0-cluster
pullPolicy: Always
replicaCount: 1
cacheMountPath: "/select-cache"
storage:
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
storageClassName: nfs-sc
resources:
requests:
storage: "1Gi"
resources:
limits:
cpu: "1"
memory: "1Gi"
requests:
cpu: "0.5"
memory: "500Mi"
vminsert:
image:
repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/vminsert
tag: v1.110.0-cluster
pullPolicy: Always
replicaCount: 1
resources:
limits:
cpu: "1"
memory: "1Gi"
requests:
cpu: "0.5"
memory: "500Mi"
部署组件
kubectl apply -f vmcluster.yaml
查看组件部署结果
kubectl get pods -n vmtrics-monitor -l "app.kubernetes.io/instance=my-vm"
创建vmagent.yaml
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMAgent
metadata:
name: demo
namespace: vmtrics-monitor
spec:
image:
repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/vmagent
tag: v1.110.0
pullPolicy: Always
selectAllByDefault: true
remoteWrite:
- url: "http://vminsert-demo.vmtrics-monitor.svc:8480/insert/0/prometheus/api/v1/write"
部署vmagent.yaml
kubectl apply -f vmagent.yaml
查看是否启动
kubectl get pods -n vmtrics-monitor -l "app.kubernetes.io/instance=demo" -l "app.kubernetes.io/name=vmagent"
kubectl port-forward svc/vmagent-demo 8429:8429 -n vmtrics-monitor
vmagent-service.yaml
apiVersion: v1
kind: Service
metadata:
name: vmagent-demo-nodeport
namespace: vm
spec:
ports:
- name: http
port: 8429
protocol: TCP
targetPort: 8429
selector:
app.kubernetes.io/component: monitoring
app.kubernetes.io/instance: demo
app.kubernetes.io/name: vmagent
type: NodePort
创建vmservicescrape.yaml
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMServiceScrape
metadata:
name: vmoperator-demo
namespace: vmtrics-monitor
spec:
selector:
matchLabels:
app.kubernetes.io/instance: vmoperator
app.kubernetes.io/name: victoria-metrics-operator
namespaceSelector:
matchNames:
- vmtrics-monitor
endpoints:
- port: http
部署vmservicescrape.yaml
kubectl apply -f vmservicescrape.yaml
查看结果
kubectl get VMServiceScrape -n vmtrics-monitor
创建vmauth.yaml
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMAuth
metadata:
name: demo
namespace: vmtrics-monitor
labels:
app: vmauth-demo
spec:
image:
repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/vmauth
tag: v1.108.1
pullPolicy: Always
selectAllByDefault: true
userNamespaceSelector: {}
userSelector: {}
部署
kubectl apply -f vmauth.yaml
查看
kubectl get svc -n vmtrics-monitor | grep vmauth-demo
转发
kubectl port-forward svc/vmauth-demo 8427:8427 -n vmtrics-monitor
vmauth-service.yaml
apiVersion: v1
kind: Service
metadata:
name: vmauth-demo-nodeport
namespace: vm
spec:
ports:
- name: http
port: 8427
protocol: TCP
targetPort: 8427
selector:
app.kubernetes.io/component: monitoring
app.kubernetes.io/instance: demo
app.kubernetes.io/name: vmauth
type: NodePort
创建vmuser.yaml
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMUser
metadata:
name: demo
namespace: vmtrics-monitor
spec:
name: demo
username: demo
generatePassword: true
targetRefs:
# vmui + vmselect
- crd:
kind: VMCluster/vmselect
name: demo
namespace: vmtrics-monitor
target_path_suffix: "/select/0"
paths:
- "/vmui"
- "/vmui/.*"
- "/prometheus/api/v1/query"
- "/prometheus/api/v1/query_range"
- "/prometheus/api/v1/series"
- "/prometheus/api/v1/status/.*"
- "/prometheus/api/v1/label/"
- "/prometheus/api/v1/label/[^/]+/values"
部署
kubectl apply -f vmauth.yaml
查看是否部署成功
kubectl get secret -n vmtrics-monitor -l "app.kubernetes.io/instance=demo" -l "app.kubernetes.io/name=vmuser"
查看密码
kubectl get secret -n vm vmuser-demo -o jsonpath="{.data.password}" | base64 --decode
参考:
https://docs.victoriametrics.com/operator/quick-start/
https://docs.victoriametrics.com/operator/resources/vmcluster/index.html