在逛 Reddit 时看到 这篇帖子 发现 beszel 这个熟悉又陌生的名字。看了一下官网发现还支持 kubernetes 的部署,直接使用 daemonset
就可以在所有节点自动部署 agent
,虽然还需要手动在 hub
添加,但已经很方便,用了一下不错。
作为轻量级的 k3s/k8s 集群监控方案确实不错,比 kube-prometheus-stack
这样的庞然大物轻便太多,解决轻量的监控和告警需求。
下面直接贴出 hub
和 agent
的 manifests
:
hub
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: beszel-zgus1-pvc
namespace: beszel
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: local-zgus1
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: app
namespace: beszel
labels:
app: beszel
spec:
replicas: 1
selector:
matchLabels:
app: beszel
template:
metadata:
annotations: {}
labels:
app: beszel
spec:
#nodeSelector:
# kubernetes.io/hostname: zgocloud-us1
containers:
- name: app
image: henrygd/beszel:0.11.1
ports:
- containerPort: 8090
name: web
env:
- name: TZ
value: "Asia/Shanghai"
volumeMounts:
- name: beszel-data
mountPath: /beszel_data
volumes:
- name: beszel-data
persistentVolumeClaim:
claimName: beszel-zgus1-pvc
---
apiVersion: v1
kind: Service
metadata:
name: beszel
namespace: beszel
spec:
selector:
app: beszel
ports:
- name: web
port: 8090
targetPort: 8090
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: beszel-ingress
namespace: beszel
annotations:
cert-manager.io/cluster-issuer: "cf-cluster-issuer"
spec:
ingressClassName: nginx
tls:
- hosts:
- <YOUR DOMAIN>
secretName: <YOUR DOMAIN TLS SECRET NAME>
rules:
- host: <YOUR DOMAIN>
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: beszel
port:
name: web
agent
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: agent
namespace: beszel
spec:
selector:
matchLabels:
app: agent
template:
metadata:
labels:
app: agent
spec:
hostNetwork: true
containers:
- env:
- name: LISTEN
value: '45876'
- name: KEY
value: 'YOUR-KEY-HERE'
image: henrygd/beszel-agent:latest
imagePullPolicy: Always
name: beszel-agent
ports:
- containerPort: 45876
hostPort: 45876
restartPolicy: Always
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master
operator: Exists
- effect: NoSchedule
key: node-role.kubernetes.io/control-plane
operator: Exists
updateStrategy:
rollingUpdate:
maxSurge: 0
maxUnavailable: 100%
type: RollingUpdate
注意,agent
使用了hostNetwork
网络,实现对宿主机网络的监控并监听 45876
端口,需放通端口后在可以在 hub
加入。如果不使用这个模式,会收集不到网络数据,看到的带宽情况一直是 0
.