istio - 使用更新的配置安装 Istio 不会删除 Prometheus ServiceMonitor 对象
问题描述
我使用外部 Prometheus 配置了 Istio(版本 1.16.3),并且根据本期的讨论,我使用内置 Prometheus 运算符配置了 Prometheus ServiceMonitor 对象:https ://github.com/istio/istio/issues/ 21187
在大多数情况下,这工作正常,除了我注意到 kubernetes-services-secure-monitor 和 kubernetes-pods-secure-monitor 也被创建,这导致 Prometheus throwing certificate not found 错误,正如预期的那样,因为我没有设置这些了。
"level=error ts=2020-07-06T03:43:33.464Z caller=manager.go:188 component="scrape manager" msg="error creating new scrape pool" err="error creating HTTP client: unable to load specified CA cert /etc/prometheus/secrets/istio.prometheus/root-cert.pem: open /etc/prometheus/secrets/istio.prometheus/root-cert.pem: no such file or directory" scrape_pool=istio-system/kubernetes-pods-secure-monitor/0
我还注意到,可以通过使用 Values.prometheus.provisionPrometheusCert 标志来禁用服务监视器的创建,如下所示:
istio/manifests/charts/istio-telemetry/prometheusOperator/templates/servicemonitors.yaml
{{- if .Values.prometheus.provisionPrometheusCert }}
但是,使用 `istioctl install 重新应用配置并没有删除这些服务监视器。
istioctl install 命令不会删除/修剪现有资源吗?
这是我的完整配置:
apiVersion: install.istio.io/v1alpha1
kind: IstioControlPlane
metadata:
namespace: istio-system
name: istio-controlplane
labels:
istio-injection: enabled
spec:
profile: default
addonComponents:
prometheus:
enabled: false
prometheusOperator:
enabled: true
grafana:
enabled: false
kiali:
enabled: true
namespace: staging
tracing:
enabled: false
values:
global:
proxy:
logLevel: warning
mountMtlsCerts: false
prometheusNamespace: monitoring
tracer:
zipkin:
address: jaeger-collector.staging:9411
prometheusOperator:
createPrometheusResource: false
prometheus:
security:
enabled: false
provisionPrometheusCert: false
解决方案
两个不同的问题:升级到新版本的 Istio 和更新配置。
升级
据我所知,在将 istio 从旧版本升级到 1.4、1.5、1.6 时会遇到很多问题,但是最近当istioctl upgrade出现时,您不必担心升级集群。
istioctl upgrade 命令执行 Istio 的升级。在执行升级之前,它会检查 Istio 安装是否符合升级资格标准。此外,如果检测到 Istio 版本之间的配置文件默认值有任何变化,它也会提醒用户。
此外,Istio 1.6 将支持新的升级模型,以安全地金丝雀部署新版本的 Istio。在这个新模型中,代理将与他们使用的特定控制平面相关联。这允许以较小的风险将新版本部署到集群 - 在用户明确选择之前,没有代理连接到新版本。这允许逐步将工作负载迁移到新的控制平面,同时使用 Istio 遥测监控更改以调查任何问题
更新
正如我在评论中提到的,我发现可能有帮助的两件事是
- istioctl 操作员日志
如果您的更新出现问题,那么它将出现在 istio 操作员日志中,并且更新将失败。
您可以通过检查操作员控制器日志来观察控制器在集群中响应 IstioOperator CR 更新所做的更改:
$ kubectl logs -f -n istio-operator $(kubectl get pods -n istio-operator -lname=istio-operator -o jsonpath='{.items[0].metadata.name}')
验证安装是否成功 您可以使用 verify-install 命令检查 Istio 安装是否成功,该命令将集群上的安装与您指定的清单进行比较。
如果您在部署之前没有生成清单,请运行以下命令立即生成它:
$ istioctl manifest generate <your original installation options> > $HOME/generated-manifest.yaml
然后运行以下 verify-install 命令查看是否安装成功:
$ istioctl verify-install -f $HOME/generated-manifest.yaml
希望您觉得这个有帮助。
推荐阅读
- java - 如何使用 Axis 1 在 Tomcat 7 中解决此 LinkageError
- r - 需要帮助将匹配因子转换为向量以创建虚拟变量
- python - Django 通道 2 异步检索数据并将数据保存到数据库
- git - 如何使用 GIT 同步计算机和笔记本电脑之间的项目?
- ios - CVPixelBuffer 到 CGImage 并按比例缩小
- xaml - Xamarin Forms Label & Entry on one line using XAML
- sql - 条件 Where 语句
- python - 为什么比较浮点结果时循环不开始?
- python - 比较每一行的数据框列中的元素 - Python
- go-echo - Golang echo中间件重定向与空页面