在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的界面。

1667297832334.png
bannerAds