Networking 无法通过外部网络访问kubernetes服务

Networking 无法通过外部网络访问kubernetes服务,networking,kubernetes,iptables,Networking,Kubernetes,Iptables,我用kubernetes 1.3.0设置kubernetes环境,在同一台主机上运行master和node,我用一个RC运行tomcat web应用程序,用docker运行一个服务,所有这些看起来都运行良好,我可以用curl命令通过内部网络访问服务,但当我试图用公共IP从Internet访问服务时,失败了 RC配置为: apiVersion: v1 kind: ReplicationController metadata: name: myweb spec: replicas: 2

我用kubernetes 1.3.0设置kubernetes环境,在同一台主机上运行master和node,我用一个RC运行tomcat web应用程序,用docker运行一个服务,所有这些看起来都运行良好,我可以用curl命令通过内部网络访问服务,但当我试图用公共IP从Internet访问服务时,失败了

RC配置为:

apiVersion: v1
kind: ReplicationController
metadata:
  name: myweb
spec:
    replicas: 2
    selector:
      app: myweb
    template:
      metadata:
        labels:
          app: myweb
      spec:
        containers:
        - name: myweb
          image: kubeguide/tomcat-app:v1
          ports:
          - containerPort: 8080
          env:
          - name: MYSQL_SERVICE_HOST
            value: "mysql"
          - name: MYSQL_SERVICE_PORT
            value: '3306'
服务配置为:

apiVersion: v1
kind: Service
metadata:
  name: myweb
spec:
  type: NodePort
  ports:
    - port: 8080
      nodePort: 30001
  selector:
    app: myweb
如您所见,服务侦听30001端口,当端口侦听Kubernetes服务时,它无法通过Internet访问,但当我使用
nc-l 30001
命令,可以通过Internet访问,这意味着系统层的网络配置良好

对于主机的iptables设置,我接受所有连接,但问题仍然存在


那为什么我可以通过kubernetes服务访问它呢?是否有配置遗漏?

要使用主机网络公开kubernetes服务,可以使用入口规则

请参阅:

在您的情况下,入口规则如下。

apiVersion:extensions/v1beta1
种类:入口
元数据:
名称:nginx测试
规格:
规则:
-主持人:test.example.com
http:
路径:
-后端:
服务名称:myweb
服务端口:30001
路径:/

要使用主机网络公开kubernetes服务,可以使用入口规则

请参阅:

在您的情况下,入口规则如下。

apiVersion:extensions/v1beta1
种类:入口
元数据:
名称:nginx测试
规格:
规则:
-主持人:test.example.com
http:
路径:
-后端:
服务名称:myweb
服务端口:30001
路径:/

谢谢大家。我还没有按照你说的做,因为我发现这是库伯内特斯的高级技能,我会在以后的学习中尝试。但我和你说的一样,使用nginx proxypass,它可以工作,应用程序可以访问。谢谢,伙计们。我还没有按照你说的做,因为我发现这是库伯内特斯的高级技能,我会在以后的学习中尝试。但我和你说的nginx proxypass类似,它可以工作,应用程序可以访问。