根据此问题的讨论,我使用内置的Prometheus配置了Istio(版本1.16.3),并使用内置的Prometheus运算符配置了Prometheus ServiceMonitor对象:https://github.com/istio/istio/issues/21187
在大多数情况下,此方法工作正常,但我注意到还创建了kubernetes-services-secure-monitor和kubernetes-pods-secure-monitor,这导致Prometheus抛出证书未找到错误,这是按预期的,因为我还没有设置这些。
"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
答案 0 :(得分:0)
两个单独的问题:升级到新版本的Istio和更新配置。
据我所知,将istio从较旧版本升级到1.4、1.5、1.6时,我们遇到很多问题,但是最近istioctl upgrade出现时,您不必担心升级集群。
istioctl upgrade命令执行Istio的升级。在执行升级之前,它会检查Istio安装是否满足升级资格标准。此外,如果它检测到Istio版本之间的配置文件默认值有任何更改,它还会提醒用户。
此外,Istio 1.6将支持新的升级模型,以安全地进行Canary部署Istio的新版本。在此新模型中,代理将与它们使用的特定控制平面相关联。这样一来,新版本就可以以较低的风险部署到群集中-在用户明确选择之前,没有代理可以连接到新版本。这样可以逐步将工作负载迁移到新的控制平面,同时使用Istio遥测技术监视变化以调查任何问题
正如我在评论中提到的,我发现可能有帮助的两件事是
如果更新出现问题,它将显示在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
希望您觉得这有用。