[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仪表板的配置。
请查看参考文献。