刚安装了以下值的稳定/普罗米修斯图表,我可以从豆荚访问服务器前端,但不能从主机的web浏览器访问。
我的values.yaml
alertmanager:
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- localhost/alerts
server:
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- localhost/prom
pushgateway:
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- localhost/push我使用nginx入口和入口创建,但由于一些未知的原因,它似乎没有映射到服务。
一些数据:
我可以通过默认和dns服务名称从入口豆荚(也包括所有其他)访问服务器:
kubectl exec -it nginx-ingress-controller-5cb489cd48-t4dgv -- sh
/etc/nginx $ curl prometheus-server.default.svc.cluster.local
<a href="/graph">Found</a>
/etc/nginx $ curl prometheus-server
<a href="/graph">Found</a>由图表创建的活动入口列表:
kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
nginx-ingress localhost localhost 80 37h
prometheus-alertmanager localhost localhost 80 43m
prometheus-pushgateway localhost localhost 80 43m
prometheus-server localhost localhost 80 43m现役服务资源清单:
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 37h
nginx-deployment ClusterIP 10.100.1.167 <none> 80/TCP 37h
nginx-ingress-controller LoadBalancer 10.109.57.131 localhost 80:32382/TCP,443:30669/TCP 36h
nginx-ingress-default-backend ClusterIP 10.107.91.35 <none> 80/TCP 36h
php-deployment ClusterIP 10.105.73.26 <none> 9000/TCP 37h
prometheus-alertmanager ClusterIP 10.97.89.149 <none> 80/TCP 44m
prometheus-kube-state-metrics ClusterIP None <none> 80/TCP,81/TCP 44m
prometheus-node-exporter ClusterIP None <none> 9100/TCP 44m
prometheus-pushgateway ClusterIP 10.105.81.111 <none> 9091/TCP 44m
prometheus-server ClusterIP 10.108.225.187 <none> 80/TCP 44m另一方面,如果我将子域声明为入口主机,Prometheus是可以访问的:
alertmanager:
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- alerts.localhost
server:
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- prom.localhost
pushgateway:
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- push.localhost我做错什么了还是这有什么问题?有什么建议吗?
提前感谢!
Helm和Kubernetes版本: Helm 3.0.3 /Kubernetes 1.15.5 (马克码头,MacOS Catalina)
发布于 2020-02-18 10:26:45
我复制了您的场景,通过运行一些测试,我了解到这不会以您希望的方式工作。这不是实现这一目标的正确方式。
让我们深入研究一下。
您可以在您的入口添加nginx.ingress.kubernetes.io/rewrite-target,如下面的示例所示:
$ kubectl get ingresses. myprom-prometheus-pushgateway -oyaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
creationTimestamp: "2020-02-18T09:51:32Z"
generation: 1
labels:
app: prometheus
chart: prometheus-10.4.0
component: pushgateway
heritage: Helm
release: myprom
name: myprom-prometheus-pushgateway
namespace: default
resourceVersion: "3239"
selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/myprom-prometheus-pushgateway
uid: 499372f4-52b1-4b37-982c-b52e70657d37
spec:
rules:
- host: localhost
http:
paths:
- backend:
serviceName: myprom-prometheus-pushgateway
servicePort: 9091
path: /push
status:
loadBalancer:
ingress:
- ip: 192.168.39.251添加之后,您将能够按您的意愿进行访问。不幸的是,在这样做之后,您将面临一个新的问题。如果我们检查curl命令的html输出,我们可以看到以下内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex,nofollow">
<title>Prometheus Pushgateway</title>
<link rel="shortcut icon" href="/static/favicon.ico?v=793293bdadd51fdaca69de5bb25637b0f93b656b">
<script src="/static/jquery-3.4.1.min.js?v=793293bdadd51fdaca69de5bb25637b0f93b656b"></script>
<script src="/static/bootstrap-4.3.1-dist/js/bootstrap.min.js?v=793293bdadd51fdaca69de5bb25637b0f93b656b"></script>
<script src="/static/functions.js?v=793293bdadd51fdaca69de5bb25637b0f93b656b"></script>
<link type="text/css" rel="stylesheet" href="/static/bootstrap-4.3.1-dist/css/bootstrap.min.css?v=793293bdadd51fdaca69de5bb25637b0f93b656b">
<link type="text/css" rel="stylesheet" href="/static/prometheus.css?v=793293bdadd51fdaca69de5bb25637b0f93b656b">
<link type="text/css" rel="stylesheet" href="/static/bootstrap4-glyphicons/css/bootstrap-glyphicons.min.css?v=793293bdadd51fdaca69de5bb25637b0f93b656b">
</head>可以看到,例如,我们有/static/jquery-3.4.1.min.js,因此这将将您的浏览器重定向到另一个位置。问题是你没有这个位置。
这就是为什么我建议您避免使用路径,并坚持您的次级解决方案,涉及到使用一个子域。
alertmanager:
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- alerts.localhost
server:
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- prom.localhost
pushgateway:
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- push.localhosthttps://stackoverflow.com/questions/60232693
复制相似问题