首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过kubectl暴露服务时,从节点主机上没有监听端口

通过kubectl暴露服务时,从节点主机上没有监听端口
EN

Stack Overflow用户
提问于 2019-06-17 08:31:29
回答 2查看 343关注 0票数 1

我正在设置一个kubernetes集群,它有一个主节点(一个物理miniPC,运行ubuntu服务器18.04)和一个从节点(一个笔记本电脑,运行ubuntu16.04)。

Docker是我和kubernetes一起使用的容器。

我通过运行一个演示应用程序

代码语言:javascript
运行
AI代码解释
复制
kubectl run hello-world --image=gcr.io/google-samples/hello-app:1.0  --port 8080

并通过以下方式公开它

代码语言:javascript
运行
AI代码解释
复制
kubectl expose deployment hello-world --port=8080 --target-port=8080

应用程序在从节点上启动

代码语言:javascript
运行
AI代码解释
复制
alecu@slave-node:~$ sudo docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS               NAMES
91967f160a7c        bc5c421ecd6c           "./hello-app"            About an hour ago   Up About an hour                        k8s_hello-world_hello-world-5bcc568dd9-xktwg_default_875609f4-90d0-11e9-9940-7cd30a0da72f_0

我可以从容器内部访问它

代码语言:javascript
运行
AI代码解释
复制
alecu@slave-node:~$ sudo nsenter -t 21075 -n curl http://localhost:8080
Hello, world!
Version: 1.0.0
Hostname: hello-world-6899bf7846-t5pb7

但是当我试图从容器外部访问它时,我得到的连接被拒绝:

代码语言:javascript
运行
AI代码解释
复制
alecu@slave-node:~$ curl http://localhost:8080
curl: (7) Failed to connect to localhost port 8080: Connection refused

netstat未显示8080端口

代码语言:javascript
运行
AI代码解释
复制
alecu@slave-node:~$ netstat -tnlp | grep 8080

curl也不能在主节点上工作

代码语言:javascript
运行
AI代码解释
复制
alecu@master-node:~$ kubectl describe service hello-world
Name:              hello-world
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          run=hello-world
Type:              ClusterIP
IP:                10.100.48.99
Port:              <unset>  8080/TCP
TargetPort:        8080/TCP
Endpoints:         192.168.1.18:8080
Session Affinity:  None
Events:            <none>

alecu@master-node:~$ curl -v http://192.168.1.18:8080
* Rebuilt URL to: http://192.168.1.18:8080/
*   Trying 192.168.1.18...
* TCP_NODELAY set
^C
alecu@master-node:~$ curl -v http://10.100.48.99:8080
* Rebuilt URL to: http://10.100.48.99:8080/
*   Trying 10.100.48.99...
* TCP_NODELAY set
^C
alecu@master-node:~$

我使用了ctrl+c‘命令,因为它正在无休止地等待。

我不明白为什么从节点上的端口8080没有打开。

编辑我已将服务修补为使用NodePort

代码语言:javascript
运行
AI代码解释
复制
 kubectl patch svc hello-world --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'

但是curl在http://nodeIP:nodePort上也不起作用

代码语言:javascript
运行
AI代码解释
复制
alecu@master-node:~$ kubectl describe svc hello-world
Name:                     hello-world
Namespace:                default
Labels:                   run=hello-world
Annotations:              <none>
Selector:                 run=hello-world
Type:                     NodePort
IP:                       10.100.171.36
Port:                     <unset>  8080/TCP
TargetPort:               8080/TCP
NodePort:                 <unset>  30988/TCP
Endpoints:                192.168.1.21:8080
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>
alecu@master-node:~$ curl -v http://10.100.171.36:30988
* Rebuilt URL to: http://10.100.171.36:30988/
*   Trying 10.100.171.36...
* TCP_NODELAY set
^C
EN

回答 2

Stack Overflow用户

发布于 2019-06-17 08:47:41

将服务类型更新为NodePort。然后,您应该能够使用http://NODEIP:NODEPORT从外部访问应用程序,或者使用clusterIP从集群访问应用程序。

从下面的命令获取clusterIP

代码语言:javascript
运行
AI代码解释
复制
kubectl get svc

请参阅下面的说明

代码语言:javascript
运行
AI代码解释
复制
master $ kubectl run hello-world --image=gcr.io/google-samples/hello-app:1.0  --port 8080
deployment.apps/hello-world created
master $
master $ kubectl expose deployment hello-world --port=8080 --target-port=8080
service/hello-world exposed
master $
master $ kubectl get svc
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
hello-world   ClusterIP   10.104.172.60   <none>        8080/TCP        4s
kube-dns      ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP   1h
master $
master $ curl 10.104.172.60:8080
Hello, world!
Version: 1.0.0
Hostname: hello-world-6654767c49-r2mnz
票数 1
EN

Stack Overflow用户

发布于 2019-06-17 18:07:27

我发现了问题所在。

我使用了pluralsight课程中指出的两个有故障的网络pod。

代码语言:javascript
运行
AI代码解释
复制
https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

应用这两个pod后,无法连接到任何网站,也无法连接到集群。

我将它们替换为flannel作为网络pod,一切工作正常。

代码语言:javascript
运行
AI代码解释
复制
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56627548

复制
相关文章
Ubuntu 14.04 Server 如何安装 Webmin
webmin 是一款通过 WEB 方式远程管理主机的工具软件,通过 webmin 可以通过图形界面远程对主机进行设置,webmin 包括了很多插件,通过安装插件实现对主机更多功能的管理。
星哥玩云
2022/07/01
1.4K0
Ubuntu 14.04 Server 如何安装 Webmin
如何在Ubuntu 18.04上安装Webmin
Webmin是适用于任何Linux机器的基于Web的控制面板,可让您通过基于Web的现代界面管理服务器。使用Webmin,您可以动态更改常用软件包的设置,包括Web服务器和数据库,以及管理用户,组和软件包。
好烟
2018/08/01
2.1K0
如何在Ubuntu 18.04上安装Webmin
如何在Ubuntu 16.04上安装Webmin控制面板和模块
Webmin是一个Web界面,允许您通过浏览器管理配置文件和重新加载程序,而无需SSH连接到您的Linode。它是cPanel或Plesk等管理面板的流行替代品,并且包含许多使其受欢迎的功能。许多第三方模块适用于不同的用例,这有助于提高Webmin控制面板的灵活性。
小翼111
2018/08/20
2.6K0
如何在 Ubuntu 20.04 上安装 Webmin
本文最先发布在:https://www.itcoder.tech/posts/how-to-install-webmin-on-ubuntu-20-04/
雪梦科技
2020/05/22
2.9K0
如何在 Ubuntu 20.04 上安装 Webmin
如何在 CentOS 8 上安装 Webmin
Webmin 是一个开源控制面板,它允许你通过简单易用的 Web 界面,就可以管理你的 Linux 服务器。它允许你管理用户,组,磁盘配额,创建文件和目录,也能配置大多数流行的服务,包括 Web,FTP,Email 和数据库。
雪梦科技
2020/05/11
2.8K0
如何在 CentOS 8 上安装 Webmin
如何在Debian 9上安装Webmin
Webmin是适用于任何Linux机器的现代Web控制面板,允许您通过简单的界面管理服务器。使用Webmin,您可以动态更改常用软件包的设置。
新巴子
2018/11/08
2.5K0
如何在服务器上安装Webmin
Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。目前Webmin支持绝大多数的Unix系统,可以让您用远端电脑上的浏览器,直接修改服务器里的使用者帐号、Apache、DNS、文件分享等设定。Virtualmin是Webmin的一个插件,它通过单一界面简化了对多个虚拟主机的管理,类似于cPanel或Plesk。使用Virtualmin,您可以管理用户帐户,Apache虚拟主机,DNS条目,MySQL数据库,邮箱等等。
葡萄
2018/08/02
3.9K0
如何在服务器上安装Webmin
在CentOS 7上安装Webmin
Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。目前Webmin支持绝大多数的Unix系统,可以让您用远端电脑上的浏览器,直接修改服务器里的使用者帐号、Apache、DNS、文件分享等设定。
八十岁的背影
2018/07/25
4.9K0
在CentOS 7上安装Webmin
在Ubuntu 14.04上安装 Webmin
Webmin是一个开源的基于网页的Unix/Linux系统管理工具。通过使用Webmin,你可以在浏览器上设置和安装所有的系统服务,包括:DNS、DHCP、Apache、NFS和Samba等等。因此,有了这个,你就再也不需要去记住所有的修改配置的命令了。
星哥玩云
2022/07/01
1.8K0
在Ubuntu 14.04上安装 Webmin
Webmin <= 1.920 - 未经身份验证的RCE
Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。目前Webmin支持绝大多数的Unix系统,这些系统除了各种版本的linux以外还包括:AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等。
洛米唯熊
2019/08/20
3.4K0
Webmin <= 1.920 - 未经身份验证的RCE
在你的服务器上安装Webmin
Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。目前Webmin支持绝大多数的Unix系统,可以让您用远端电脑上的浏览器,直接修改服务器里的使用者帐号、Apache、DNS、文件分享等设定。
爆栈工程师
2018/07/24
1.6K0
在你的服务器上安装Webmin
Linux 主机管理软件 Webmin 1.7 安装
Webmin 是一款基于 Web 的主机管理软件,该软件非常强大,几乎可以对主机进行所有的管理操作,如果对命令行管理主机不熟悉,可使用 Webmin,通过它,您可以轻松地管理主机用户帐户,磁盘配额,服务,配置文件,管理的Apache服务器,DNS,文件共享和其他东西。这是一个相当有用的管理工具。
星哥玩云
2022/07/03
2.7K0
Linux 主机管理软件 Webmin 1.7 安装
【说站】python模块如何安装
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
很酷的站长
2022/11/24
5650
【说站】python模块如何安装
在AlamaLinux上安装Webmin GUI服务器管理器
仍然不习惯使用 Linux 命令行?试试 Webmin,它是一个图形界面,可以帮助您管理和配置 Linux 服务器。
云云众生s
2024/07/07
1590
在AlamaLinux上安装Webmin GUI服务器管理器
Webmin RCE 漏洞复现
Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。
sugarbeet
2022/09/26
1.4K0
Webmin RCE 漏洞复现
VPS安装Virtualmin面板
对一些Linxu操作不太熟悉的用户可以在VPS上安装web控制面板来简化添加网站或数据库等操作,常用的有cPanel、DirectAdmin、Virtualmin/Webmin、Kloxo这几种web控制面板,但是cPanel、DirectAdmin、Kloxo都是收费的控制面板,并且比较占用系统内存和资源,一般被空间销售商用作虚拟空间的销售;Virtualmin/Webmin是一款免费并且占用系统资源比较小的web控制面板,非常适合在VPS上安装。Hi-VPS强烈建议安装Virtualmin/Webmin作为VPS上的web控制面板.
星哥玩云
2022/07/04
18.1K0
VPS安装Virtualmin面板
已安装的nginx如何添加模块
nginx的模块是需要重新编译nginx,而不是像apache一样配置文件引用.so。这里以安装第三方ngx_http_google_filter_module模块为例: 1. 下载第三方扩展模块ngx_http_google_filter_module
菲宇
2019/06/12
12.7K0
Python如何安装cv2模块
关于用python实现答题卡识别的方法中,需用到cv2模块,在实际实验中,遇到了cv2模块安装失败的问题,本博客主要提出几个安装cv2的方法。
算法与编程之美
2022/05/23
8.2K0
python(pip)包/模块:如何离线安装?
如果有同环境服务器,可直接生成requirements.txt,会把当前服务器下的包和版本写入文件中。
Python学习者
2024/05/21
4690
CVE-2019-15107:Webmin RCE复现
本来前一阵就想复现来着,但是官网的版本已经更新了,直到今天才发现Docker上有环境,才进行了复现
Timeline Sec
2019/12/15
1.1K0

相似问题

X小时后从云存储中删除媒体

12

realm android删除所有数据

51

24小时后从Mysql中删除数据

21

Realm在删除PrimaryKey后未更改配置

16

Android Realm -删除后返回RealmObject

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档