在vSphere(带有Tanzu)的工作负载集群上部署Prometheus
在撰写完关于先前Harbor的文章后,我也顺便写下了搭建Prometheus时的备忘录。
根据此信息,指定使用TKG1.6软件包,并按照此链接中的步骤进行操作。
前提条件
下面所列是前提条件。
-
- vSphere7.0u2以上のworkload clusterを構築済み
-
- kubectlとtanzu-cli(v1.4以上)をインストール済み
Carvelツールが導入済み
yqのv4.5以上が導入済み
另外,这次是在这篇文章之后执行的内容,Kapp-controller、PackageRepository、cert-manager和Contour的安装已经完成,开始时是在已安装的状态下开始的。
Prometheus的安装
遵循 TKG 1.6 的官方文档。请注意 vSphere with Tanzu 的文档中未提及的内容。
获取最初可用的Prometheus软件包版本。
tanzu package available list prometheus.tanzu.vmware.com -A
export PROMETHEUS_VER=2.36.2+vmware.1-tkg.1
接下来,为了配置Prometheus,需要提取配置文件。
tanzu package available get prometheus.tanzu.vmware.com/$PROMETHEUS_VER --generate-default-values-file
使用抽取出来的配置文件(prometheus-default-values.yaml),将storageClass设置如下。
prometheus:
pvc:
storageClassName: xxxxx
alertmanager:
pvc:
storageClassName: xxxxx
启用Ingress。最终的更改如下所示。
@@ -20,7 +20,7 @@
pvc:
accessMode: ReadWriteOnce
storage: 2Gi
- storageClassName: default
+ storageClassName: xxxxx
service:
port: 80
targetPort: 9093
@@ -28,14 +28,10 @@
ingress:
alertmanager_prefix: /alertmanager/
alertmanagerServicePort: 80
- enabled: false
+ enabled: true
prometheus_prefix: /
prometheusServicePort: 80
- tlsCertificate:
- ca.crt: ca
- tls.crt: crt
- tls.key: key
- virtual_host_fqdn: prometheus.system.tanzu
+ virtual_host_fqdn: prometheus.tkg.tanzu
kube_state_metrics:
deployment:
replicas: 1
@@ -694,6 +690,7 @@
pvc:
accessMode: ReadWriteOnce
storage: 150Gi
+ storageClassName: xxxxx
service:
port: 80
targetPort: 9090
删除评论,并在开头插入’—‘ (如果没有’—‘,在安装软件包时可能无法正确解析文件)
yq -i eval '... comments=""' prometheus-default-values.yaml
sed -i '1i ---' prometheus-default-values.yaml
使用已创建的配置文件安装Prometheus。
export NAMESPACE=my-packages
tanzu package install prometheus \
--package-name prometheus.tanzu.vmware.com \
--version $PROMETHEUS_VER \
--values-file prometheus-default-values.yaml \
--namespace $NAMESPACE
--create-namespace
根据公式文档,根据vSphere with Tanzu安装命令,有时会返回错误消息Failed to get final advertise address: No private IP address found, and explicit IP not provided。在我的验证中未发生此错误,但如果发生,需要应用覆盖overlay来修改AlertManager参数。(详细信息请参见此处)
确认动作
由于本次使用了Contour,因此创建了HTTPProxy资源。
$ kubectl get httpproxy -n tanzu-system-monitoring
NAME FQDN TLS SECRET STATUS STATUS DESCRIPTION
prometheus-httpproxy prometheus.tkg.tanzu prometheus-tls valid Valid HTTPProxy
对于Contour的情况,EndPoint将成为Envoy。
$ kubectl get svc -n tanzu-system-ingress envoy
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
envoy LoadBalancer 10.102.115.203 10.220.46.101 80:30763/TCP,443:31909/TCP 15h
试着进行通信,就能发现通信已经成功。
$ curl -H "Host: prometheus.tkg.tanzu" 10.220.46.101 --head
HTTP/1.1 301 Moved Permanently
location: https://prometheus.tkg.tanzu/
vary: Accept-Encoding
date: Tue, 01 Nov 2022 10:15:37 GMT
server: envoy
transfer-encoding: chunked
当您在DNS服务器上注册了IP和FQDN,并且通过浏览器访问,您还可以访问到Prometheus的界面。
