我在使用WSL从Windows10的minikube上尝试使用prometheus-operator
我在公司内负责使用Kubernetes(K8s)进行开发。
我正在考虑如何监控服务,考虑使用与K8s兼容性较好的prometheus。
如果要引入prometheus,使用helm来安装prometheus-operator似乎是一种方便的方法。
我希望这个总结能帮助到使用Windows10环境的人。
关于环境
Windows10 : 版本1909
VirtualBox(Windows版本):6.1.8
minikube(Windows版本):v1.9.2
docker(Ubuntu版本):19.03.11
kubectl(Linux版本):客户端版本:v1.18.2
helm(Linux版本):v3.2.0
stable/prometheus-operator:图表版本:8.14.0
关于在Windows10上的准备事项
我先下载了VirtualBox和minikube的安装程序,然后进行了安装。
我从这里下载了VirtualBox,从这里下载了minikube。
关于在WSL上的预先准备工作
我会略过细节,但WSL是通过在[启用或禁用Windows功能]中启用”Windows子系统 for Linux”功能来进行激活的。
从Microsoft Store安装了Ubuntu 18.04 LTS。
启动WSL后,我使用sudo -i命令切换到root用户来进行工作。
kubectl是根据这里的参考添加二进制文件进行安装,而docker则是根据这里的参考添加存储库进行安装。
另外,为了能够处理在WSL中安装的minikube并与Windows进行交互,我根据这里提供的参考资料,进行了以下方式的config设置。请根据您的环境将{{WindowsAccountName}}适当更改。
请确认使用 minikube ip 命令来查看从浏览器访问时的 IP 地址,并确保启用 ingress 插件。
:~# mkdir ~/.kube
:~# cp /mnt/c/Users/{{WindowsAccountName}}/.kube/config ~/.kube/
:~# sed -i -e 's|\\|/|g' -e 's|C:|/mnt/c|g' ~/.kube/config
:~# ln -s /mnt/c/Program\ Files/Kubernetes/Minikube/minikube.exe /usr/local/sbin/minikube
:~# minikube start
:~# minikube ip
:~# minikube addons enable ingress
helm 是根据这个链接的参考,执行了 get-helm-3 脚本,并成功安装了。
安装 Prometheus-operator。
安装 Prometheus 操作员后,将同时安装与 Prometheus 相关的 Alertmanager / Grafana,非常方便。
为了安装 Prometheus,我准备了一个名为 sample01space 的命名空间。
为了方便识别,在访问 prometheus/grafana 时,我自定义了 URL 设置,并将发布名称设置为 monitor 进行安装。
:~# helm repo add stable https://kubernetes-charts.storage.googleapis.com
:~# kubectl create namespace sample01space
:~# helm install monitor -n sample01space stable/prometheus-operator -f custom-values.yaml
prometheus:
prometheusSpec:
externalUrl: /sample01space/prom
routePrefix: /sample01space/prom/
grafana:
grafana.ini:
server:
root_url: /sample01space/grafana
serve_from_sub_path: "true"
在访问 Prometheus Web UI 时添加身份验证。
根据我们的观察,访问 Prometheus 的 Web UI 时似乎没有特别的身份验证。因此,我们使用了 Ingress 来添加简单的身份验证。
:~# apt install apache2-utils
:~# htpasswd -c auth admin
:~# kubectl create secret generic basic-auth --from-file=auth -n sample01space
:~# kubectl create -f ingress.yaml -n sample01space
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: monitor-ingress
namespace: sample01space
annotations:
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: basic-auth
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /?(.*)
backend:
serviceName: monitor-prometheus-operato-prometheus
servicePort: 9090
- path: /sample01space/altm/?(.*)
backend:
serviceName: alertmanager-operated
servicePort: 9093
- path: /sample01space/grafana/?(.*)
backend:
serviceName: monitor-grafana
servicePort: 80
完成以上操作后,通过浏览器访问下面的网址,将会要求进行认证,在输入通过 admin 和 htpasswd 设置的密码后,将会显示相关内容。
/prom/ 对应 Prometheus 的 Web UI,/altm/ 对应 Alertmanager 的 Web UI,/grafana/ 对应 Grafana 的 Web UI。
要登录 Grafana,需要额外输入 admin 和下面通过 “kubectl get secret” 命令显示的密码。
http://{{minikubeのIPアドレス}}/sample01space/prom/
http://{{minikubeのIPアドレス}}/sample01space/altm/
http://{{minikubeのIPアドレス}}/sample01space/grafana/
:~# kubectl get secret -n sample01space monitor-grafana -o jsonpath="{.data.admin-password}" | ba
se64 --decode; echo
最后
我以快速地、只追逐流程的方式进行了,您觉得如何呢?由于我个人对于使用yaml文件进行控制的理解还不够充分,因此只希望您能温暖地关注一下,就像这样就好,非常感谢。
我已经在以下地方继续投稿了本文。如果方便的话,请参考:
https://qiita.com/y-kimura-39ra/items/fb3dc0bffc1ddfb560d2
请参考以下网站
在WSL上的~/.kube/config
在Windows 10上使用Minikube配置Kubernetes
如何使用Helm和Prometheus Operator设置监控DigitalOcean Kubernetes集群的方法
helm/charts/stable/prometheus-operator/
使用Ingress时想要使用基本认证的备忘录