zoukankan      html  css  js  c++  java
  • 在K8S上跑一个helloworld

    建立docker镜像

    为了方便起见,这里直接使用一个js网页作为应用,以此创建镜像

    hello world网页

    创建server.js,输入以下代码创建helloworld网页:

    var http = require('http');
    
    var handleRequest = function(request, response) {
      console.log('Received request for URL: ' + request.url);
      response.writeHead(200);
      response.end('Hello World!');
    };
    var www = http.createServer(handleRequest);
    www.listen(8080);
    

    Dockerfile

    创建Dockerfile文件,配置镜像:

    FROM node:6.9.2
    EXPOSE 8080
    COPY server.js .
    CMD node server.js
    

    其中,FROM是从官方镜像库取得node的镜像,EXPOSE表示暴露本容器的8080端口,COPY将server.js加入容器,CMD为容器中执行的命令

    更详细的Dockerfile写法见官方文档

    创建镜像

    配置好Dockerfile后,就可以使用docker的build命令根据Dockerfile的内容创建一个镜像:
    docker build -t hello-node:v1 .
    这里注意不要遗漏最后的.

    在Kubernetes上以该镜像创建一个POD

    在K8S集群配置完毕后,执行

    kubectl run hello-node --image=hello-node:v1 --port=8080 --image-pull-policy=Never

    即可在K8S上建立一个新的运行刚刚建立的镜像的POD

    但是此时由于POD默认不暴露在外部,因此我们无法观察到node的输出,为此需要创建一个service将该POD的端口暴露出来

    访问该POD

    Kubernetes Service

    Service有几个种类,默认的是cluster-ip,即只能通过pod在集群内部的IP地址进行对service的访问

    第二种是nodeport,即在每一个Node上暴露出一个端口:nodePort,外部网络可以通过(任一Node)[NodeIP]:[NodePort]访问到后端的Service。

    第三种是loadbalancer,请求底层云平台创建一个负载均衡器,将每个Node作为后端,进行服务分发。该模式需要底层云平台(例如GCE)支持

    最简单的就是直接开启一个默认的clusterip的service,在master上直接通过集群内部IP访问helloworld:

    kubectl expose deployment hello-node --port=8080 --target-port=8080

    其他方式比如NodePort可以通过--type=NodePort参数指定

    进行访问

    在创建好service之后,就可以使用kubectl get service查看当前运行的service,其中可以看到hello-node的ClusterIP,在浏览器中访问该IP:8080即可看到hello world!

  • 相关阅读:
    C# 杂项
    C# 数组
    我的博客第一天
    Java使用多线程异步执行批量更新操作
    Python爬取百度图片
    以友盟+U-Push为例,深度解读消息推送的筛选架构解决方案应用与实践
    python自动化办公之爬取HTML图片写入PPT实战
    理解Python闭包,这应该是最好的例子
    爬取b站《守护解放西》弹幕
    爬取b站《守护解放西》弹幕
  • 原文地址:https://www.cnblogs.com/bforever/p/10601169.html
Copyright © 2011-2022 走看看