160 lines
3.5 KiB
Markdown
160 lines
3.5 KiB
Markdown
> 参考Grafana官方部署文档
|
||
>
|
||
> https://grafana.com/docs/grafana/latest/setup-grafana/installation/kubernetes/
|
||
|
||
### 创建命名空间
|
||
|
||
```bash
|
||
kubectl create ns monitor
|
||
```
|
||
|
||
### 创建PVC
|
||
|
||
```yaml
|
||
apiVersion: v1
|
||
kind: PersistentVolumeClaim
|
||
metadata:
|
||
name: grafana-pvc
|
||
namespace: monitor
|
||
spec:
|
||
storageClassName: nfs-client
|
||
accessModes:
|
||
- ReadWriteOnce
|
||
resources:
|
||
requests:
|
||
storage: 10Gi
|
||
|
||
```
|
||
|
||
### 创建ConfigMap
|
||
|
||
> 参考 Grafana官方文档
|
||
>
|
||
> https://grafana.com/docs/grafana/latest/setup-grafana/installation/kubernetes/#increasing-log-levels-to-debug-mode
|
||
|
||
- 准备grafana.ini 配置文件
|
||
- 可以先不挂载grafana配置文件部署,然后去pod里边查看需要的配置内容在新建ini文件
|
||
|
||
```bash
|
||
kubectl create configmap grafana-config --from-file=grafana.ini --namespace=monitor
|
||
```
|
||
|
||
|
||
|
||
### 创建Deployment
|
||
|
||
```yaml
|
||
apiVersion: apps/v1
|
||
kind: Deployment
|
||
metadata:
|
||
labels:
|
||
app: grafana
|
||
name: grafana
|
||
namespace: monitor
|
||
spec:
|
||
selector:
|
||
matchLabels:
|
||
app: grafana
|
||
template:
|
||
metadata:
|
||
labels:
|
||
app: grafana
|
||
spec:
|
||
securityContext:
|
||
fsGroup: 472
|
||
supplementalGroups:
|
||
- 0
|
||
containers:
|
||
- name: grafana
|
||
image: grafana/grafana:latest
|
||
imagePullPolicy: IfNotPresent
|
||
ports:
|
||
- containerPort: 3000
|
||
name: http-grafana
|
||
protocol: TCP
|
||
readinessProbe:
|
||
failureThreshold: 3
|
||
httpGet:
|
||
path: /robots.txt
|
||
port: 3000
|
||
scheme: HTTP
|
||
initialDelaySeconds: 10
|
||
periodSeconds: 30
|
||
successThreshold: 1
|
||
timeoutSeconds: 2
|
||
livenessProbe:
|
||
failureThreshold: 3
|
||
initialDelaySeconds: 30
|
||
periodSeconds: 10
|
||
successThreshold: 1
|
||
tcpSocket:
|
||
port: 3000
|
||
timeoutSeconds: 1
|
||
resources:
|
||
requests:
|
||
cpu: 250m
|
||
memory: 750Mi
|
||
volumeMounts:
|
||
- mountPath: /var/lib/grafana
|
||
name: grafana-pv
|
||
- mountPath: /etc/grafana # 没有配置ini文件时可以注释此部分
|
||
name: grafana-config
|
||
volumes:
|
||
- name: grafana-pv
|
||
persistentVolumeClaim:
|
||
claimName: grafana-pvc
|
||
- name: grafana-config # 没有配置ini文件时可以注释此部分
|
||
configMap:
|
||
name: grafana-config
|
||
|
||
```
|
||
|
||
### 创建Service
|
||
|
||
- ClusterIP 模式,也可以NodePort或LoadBalancer模式,我用ingress,所以使用的ClusterIP模式
|
||
|
||
```yaml
|
||
apiVersion: v1
|
||
kind: Service
|
||
metadata:
|
||
name: grafana
|
||
namespace: monitor
|
||
spec:
|
||
ports:
|
||
- port: 3000
|
||
protocol: TCP
|
||
targetPort: http-grafana
|
||
selector:
|
||
app: grafana
|
||
sessionAffinity: None
|
||
type: ClusterIP
|
||
|
||
```
|
||
|
||
### 创建Ingress基于trafik
|
||
|
||
```yaml
|
||
apiVersion: networking.k8s.io/v1
|
||
kind: Ingress
|
||
metadata:
|
||
name: kubepi-traefik-ingress
|
||
namespace: monitor
|
||
annotations:
|
||
traefik.ingress.kubernetes.io/router.entrypoints: web
|
||
spec:
|
||
ingressClassName: "traefik"
|
||
rules:
|
||
- host: home.heysq.com
|
||
http:
|
||
paths:
|
||
- backend:
|
||
service:
|
||
name: grafana
|
||
port:
|
||
number: 3000
|
||
path: /grafana
|
||
pathType: Prefix
|
||
|
||
```
|
||
|