k8s部署promethus小记

环境:

k8s版本:1.29.15

kube-promethus版本:0.14

版本选择,官网对照选择即可。

部署完成后,网页无法访问

k8s部署promethus完成后,需要修改svc使用NodePort,或者通过ingress、lb来实现外网访问;但是发现无论是NodePort、ingress还是lb都无法访问。

最后发现是新版添加了NetworkPolicy网络策略,导致grafana、prometheus以及alertmanger等服务无法访问,需要删除即可访问。

#] kubectl delete networkpolicy --all -n monitoring
使用ingress
#创建一个prometheus-ingress.yaml写入
#] vim prometheus-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: prometheus-ingress
  namespace: monitoring
spec:
  ingressClassName: nginx
  rules:
  - host: alertmanager.ming.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: alertmanager-main
            port:
              number: 9093
  - host: grafana.ming.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: grafana
            port:
              number: 3000
  - host: prometheus.ming.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: prometheus-k8s
            port:
              number: 9090

#]执行
#] kubectl apply -f prometheus-ingress.yaml

#查看
#] kubectl get ingress -n monitoring

在这里插入图片描述

后续访问对应的host即可。如果解析不到,需要手动配置下域名解析。

使用lb
#创建一个lb的ip池
#] vim prometheus-lbpool.yaml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: prometheus-pool			#自定义名称
  namespace: metallb-system
spec:
  addresses:
  - 192.168.100.71-192.168.100.71  #选择外网ip段, 只放1个IP,使用不同端口

---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: prometheus-l2
  namespace: metallb-system
spec:
  ipAddressPools:
  - prometheus-pool				#和上面自定的名称对应
  
  
#分别创建promethus、alertmanager、grafana对应lb
#] vim prometheus-lb.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: grafana
    app.kubernetes.io/part-of: kube-prometheus
  name: grafana-lb
  namespace: monitoring
  annotations:
    metallb.universe.tf/loadBalancerIPs: "192.168.100.71"
    metallb.universe.tf/allow-shared-ip: "prometheus"
spec:
  type: LoadBalancer
  ports:
  - port: 3000
    targetPort: 3000
  selector:
    app.kubernetes.io/name: grafana
    app.kubernetes.io/part-of: kube-prometheus

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: alertmanager
    app.kubernetes.io/part-of: kube-prometheus
  name: alertmanager-lb
  namespace: monitoring
  annotations:
    metallb.universe.tf/loadBalancerIPs: "192.168.100.71"
    metallb.universe.tf/allow-shared-ip: "prometheus"
spec:
  type: LoadBalancer
  ports:
  - name: web
    port: 9093
    targetPort: 9093
  selector:
    app.kubernetes.io/name: alertmanager
    app.kubernetes.io/part-of: kube-prometheus

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: prometheus
    app.kubernetes.io/part-of: kube-prometheus
  name: prometheus-lb
  namespace: monitoring
  annotations:
    metallb.universe.tf/loadBalancerIPs: "192.168.100.71"
    metallb.universe.tf/allow-shared-ip: "prometheus"
spec:
  type: LoadBalancer
  ports:
  - name: web
    port: 9090
    targetPort: 9090
  selector:
    app.kubernetes.io/name: prometheus
    app.kubernetes.io/part-of: kube-prometheus
    

#]执行创建
#] kubectl apply -f prometheus-lbpool.yaml
#] kubectl apply -f prometheus-lb.yaml

#查看
#] kubectl get svc -n monitoring |grep lb

在这里插入图片描述

可以通过192.168.100.71的不同端口来访问对应的服务。

使用NodePort
#修改kube-prometheus-release-0.14/manifests/目录下的prometheus-service.yaml、vim grafana-service.yaml、alertmanager-service.yaml 三个文件,加入type: NodePort即可。
#] vim *-service.yaml

spec:
  type: NodePort
  
#然后执行更新下着三个文件就可以了

#查看
#] kubectl get svc -n monitoring|grep NodePort

在这里插入图片描述

三种方式,任选其一配置即可。

更多推荐