Posts minikube(k8s)日志持久化方案
Post
Cancel

minikube(k8s)日志持久化方案

   测试环境为了跟线上环境保持一致以及更好的配合CD以及bug定位所以k8s pods 的日志持久化就很有必要了.接下来是傻瓜式教程跟着输入命令就能实现minikube pods 的日志收集功能.

   要注意的是,你的应用日志需要输出到 stdout 中.是指你需要安装到的 k8s 那个命名空间.使用默认配置的话请参考步骤1和步骤2 (推荐).使用自定义配置的话请参考步骤1和步骤3

1.安装 Helm (Helm 是Kubernetes 的首选应用程序包管理器)

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh # 安装成功后提示 helm installed into /usr/local/bin/helm

2.(默认配置)安装 loki (Loki 是Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 添加 repo 并更新
helm repo add loki https://grafana.github.io/loki/charts
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

# 注意这里后面是 -stack 的是默认打包好在一起的,没stack的是默认只有 loki 的,自定义安装请参考官网给出的命令
helm upgrade --install loki --namespace=<YOUR-NAMESPACE> grafana/loki-stack

# 安装 grafana
helm install loki-grafana --namespace=<YOUR-NAMESPACE> grafana/grafana

# 查看 grafana 的密码
kubectl get secret --namespace <YOUR-NAMESPACE> loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

# 临时暴露 端口 进行访问测试
kubectl port-forward --namespace <YOUR-NAMESPACE> service/loki-grafana 3000:80

3.(自定义配置)安装 loki

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 添加 repo 并更新
helm repo add loki https://grafana.github.io/loki/charts
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

# 拉取 chart
helm fetch loki/loki-stack --untar --untardir .
cd loki-stack

# 将 values.yaml 中的 grafana.enable 改成 true, 以及 所有 image tag 为 latest
vim values.yaml

# 生成 k8s 配置
helm template loki . > loki.yaml

# 部署 (如果需要安装到指定 namespace中需要 修改 loki.yaml 中的 namespace: default 配置) 
kubectl apply -f loki.yaml

# 查看 grafana 的密码
kubectl get secret --namespace <YOUR-NAMESPACE> loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

# 临时暴露 端口 进行访问测试
kubectl port-forward --namespace <YOUR-NAMESPACE> service/loki-grafana 3000:80

4.配置日志数据源

kubectl port-forward --namespace <YOUR-NAMESPACE> service/loki-grafana 3000:80 暴露了服务端口后我们要访问服务器的ip:3000 才能进入grafana的页面, 但是注意了这个时候其实是暴露了服务器的端口出来,但是因为我目前远程办公,公司的服务器在内网里面(而我使用了 vscode 的 remote-ssh 插件连接的服务器) 所以需要使用 vscode 再次转发端口到我本人使用的电脑,如下图

测试时端口转发配置

进入了grafana的页面后如果你使用默认配置没有自动配置数据源,下图显示的是使用默认配置的时候数据源的配置写法 如果你是使用了自定义配置的话那么数据源会自动配置,配置结果和下图是一样的 配置数据源的URL的时候可以自定义域名,只需要grafana的pod能够解析到能访问就可以了

数据源配置

5.查询日志

点击 explore 然后选择 namespace 和 pod 就可与查看到日志了

查询日志

6.Ref

  1. Install helm
  2. Install loki
  3. 简书文章
  4. 使用 loki 作为 k8s 应用日志收集器(上篇)
  5. CoreDNS系列1:Kubernetes内部域名解析原理、弊端及优化方式
This post is licensed under CC BY 4.0 by the author.

对于 Promise.all() 的误解

使用 minikube 搭建 kubernetes 集群