我已使用以下简单命令在我的 EKS 集群上安装了 kube-prometheus-stack:
helm install prometheus-stack prometheus-community/kube-prometheus-stack -f values.yaml --namespace test
一切都很顺利。
values.yaml 文件非常简单:
alertmanager:
enabled: true
config:
inhibit_rules: # fire only once the Watchdog to test the chat
- source_matchers:
- 'alertname = Watchdog'
target_matchers:
- 'alertname = Watchdog'
route:
group_by: ['namespace']
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
receiver: 'telegram_receiver'
routes:
receivers:
- name: 'telegram_receiver'
telegram_configs:
- api_url: 'https://api.telegram.org'
bot_token: 'my-token'
chat_id: -00000000
templates:
- '/etc/alertmanager/config/*.tmpl'
alertmanagerSpec:
logFormat: logfmt
logLevel: info
replicas: 1
grafana:
enabled: true
defaultDashboardsEnabled: true
defaultDashboardsTimezone: utc
grafana.ini:
auth.anonymous:
enabled: true
org_id: 1
org_role: Viewer
# Add dashboard
dashboardProviders:
dashboardproviders.yaml:
apiVersion: 1
providers:
- name: 'default'
orgId: 1
folder: 'default'
type: file
disableDeletion: true
editable: true
options:
path: /var/lib/grafana/dashboards/default
dashboards:
default:
my-dashboard:
json: |
{// stuff inside omitted since is huge}
kubeStateMetrics:
enabled: true
nodeExporter:
enabled: true
prometheusOperator:
enabled: true
prometheus:
enabled: true
检查一切似乎都正常后,我尝试使用以下命令卸载它:
helm uninstall prometheus-stack --namespace test
并且很少有东西从我的集群中删除(我实际上做了一些更改,尝试重新安装它并发现了很多垃圾)。基本上这就是卸载后继续运行的内容(
kubectl get all -n test
):
NAME READY STATUS RESTARTS AGE
pod/alertmanager-prometheus-stack-kube-prom-alertmanager-0 2/2 Running 0 48m
pod/prometheus-prometheus-stack-kube-prom-prometheus-0 2/2 Running 0 48m
pod/prometheus-stack-grafana-9c9f66cf6-zf22j 3/3 Running 0 48m
pod/prometheus-stack-kube-prom-admission-create-r64vx 0/1 Completed 0 48m
pod/prometheus-stack-kube-prom-admission-patch-t92zh 0/1 Completed 0 47m
pod/prometheus-stack-kube-prom-operator-845d754c86-ksxjv 1/1 Running 0 48m
pod/prometheus-stack-kube-state-metrics-6b79dfc54d-8mvjv 1/1 Running 0 48m
pod/prometheus-stack-prometheus-node-exporter-89kmz 1/1 Running 0 48m
pod/prometheus-stack-prometheus-node-exporter-x29dw 1/1 Running 0 48m
pod/prometheus-stack-prometheus-node-exporter-zdvbv 1/1 Running 0 48m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 48m
service/prometheus-operated ClusterIP None <none> 9090/TCP 48m
NAME DESIRED CURRENT READY AGE
replicaset.apps/prometheus-stack-grafana-9c9f66cf6 1 1 1 48m
replicaset.apps/prometheus-stack-kube-prom-operator-845d754c86 1 1 1 48m
replicaset.apps/prometheus-stack-kube-state-metrics-6b79dfc54d 1 1 1 48m
NAME READY AGE
statefulset.apps/alertmanager-prometheus-stack-kube-prom-alertmanager 1/1 48m
statefulset.apps/prometheus-prometheus-stack-kube-prom-prometheus 1/1 48m
有没有办法解决这个问题,以便我可以卸载它而不留下痕迹?与 helm 图表本身有关吗?是 helm 问题还是我的配置有问题?
我没有使用任何持久卷,也没有从 helm 收到任何警告/错误。
此外,作为一个额外但相关的事情(如果你碰巧知道为什么),我注意到,如果我从警报管理器中的
values.yaml
中删除空的route:
,则根本不会创建警报管理器,并且头盔也不会给出来自 cli 的任何错误...这对我来说似乎非常危险。
据我了解,helm 不会清理它在
install
过程中创建的所有内容。它确实删除了部署、服务、秘密和配置映射,但留下了副本集和 Pod 等对象。因此它只会清理模板 yaml 中明确描述的对象。
如果我在幕后理解正确的话,helm 库使用 Kubernetes 客户端与 Kubernetes API 进行通信。 kubectl 目前无法删除 RS 到 Deployment 以及 pod 到 RS 的子对象。
Helm 卸载通常不会删除服务帐户、角色、角色绑定、apiservices 等资源。您可以尝试在 helm 卸载后手动删除它们。还可以通过将标签与 helm 版本名称匹配来删除资源。您会发现这些标签附加到由 helm install 命令创建的所有资源上。
但你的情况似乎不同的状态集,pod和服务应该像往常一样被删除。确保您的 helm uninstall 命令成功执行,没有任何错误。