2017-08-14 128 views
1

我是Kubernetes的新手& Docker。我创建了一个简单的nodejs应用程序并部署在BlueMix Kubernetes上。但我无法访问互联网上的应用程序。 kubernetes中提到的端口ip &无法访问。有人可以帮助我吗?我试过http://10.76.193.146:31972,但它没有通过。我不确定这个公众ip是否是它的第10个系列。部署在Kubernetes上的应用程序无法从Internet访问

我也试过公共ip(http://184.173.1.79:31972)中提到的蓝色混合kubernetes集群 - 截图如下。但那也失败了。

这是我遵循的步骤。

  1. 在本地创建nodejs应用程序。它运行在本地
// Load the http module to create an http server. 
var http = require('http'); 

// Configure our HTTP server to respond with Hello World to all requests. 
var server = http.createServer(function (request, response) { 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.end("Hello World\n"); 
}); 

// Listen on port 8000, IP defaults to 127.0.0.1 
server.listen(8000); 

// Put a friendly message on the terminal 
console.log("Server running at http://127.0.0.1:8000/"); 

----------的package.json如期望

{ 
    "name": "helloworld-nodejs", 
    "version": "0.0.1", 
    "description": "First Docker", 
    "main": "app.js", 
    "scripts": { 
    "start": "PORT=8000 node ./app.js" 
    }, 
    "author": "", 
    "license": "ISC" 
} 
  • 在本地创建码头集装箱并运行码头工人。一切正常

  • 上传于Bluemix注册表中的泊坞窗容器作为

    registry.ng.bluemix.net/testkubernetes/helloworld-nodejs:0.0。1

  • 创建于Kubernetes节点和服务,使用下面的YAML文件

  • ----------节点YAML文件

    apiVersion: v1 
    kind: Pod 
    metadata: 
        name: helloworld-nodejs 
        labels: 
        name: helloworld-nodejs 
    spec: 
        containers: 
        - name: helloworld-nodejs 
         image: registry.ng.bluemix.net/testkubernetes/helloworld-nodejs:0.0.1 
         ports: 
         - containerPort: 8000 
    

    ----------服务YAML

    apiVersion: v1 
    kind: Service 
    metadata: 
        name: helloworld-nodejs 
        labels: 
        name: helloworld-nodejs 
    spec: 
        type: NodePort 
        selector: 
        name: helloworld-nodejs 
        ports: 
        - port: 8080 
    
  • 应用程序获取正确部署和也在运行,我可以从日志中确认的
  • enter image description here enter image description here

    结果kubectl GET services & kubectl get nodes命令

    Result of kubectl get services

    Result of kubectl get nodes

    enter image description here

    回答

    3

    由于您服务的port是从吊舱的containerPort,你将不得不在你的服务指定targetPort不同。

    spec: 
        type: NodePort 
        selector: 
        name: helloworld-nodejs 
        ports: 
        - port: 8080 
         targetPort: 8000 
    

    据对targetPort的Kubernetes documentation,它是:

    号码或姓名端口的访问由 服务针对的豆荚。 ....如果未指定,则使用“端口”字段 的值(一个标识映射)。

    +0

    谢谢ivan ...问题已解决 – bukubapi

    相关问题