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

本文涉及的产品
可观测监控 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. 今天分享就到这里了,希望可以帮助到遇到类似问题的伙伴们.


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
Java 应用服务中间件
多项目分接口:在同一Tomcat下使用不同的端口号访问不同的项目。
总而言之,要在同一Tomcat服务器下使用不同端口访问不同项目,关键是通过对server.xml文件的配置创建多个 `<Service>`实例和相应的虚拟主机。这种方法既实现了项目隔离,也有助于优化资源利用率。通过遵循本文的详细说明,很容易地就能满足需求实现多项目分接口。
239 38
|
存储 运维 安全
|
10月前
|
安全 网络协议 网络安全
【Azure APIM】APIM服务配置网络之后出现3443端口不通,Management Endpoint不健康状态
如果没有关联的网络安全组,则阻止所有网络流量通过子网和网络接口。
211 30
|
9月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
566 7
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
12月前
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
295 6
|
12月前
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
763 5
|
Linux Windows
端口占用的解决方法
本文介绍了在Windows和Linux系统中解决端口占用问题的方法,包括使用`netstat`命令查看端口占用情况、`tasklist`命令查找对应进程,以及使用`taskkill`命令终止进程,在Linux系统中则使用`netstat`或`lsof`命令查找占用端口的进程,并用`kill`命令结束进程。
|
JSON 安全 网络协议
【Azure Policy】添加策略用于审计Azure 网络安全组(NSG)规则 -- 只能特定的IP地址允许3389/22端口访问
为了确保Azure虚拟机资源的安全管理,只有指定IP地址才能通过RDP/SSH远程访问。解决方案包括使用Azure Policy服务扫描所有网络安全组(NSG),检查入站规则中的3389和22端口,并验证源地址是否在允许的IP列表中。不符合条件的NSG规则将被标记为非合规。通过编写特定的Policy Rule并定义允许的IP地址参数,实现集中管控和合规性检查。
190 0
|
2月前
|
网络协议
端口最多只有65535个,为什么服务器能承受百万并发
服务器通过四元组(源IP、源端口、目标IP、目标端口)识别不同TCP连接,每条连接对应独立socket。数据包携带四元组信息,服务端据此查找对应socket进行通信。只要四元组任一元素不同,即视为新连接,可创建独立socket。资源充足时,单进程可支持百万级并发连接,socket与端口非一一对应。
164 10
端口最多只有65535个,为什么服务器能承受百万并发