无法从其他主机访问Pod

时间:2019-11-19 21:44:56

标签: kubernetes service raspberry-pi

在此tutorial

之后,我用几个Raspberry Pi创建了一个集群

我遇到了问题。

我有一个主节点和一个从节点。我为Nginx创建部署和服务(用于测试)。

这是部署文件

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
    app: nginx
spec:
replicas: 1
selector:
    matchLabels:
    app: nginx
template:
    metadata:
    labels:
        app: nginx
    spec:
    containers:
    - name: nginx
        image: nginx
        ports:
        - containerPort: 80

这是服务文件

apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
    app: nginx
spec:
type: NodePort
ports:
    - port: 80
    protocol: TCP
selector:
    app: nginx

我无法从群集外部访问该服务。

这是IP配置(全部在wifi上):

Master : 192.168.1.200
Slave  : 192.168.1.201

我可以通过从属服务器上的SSH,“ curl 127.0.0.1:30187”以及“ curl 192.168.1.201:30187”,但是从主计算机或我的个人计算机上,它无法获取Nginix默认页面。相反,我有这个问题:“卷曲:(7)无法连接到192.168.1.201端口30187:连接超时”

有人可以帮我吗?

3 个答案:

答案 0 :(得分:2)

我终于在this上找到了答案。

我必须允许在 iptables 上进行转发。

iptables -P FORWARD ACCEPT

最诚挚的问候。

答案 1 :(得分:1)

我认为您应该在service.yaml中指定targetPortnodePort

apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
    app: nginx
spec:
type: NodePort
ports:
    - port: 80
    - targetPort : 80
    - nodePort: 32080
    protocol: TCP
selector:
    app: nginx

现在, targetPort nginx 中容器 nginx port 端口80 > 80多亏了这项服务。但是它在端口32080上也暴露于外界。 然后,您应该可以访问192.168.1.200:32080

答案 2 :(得分:0)

可以通过节点的所有节点访问

NodePort服务。 创建NodePort服务后,您应该可以从本地访问它,但是如果您使用云,则外部世界将无法访问它。这是因为有防火墙规则。

例如,如果您使用的是Google Cloud Platform,则需要更改防火墙规则。这样外部IP便可以访问群集。

因此,要访问群集,应启用端口转发。 因此,请检查防火墙设置,然后重试。 如果仍然无法访问它。发表评论。

谢谢。