typora/note/devops/etcd/etcd.md
2024-12-12 10:48:55 +08:00

160 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> 参考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
```