将service类型由"ClusterIP"改为"NodePort"无法使用nodeip+端口访问服务解决方法.

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 将service类型由"ClusterIP"改为"NodePort"无法使用nodeip+端口访问服务解决方法.
1. 背景.

我打算在K8S集群部署一套Prometheus监控系统,以监控系统和各应用的各项指标,如资源、性能及自定义监控指标,具体部署方案和细节就不和大家详细说了,后面再和大家分享,这次先说我遇到问题。在Prometheus各组件都部署成功时候,我发现grafana的service的类型为 "ClusterIP",这意味着我无法在浏览器访问,于是我决定通过编辑grafana的yaml,将"ClusterIP" 改为 "NodePort" 类型,却发现在浏览器使用nodeip+端口方式还是访问不了。

2. 执行 "kubectl get all -n monitoring" 发现grafana为ClusterIP类型.
# kubectl get all -n monitoring 
NAME                                       READY   STATUS    RESTARTS        AGE
pod/alertmanager-main-0                    2/2     Running   0               4h47m
pod/blackbox-exporter-5d668b5c6-f9fds      3/3     Running   0               5h17m
pod/grafana-68fd49fd99-jhs25               1/1     Running   0               5h17m
pod/kube-state-metrics-78ddfd78fd-8blqk    3/3     Running   0               5h17m
pod/node-exporter-6lvps                    2/2     Running   0               5h17m
pod/node-exporter-8pw78                    2/2     Running   0               5h17m
pod/node-exporter-mmnbc                    2/2     Running   0               5h17m
pod/node-exporter-p49nq                    2/2     Running   1 (5h13m ago)   5h17m
pod/node-exporter-v7fvb                    2/2     Running   0               5h17m
pod/prometheus-adapter-5485575f49-8r4gd    1/1     Running   0               5h17m
pod/prometheus-adapter-5485575f49-974m8    1/1     Running   0               5h17m
pod/prometheus-k8s-0                       2/2     Running   0               5h15m
pod/prometheus-operator-5b687bfbb8-7djk2   2/2     Running   0               5h17m
NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
service/alertmanager-main       ClusterIP   10.96.23.99     <none>        9093/TCP,8080/TCP            5h17m
service/alertmanager-operated   ClusterIP   None            <none>        9093/TCP,9094/TCP,9094/UDP   5h15m
service/blackbox-exporter       ClusterIP   10.96.38.236    <none>        9115/TCP,19115/TCP           5h17m
service/grafana                 ClusterIP   10.96.112.113   <none>        3000/TCP                     5h17m
service/kube-state-metrics      ClusterIP   None            <none>        8443/TCP,9443/TCP            5h17m
service/node-exporter           ClusterIP   None            <none>        9100/TCP                     5h17m
service/prometheus-adapter      ClusterIP   10.96.216.177   <none>        443/TCP                      5h17m
service/prometheus-k8s          ClusterIP   10.96.113.84    <none>        9090/TCP,8080/TCP            5h17m
service/prometheus-operated     ClusterIP   None            <none>        9090/TCP                     5h15m
service/prometheus-operator     ClusterIP   None            <none>        8443/TCP                     5h17m
NAME                           DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
daemonset.apps/node-exporter   5         5         5       5            5           kubernetes.io/os=linux   5h17m
NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/blackbox-exporter     1/1     1            1           5h17m
deployment.apps/grafana               1/1     1            1           5h17m
deployment.apps/kube-state-metrics    1/1     1            1           5h17m
deployment.apps/prometheus-adapter    2/2     2            2           5h17m
deployment.apps/prometheus-operator   1/1     1            1           5h17m
NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/blackbox-exporter-5d668b5c6      1         1         1       5h17m
replicaset.apps/grafana-68fd49fd99               1         1         1       5h17m
replicaset.apps/kube-state-metrics-78ddfd78fd    1         1         1       5h17m
replicaset.apps/prometheus-adapter-5485575f49    2         2         2       5h17m
replicaset.apps/prometheus-operator-5b687bfbb8   1         1         1       5h17m
NAME                                 READY   AGE
statefulset.apps/alertmanager-main   1/1     5h15m
statefulset.apps/prometheus-k8s      1/1     5h15m
3. 将 grafana的"ClusterIP" 改为 "NodePort" 类型.
# kubectl edit svc grafana -n monitoring
service/grafana edited
# kubectl get svc grafana -n monitoring -oyaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2024-04-10T01:16:27Z"
labels:
app.kubernetes.io/component: grafana
app.kubernetes.io/name: grafana
app.kubernetes.io/part-of: kube-prometheus
app.kubernetes.io/version: 10.4.0
name: grafana
namespace: monitoring
resourceVersion: "804268"
uid: c6b751b4-9710-4159-8051-0e73660577ca
spec:
clusterIP: 10.96.112.113
clusterIPs:
- 10.96.112.113
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: http
nodePort: 32440
port: 3000
protocol: TCP
targetPort: http
selector:
app.kubernetes.io/component: grafana
app.kubernetes.io/name: grafana
app.kubernetes.io/part-of: kube-prometheus
sessionAffinity: None
type: NodePort
###将 type: NodePort 改为 clusterIP 即可.
###将 type: NodePort 改为 clusterIP 即可.
###将 type: NodePort 改为 clusterIP 即可.
status:
loadBalancer: {}
4. 执行 "kubectl get all -n monitoring" 发现grafana变为了NodePort类型.
# kubectl get all -n monitoring 
NAME                                       READY   STATUS    RESTARTS        AGE
pod/alertmanager-main-0                    2/2     Running   0               5h1m
pod/blackbox-exporter-5d668b5c6-f9fds      3/3     Running   0               5h32m
pod/grafana-68fd49fd99-jhs25               1/1     Running   0               5h32m
pod/kube-state-metrics-78ddfd78fd-8blqk    3/3     Running   0               5h32m
pod/node-exporter-6lvps                    2/2     Running   0               5h31m
pod/node-exporter-8pw78                    2/2     Running   0               5h31m
pod/node-exporter-mmnbc                    2/2     Running   0               5h31m
pod/node-exporter-p49nq                    2/2     Running   1 (5h27m ago)   5h31m
pod/node-exporter-v7fvb                    2/2     Running   0               5h31m
pod/prometheus-adapter-5485575f49-8r4gd    1/1     Running   0               5h31m
pod/prometheus-adapter-5485575f49-974m8    1/1     Running   0               5h31m
pod/prometheus-k8s-0                       2/2     Running   0               5h29m
pod/prometheus-operator-5b687bfbb8-7djk2   2/2     Running   0               5h31m
NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
service/alertmanager-main       ClusterIP   10.96.23.99     <none>        9093/TCP,8080/TCP            5h32m
service/alertmanager-operated   ClusterIP   None            <none>        9093/TCP,9094/TCP,9094/UDP   5h29m
service/blackbox-exporter       ClusterIP   10.96.38.236    <none>        9115/TCP,19115/TCP           5h32m
service/grafana                 NodePort    10.96.112.113   <none>        3000:31735/TCP               5h32m
service/kube-state-metrics      ClusterIP   None            <none>        8443/TCP,9443/TCP            5h32m
service/node-exporter           ClusterIP   None            <none>        9100/TCP                     5h31m
service/prometheus-adapter      ClusterIP   10.96.216.177   <none>        443/TCP                      5h31m
service/prometheus-k8s          ClusterIP   10.96.113.84    <none>        9090/TCP,8080/TCP            5h31m
service/prometheus-operated     ClusterIP   None            <none>        9090/TCP                     5h29m
service/prometheus-operator     ClusterIP   None            <none>        8443/TCP                     5h31m
NAME                           DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
daemonset.apps/node-exporter   5         5         5       5            5           kubernetes.io/os=linux   5h32m
NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/blackbox-exporter     1/1     1            1           5h32m
deployment.apps/grafana               1/1     1            1           5h32m
deployment.apps/kube-state-metrics    1/1     1            1           5h32m
deployment.apps/prometheus-adapter    2/2     2            2           5h31m
deployment.apps/prometheus-operator   1/1     1            1           5h31m
NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/blackbox-exporter-5d668b5c6      1         1         1       5h32m
replicaset.apps/grafana-68fd49fd99               1         1         1       5h32m
replicaset.apps/kube-state-metrics-78ddfd78fd    1         1         1       5h32m
replicaset.apps/prometheus-adapter-5485575f49    2         2         2       5h31m
replicaset.apps/prometheus-operator-5b687bfbb8   1         1         1       5h31m
NAME                                 READY   AGE
statefulset.apps/alertmanager-main   1/1     5h29m
statefulset.apps/prometheus-k8s      1/1     5h29m
4. 采用10.0.0.104+31735端口方式访问grafana发现访问失败.

我节点ip地址为 10.0.0.104,你需要使用你自己集群节点是ip+自己NodePort端口访问grafana服务。

我节点ip地址为 10.0.0.104,你需要使用你自己集群节点是ip+自己NodePort端口访问grafana服务。

我节点ip地址为 10.0.0.104,你需要使用你自己集群节点是ip+自己NodePort端口访问grafana服务。

5. 我开始在网络上查找资料,发现是网络限制原因.

解决方法是删除monitoring命名空间下的网络策略让其从新加载pod间网络,稍微等待一会哦,在浏览器就可以正常访问了。

kubectl delete networkpolicy --all -n monitoring
6. 在浏览器使用节点ip+端口访问测试,发现没有问题.

7. 今天分享就到这里了,希望可以帮助到遇到类似问题的伙伴们.


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
|
1月前
|
存储 运维 安全
|
22天前
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
2月前
|
Linux Windows
端口占用的解决方法
本文介绍了在Windows和Linux系统中解决端口占用问题的方法,包括使用`netstat`命令查看端口占用情况、`tasklist`命令查找对应进程,以及使用`taskkill`命令终止进程,在Linux系统中则使用`netstat`或`lsof`命令查找占用端口的进程,并用`kill`命令结束进程。
|
3月前
|
JSON 安全 网络协议
【Azure Policy】添加策略用于审计Azure 网络安全组(NSG)规则 -- 只能特定的IP地址允许3389/22端口访问
为了确保Azure虚拟机资源的安全管理,只有指定IP地址才能通过RDP/SSH远程访问。解决方案包括使用Azure Policy服务扫描所有网络安全组(NSG),检查入站规则中的3389和22端口,并验证源地址是否在允许的IP列表中。不符合条件的NSG规则将被标记为非合规。通过编写特定的Policy Rule并定义允许的IP地址参数,实现集中管控和合规性检查。
|
3月前
|
开发框架 .NET Linux
【Azure 应用服务】 部署到App Service for Linux 服务的Docker 镜像,如何配置监听端口呢?
【Azure 应用服务】 部署到App Service for Linux 服务的Docker 镜像,如何配置监听端口呢?
|
3月前
|
安全 网络安全
【Azure 环境】当本地网络通过ER专线与Azure云上多个虚拟网络打通,如何通过特定的网络策略来限制本地部分网段访问云上虚拟机22端口?
【Azure 环境】当本地网络通过ER专线与Azure云上多个虚拟网络打通,如何通过特定的网络策略来限制本地部分网段访问云上虚拟机22端口?
|
3月前
|
存储 缓存 NoSQL
【Azure Redis 缓存】Azure Cache for Redis服务中,除开放端口6379,6380外,对13000,13001,15000,15001 为什么也是开放的呢?
【Azure Redis 缓存】Azure Cache for Redis服务中,除开放端口6379,6380外,对13000,13001,15000,15001 为什么也是开放的呢?
|
3月前
|
SQL 网络协议 NoSQL
【Azure 应用服务】App Service/Azure Function的出站连接过多而引起了SNAT端口耗尽,导致一些新的请求出现超时错误(Timeout)
【Azure 应用服务】App Service/Azure Function的出站连接过多而引起了SNAT端口耗尽,导致一些新的请求出现超时错误(Timeout)
|
4月前
|
弹性计算 应用服务中间件 Linux
阿里云服务器开放端口完整图文教程
笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面,一些应用程序配置文件需要设置监听的端口(如Tomcat的8080、443端口等),虽然通过CentOs 7系统的的「防火墙」开放了对应的端口号,任然无法访问端口号对应的应用程序,后面了解到原来还需要设置云服务器的「安全组规则」,开放相应的端口权限,服务端的接口才能真正开放。
684 1
阿里云服务器开放端口完整图文教程