k8s部署promethus小记
·
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

三种方式,任选其一配置即可。
更多推荐
所有评论(0)