本系列文章:
第七章:九析带你轻松完爆 helm3 nginx-ingress
第十一章:九析带你轻松完爆 helm3 kubernetes-dashboard
目录
1 前言
2 下载 grafana
3 创建 grafana 命名空间
4 安装 grafana
4.1 修改配置
4.2 安装 prometheus
4.2.1 修改 deployment apiVersion
4.2.2 添加 deployment selector
4.2.3 修改 ingress apiVersion
4.3 验证 grafana
5 安装 nfs
6 创建 pv
7 创建 secret
7.1 创建自签名证书
7.2 根据证书生成 secret
8 验证 grafana
1 前言
本文采用 helm3 v3.0.0;k8s v1.16.3。helm 仓库配置如下:
2 下载 grafana
helm 搜索 grafana chart:
helm search repo grafana
helm 下载解压 grafana chart:
helm fetch stable/grafana
tar -zxvf grafana-0.7.0.tgz
3 创建 grafana 命名空间
kubectl create ns grafana
4 安装 grafana
4.1 修改配置
编辑 values.yaml,重点修改 image 和 ingress 选项。其中 grafana image 版本要改为:5.0.4。此外因为本文使用了 ingress,所以你在使用此选项前确保已经正确安装了 nginx-ingress。可以参阅本人《helm 3 nginx-ingress》查看具体安装细节,并保持安装网络配置是 hostNetwork。
4.2 安装 prometheus
第一个 grafana 是 helm release 名,第二个是命名空间,第三个是 grafana 解压目录:
helm install grafana -n grafana grafana
4.2.1 修改 deployment apiVersion
如果在安装过程中有如下错误:
Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "Deployment" in version "extensions/v1beta1"
执行如下语句轻松完爆:
grep -irl 'extensions/v1beta1' grafana/ | xargs sed -i 's#extensions/v1beta1#apps/v1#g'
4.2.2 添加 deployment selector
再次安装如果报如下错误:
Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec
编辑 templates/deployment.yaml 文件,添加如下内容:
4.2.3 修改 ingress apiVersion
再次安装如果报如下错误:
Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "Ingress" in version "apps/v1"
编辑 templates/ingress.yaml 文件,将 apps/v1 修改为 extensions/v1beta1:
4.3 验证 grafana
下图证明安装成功:
使用 helm search 查看:
helm list -n grafana
安装成功,并不代表运行成功,还需要进一步的配置。
5 安装 nfs
如何安装 nfs 服务器,请参考本人《轻松完爆 nfs 安装》,不用担心,简单到爆,让你分分钟轻松完爆。
mkdir -p /data/nfs/grafana/1g
chmod 777 -R /data/nfs/grafana
echo '/data/nfs/grafana 10.110.0.0/16(rw,sync,no_root_squash)' >> /etc/exports
systemctl restart nfs
6 创建 pv
安装完 nfs 后,查看 grafana pvc:
kubectl get pvc -n grafana
发现 pvc 处于 pending 状态,原因在于并没有可用的 pv 可以使用,需要手动创建 pv:
创建 pv-grafana-1g.yaml 文件:
apiVersion: v1
kind: PersistentVolume
metadata:
name: grafana-pv
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nfs:
server: 10.110.101.106
path: /data/nfs/grafana/1g
执行如下语句创建 pv:
kubectl apply -f pv-grafana-1g.yaml
查看 pvc 状态(需要等几秒),发现 pvc 处于绑定状态。
7 创建 secret
7.1 创建自签名证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./tls.key -out ./tls.crt -subj "/CN=jiuxi.grafana.org"
7.2 根据证书生成 secret
kubectl -n grafana create secret tls grafana-server-tls --key ./tls.key --cert ./tls.crt
8 验证 grafana
打开浏览器,访问 https://jiuxi.grafana.org(需要修改 /etc/hosts 文件,添加域名解析记录,注意 IP 是 nginx-ingress pod 所在宿主机 IP,切记)。
输入用户名 admin / hellojiuxi,登录:
自此,轻松完爆 helm3 安装 grafana。