问题处理-k8s环境中,hadoop端口9000无法被访问

说明

因环境特殊,描述粗略,若有类似环境问题难以解决,可直接留言。或email联系zhuyifei.ruichuang@gmail.com

问题现象

hadoop的9000端口无法被访问

环境描述

k8s部署了hadoop测试环境。采用all in one pod的方式。给其他pod提供服务,需可在hadoop所在的namespace内外均可访问。

排查记录

查询pod

bash 复制代码
root@master:~# kubectl get pod -n hive
NAME                                  READY   STATUS    RESTARTS      AGE
hive-metastore-595d9d4b6b-vrhbh       1/1     Running   2 (83d ago)   83d
hive312-deployment-656c8d98f8-fv676   1/1     Running   0             7d2h
ubuntu-deployment-69845fb6d5-bl9sm    1/1     Running   0             8d

进入pod内的容器查询进程,此处确认了端口和进程都在

bash 复制代码
root@master:~# kubectl exec -it -n hive hive312-deployment-656c8d98f8-fv676 -- bash
root@hive312-deployment-656c8d98f8-fv676:/# lsof -i :9000
COMMAND  PID   USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
java    3396 hadoop  270u  IPv4 2124636242      0t0  TCP localhost:9000 (LISTEN)
...

问题出在localhost:9000,这里表示监听本地,不接受其他来源。导致跨pod访问被拒绝。 停掉hadoop。务必先关停,后改配置,否则会导致服务只能kill -9关停。

bash 复制代码
root@hive312-deployment-656c8d98f8-fv676:/opt/hadoop-3.1.1# su - hadoop
hadoop@hive312-deployment-656c8d98f8-fv676:~$ cd /opt/hadoop-3.1.1/sbin/
hadoop@hive312-deployment-656c8d98f8-fv676:/opt/hadoop-3.1.1/sbin$ ./stop-all.sh 

(关键)修改配置文件,此处只展示了关键配置,没这一段的就追加进去。这里表示监听所有的访问者。

bash 复制代码
root@hive312-deployment-656c8d98f8-fv676:/opt/hadoop-3.1.1/etc/hadoop# cat hdfs-site.xml 
<property>
  <name>dfs.namenode.rpc-address</name>
  <value>0.0.0.0:9000</value>
</property>

启动hadoop

bash 复制代码
root@hive312-deployment-656c8d98f8-fv676:/opt/hadoop-3.1.1/etc/hadoop# su - hadoop
hadoop@hive312-deployment-656c8d98f8-fv676:~$ cd /opt/hadoop-3.1.1/sbin/
hadoop@hive312-deployment-656c8d98f8-fv676:/opt/hadoop-3.1.1/sbin$ ./start-all.sh

查询进程,看到*:9000,此时允许所有访问者。

bash 复制代码
root@hive312-deployment-656c8d98f8-fv676:/opt/hadoop-3.1.1/etc/hadoop# lsof -i :9000
COMMAND  PID   USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
java    3396 hadoop  270u  IPv4 2124636242      0t0  TCP *:9000 (LISTEN)
java    3396 hadoop  280u  IPv4 2124655660      0t0  TCP hive312-deployment-656c8d98f8-fv676:9000->hive312-deployment-656c8d98f8-fv676:37284 (ESTABLISHED)
java    3491 hadoop  295u  IPv4 2124641848      0t0  TCP hive312-deployment-656c8d98f8-fv676:37284->hive312-deployment-656c8d98f8-fv676:9000 (ESTABLISHED)

访问测试 此时在其他的namespace的pod的容器内,向该容器的9000端口发起访问,测试成功。

相关推荐
weirong13 小时前
图解 client-go Informer:手写一个 mini-Informer 才敢说懂
kubernetes
.冰块.13 小时前
流量大了自动加 Pod!K8s HPA 扩缩容与 ResourceQuota/LimitRange 资源管控实战
linux·云原生·容器·kubernetes·hpa·quota·limitrange
无言听风雨丶1 天前
Linux 容器本质探秘:Cgroup 与 Namespace 深度解析与实战
linux·运维·服务器·kubernetes
无言听风雨丶2 天前
Kubernetes GitOps 持续交付实战:用 Argo CD 让 Git 成为集群事实源
git·elasticsearch·kubernetes
无言听风雨丶2 天前
Kubernetes 控制平面深度剖析:从 kubectl apply 到 etcd 写入的全链路
平面·kubernetes·etcd
openFuyao2 天前
openFuyao x 复旦大学软件工程实验室 Panel 回顾:Agentic时代,集群调度技术体系将如何演进?
kubernetes·openfuyao
螺蛳粉 螺蛳粉2 天前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
相思难忘成疾2 天前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
weirong2 天前
给 K8s 加一个自动值班员:分级故障自愈引擎
kubernetes
云和数据.ChenGuang2 天前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes