Proxy 如何通过kubectl代理访问此Kubernetes服务?
我想通过访问我的Grafana Kubernetes服务,但由于某些原因,它无法工作,即使我可以让它用于其他服务。鉴于以下服务定义,为什么它在上不可用 grafana-service.yaml grafana-deployment.yamlProxy 如何通过kubectl代理访问此Kubernetes服务?,proxy,kubernetes,kubectl,Proxy,Kubernetes,Kubectl,我想通过访问我的Grafana Kubernetes服务,但由于某些原因,它无法工作,即使我可以让它用于其他服务。鉴于以下服务定义,为什么它在上不可用 grafana-service.yaml grafana-deployment.yaml 访问上述URL时,我看到的错误是“没有可用于服务的端点”grafana“,错误代码503。您的部署可能没有标签app:grafana,或者位于另一个命名空间中。您还可以发布部署定义吗 有几个因素可能会导致这个问题 该服务期望找到一个或多个支持端点,它通过标签
访问上述URL时,我看到的错误是“没有可用于服务的端点”grafana“,错误代码503。您的部署可能没有标签app:grafana,或者位于另一个命名空间中。您还可以发布部署定义吗 有几个因素可能会导致这个问题
--目标端口
不一致kubectl描述服务:
$ kubectl describe svc grafana01-grafana-3000
Name: grafana01-grafana-3000
Namespace: default
Labels: app=grafana01-grafana
chart=grafana-0.3.7
component=grafana
heritage=Tiller
release=grafana01
Annotations: <none>
Selector: app=grafana01-grafana,component=grafana,release=grafana01
Type: NodePort
IP: 10.0.0.197
Port: <unset> 3000/TCP
NodePort: <unset> 30905/TCP
Endpoints: 10.1.45.69:3000
Session Affinity: None
Events: <none>
接下来让我们看看选择器。在上面的示例中,您可以看到我的服务上有3个选择器标签:
Selector: app=grafana01-grafana,component=grafana,release=grafana01
接下来我将kubectl描述我的播客:
$ kubectl describe pod grafana
Name: grafana01-grafana-1843344063-vp30d
Namespace: default
Node: 10.10.25.220/10.10.25.220
Start Time: Fri, 14 Jul 2017 03:25:11 +0000
Labels: app=grafana01-grafana
component=grafana
pod-template-hash=1843344063
release=grafana01
...
请注意,pod
上的标签正确对齐,因此我的服务找到了pod
,它们提供了端点
,这些端点由服务
进行负载平衡。验证链的这一部分在您的环境中没有被破坏
如果您确实发现标签是正确的,则可能仍然存在断开连接,因为在pod
中的容器中运行的grafana进程在与您预期不同的端口上运行
$ kubectl describe pod grafana
Name: grafana01-grafana-1843344063-vp30d
...
Containers:
grafana:
Container ID: docker://69f11b7828c01c5c3b395c008d88e8640c5606f4d865107bf4b433628cc36c76
Image: grafana/grafana:latest
Image ID: docker-pullable://grafana/grafana@sha256:11690015c430f2b08955e28c0e8ce7ce1c5883edfc521b68f3fb288e85578d26
Port: 3000/TCP
State: Running
Started: Fri, 14 Jul 2017 03:25:26 +0000
如果出于某种原因,容器下的端口
列出了不同的值,则服务可以有效地针对无效端点进行负载平衡
例如,如果它列出了端口80:
端口:80/TCP
或者是一个空值
端口:
然后,即使您的标签选择器是正确的,服务也永远不会从pod中找到有效的响应,并且会从循环中删除端点
我怀疑您的问题是上述第一个问题(标签选择器不匹配)
如果标签选择器和端口都对齐,则节点之间的MTU设置可能有问题。在某些情况下,如果您的网络层(如calico)使用的MTU大于支持网络的MTU,那么您将永远无法从端点获得有效响应。通常,最后一个潜在问题将显示为超时,而不是503 正如Michael所说,很可能您的标签或名称空间不匹配。但是,除此之外,请记住,即使在修复端点时,您要查找的url()也可能无法正常工作
根据您的根url和/或静态根路径grafana配置设置,尝试登录时,您可能会让grafana尝试发布到并获得404
尝试改用kubectl端口转发:
kubectl-n向前监测端口[grafana吊舱名称]3000
然后通过
问题是Grafana的端口名为web,因此需要将:web
附加到kubectl代理URL:
另一种方法是不命名Grafana端口,因为这样您就不必将:web
附加到服务的kubectl代理URL:。我最终选择了这个选项,因为它更简单。对于Kubernetes 1.10,代理URL应该有细微的不同,如下所示:
http://localhost:8080/api/v1/namespaces/default/services/SERVICE-NAME:PORT-NAME/proxy/
Ref:嘿,对不起,我回复你的速度太慢了,但我现在发布了部署清单!在此期间,我不得不专注于其他事情。我不知道为什么,但我无法在AKS上使用这种模式。相反,我必须遵循这种模式(最后是代理):这是因为服务端点是更新的
$ kubectl describe pod grafana
Name: grafana01-grafana-1843344063-vp30d
Namespace: default
Node: 10.10.25.220/10.10.25.220
Start Time: Fri, 14 Jul 2017 03:25:11 +0000
Labels: app=grafana01-grafana
component=grafana
pod-template-hash=1843344063
release=grafana01
...
$ kubectl describe pod grafana
Name: grafana01-grafana-1843344063-vp30d
...
Containers:
grafana:
Container ID: docker://69f11b7828c01c5c3b395c008d88e8640c5606f4d865107bf4b433628cc36c76
Image: grafana/grafana:latest
Image ID: docker-pullable://grafana/grafana@sha256:11690015c430f2b08955e28c0e8ce7ce1c5883edfc521b68f3fb288e85578d26
Port: 3000/TCP
State: Running
Started: Fri, 14 Jul 2017 03:25:26 +0000
http://localhost:8080/api/v1/namespaces/default/services/SERVICE-NAME:PORT-NAME/proxy/