[k8s] 关于在Kubernetes上安装Grafana + Prometheus的故事

首先

这篇文章是”打造家庭Kubernetes环境”系列的其中一篇。上一篇我们在VPS上搭建了Next.js加上nginx服务器并进行了发布。

 

我计划在这次尝试中,在VPS上搭建的集群上运行Grafana。

环境

    • lemon: Kagoya Cloud VPS 2コア 2GB

 

    lime: Kagoya Cloud VPS 2コア 2GB

柠檬和酸橙是机器的名称。

    • デプロイツール: kubeadm

 

    • CRI: cri-dockerd

 

    CNI: Weave net

安装Helm。

由于还没有安装Helm,我按照文档进行了安装。

Ubuntu的使用↓

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

安装Prometheus

从Helm Charts安装。

添加存储库

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

创建命名空间

apiVersion: v1
kind: Namespace
metadata:
  name: prometheus

安装

helm install -n prometheus prometheus prometheus-community/prometheus

安装CSI驱动程序

如果尚未安装,请先进行安装。我们决定这次使用longhorn。CSI相关的内容将在另一个机会进行详细调研。

最初我试图在minikube上尝试,但似乎无法在minikube上运行,所以我放弃了。(参考:https://github.com/longhorn/longhorn/discussions/2702)

添加仓库

helm repo add longhorn https://charts.longhorn.io
helm repo update

创建一个命名空间

kubectl create namespace longhorn-system

安装

helm install longhorn longhorn/longhorn --namespace longhorn-system

确认Longhorn周围的Pod和Service已成功启动。

$ kubectl get pods -n longhorn-system --watch
NAME                                                READY   STATUS    RESTARTS   AGE
csi-attacher-79b44f5d-f2x2z                         1/1     Running   0          3m7s
csi-attacher-79b44f5d-fxf7v                         1/1     Running   0          3m7s
csi-attacher-79b44f5d-qv4p6                         1/1     Running   0          3m7s
csi-provisioner-c5bb4fff7-d4vx2                     1/1     Running   0          3m7s
csi-provisioner-c5bb4fff7-shhbj                     1/1     Running   0          3m7s
csi-provisioner-c5bb4fff7-smn68                     1/1     Running   0          3m7s
csi-resizer-8cc975c7f-5sxh6                         1/1     Running   0          3m7s
csi-resizer-8cc975c7f-ltpb7                         1/1     Running   0          3m7s
csi-resizer-8cc975c7f-rxbph                         1/1     Running   0          3m7s
csi-snapshotter-58bb8475bc-dq2kn                    1/1     Running   0          3m7s
csi-snapshotter-58bb8475bc-gbbpx                    1/1     Running   0          3m7s
csi-snapshotter-58bb8475bc-w9rrx                    1/1     Running   0          3m7s
engine-image-ei-68f17757-l8zbb                      1/1     Running   0          3m13s
instance-manager-d93c79dee0d0c8a4537d711203fe7489   1/1     Running   0          3m13s
longhorn-csi-plugin-f5w8l                           3/3     Running   0          3m6s
longhorn-driver-deployer-7cc7cc8559-fgpkp           1/1     Running   0          3m51s
longhorn-manager-284sp                              1/1     Running   0          3m51s
longhorn-ui-7c667cb6fc-9pnsd                        1/1     Running   0          3m51s
longhorn-ui-7c667cb6fc-v5mth                        1/1     Running   0          3m51s

$ kubectl get svc -n longhorn-system
NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
longhorn-admission-webhook    ClusterIP   10.103.109.251   <none>        9502/TCP   6m1s
longhorn-backend              ClusterIP   10.96.249.117    <none>        9500/TCP   6m1s
longhorn-conversion-webhook   ClusterIP   10.111.32.198    <none>        9501/TCP   6m1s
longhorn-engine-manager       ClusterIP   None             <none>        <none>     6m1s
longhorn-frontend             ClusterIP   10.111.152.92    <none>        80/TCP     6m1s
longhorn-recovery-backend     ClusterIP   10.107.29.92     <none>        9503/TCP   6m1s
longhorn-replica-manager      ClusterIP   None             <none>        <none>     6m1s

安装Grafana

添加存储库。

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

我們將寫入設定文件,並指定資料來源為我們之前引入的prometheus。同時,為了永久保存資料,我們設定了persistence,並將storageClassName指定為之前引入的longhorn。

datasources:
  datasources.yaml:
    apiVersion: 1
    datasources:
      - name: "Prometheus"
        type: prometheus
        access: proxy
        url: http://prometheus-server.prometheus.svc.cluster.local
persistence:
  enabled: true
  storageClassName: longhorn
  size: 1Gi
helm install -n grafana grafana grafana/grafana -f grafana/helm-values.yaml

请记录下获取登录Grafana控制台所需密码的命令,并获取密码。

安装Ingress。

为了让外部能够访问Grafana的控制台,我们需要进行Ingress的设置。
我们将使用ingress-nginx作为Ingress的配置。

如果您是第一次使用ingress-nginx,需要进行安装。

helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx --create-namespace

编写配置文件。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: grafana-ingress
  namespace: grafana
spec:
  ingressClassName: nginx
  rules:
    - host: grafana.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: grafana
                port:
                  number: 80

通过创建并访问显示的IP地址,您可以查看Grafana的控制台。

$ kubectl get ingress -n grafana
NAME              CLASS   HOSTS                 ADDRESS         PORTS   AGE
grafana-ingress   nginx   grafana.example.com   192.168.11.61   80      4m4s

最后一步

这次我们引入了Grafana来建立监控集群的基础设施。然而目前登录Grafana控制台时,仪表板上还没有任何设置。下次我们将继续进行Grafana仪表板的配置。

请查看参考文献。

 

广告
将在 10 秒后关闭
bannerAds