StatefulSet
由于要存储收集的监控历史数据,故创建有状态服务(使用nfs存储类):
vim prometheus.yml
kind: StatefulSet apiVersion: apps/v1 metadata: name: prometheus namespace: monitoring labels: app: prometheus component: server release: v2.26.0 spec: replicas: 1 selector: matchLabels: app: prometheus component: server template: metadata: labels: app: prometheus component: server release: v2.26.0 spec: volumes: - name: localtime hostPath: path: /etc/localtime type: '' - name: config-volume configMap: name: prometheus items: - key: prometheus.yml path: prometheus.yml defaultMode: 420 containers: - name: prometheus-server image: 'prom/prometheus:v2.26.0' command: - /bin/sh - '-c' - 'prometheus --storage.tsdb.retention=30d --config.file=/etc/config/prometheus.yml --storage.tsdb.path=/data/${HOSTNAME} --web.enable-lifecycle' ports: - containerPort: 9090 protocol: TCP resources: limits: cpu: '2' memory: 8Gi requests: cpu: 500m memory: 2Gi volumeMounts: - name: config-volume mountPath: /etc/config - name: pvc mountPath: /data - name: localtime readOnly: true mountPath: /etc/localtime livenessProbe: httpGet: path: /-/healthy port: 9090 scheme: HTTP initialDelaySeconds: 30 timeoutSeconds: 30 periodSeconds: 10 successThreshold: 1 failureThreshold: 3 readinessProbe: httpGet: path: /-/ready port: 9090 scheme: HTTP initialDelaySeconds: 30 timeoutSeconds: 30 periodSeconds: 10 successThreshold: 1 failureThreshold: 3 imagePullPolicy: IfNotPresent securityContext: readOnlyRootFilesystem: true allowPrivilegeEscalation: false restartPolicy: Always serviceAccountName: prometheus serviceAccount: prometheus volumeClaimTemplates: - kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: managed-nfs-storage serviceName: prometheus-headless
kubectl create -f prometheus.yml kubectl get statefulsets.apps -n monitoring
这里通过serviceAccount指定了Pod运行的用户为上面建立的访问用户。
可以查看Pod实例所挂载指定的ServiceAccount访问令牌文件:
kubectl exec -n monitoring -it prometheus-0 -- ls -l /var/run/secrets/kubernetes.io/serviceaccount/
Tips: 当启动时带有–web.enable-lifecycle参数,可通过发送 HTTP POST请求到 /-/reload 地址使Prometheus在运行时重新加载配置文件。且如果修改过的配置文件有错误将不会应用。
curl -X POST http://172.16.220.143:30090/-/reload
Service
建立服务:
vim prometheus-svc.yml
kind: Service apiVersion: v1 metadata: name: prometheus-svc namespace: monitoring labels: app: prometheus component: server spec: ports: - name: http protocol: TCP port: 80 targetPort: 9090 nodePort: 30090 selector: app: prometheus component: server type: NodePort
kubectl create -f prometheus-svc.yml kubectl get svc -n monitoring
Tips:定义成NodePort类型是为了方便K8S群集外访问,而不用创建Ingress。
访问其中一个节点查看部署情况:http://172.16.220.143:30090/
页码: 1 2