zoukankan      html  css  js  c++  java
  • 使用Docker+Kubernetes实践(1)

    简单介绍

    今天使用Docker+Kubernetes搭建一个简单的Hello World Node.js应用程序。

    实际操作

    1、按照教程安装Docker+Kubernetes for Mac


    关于tool

    关于状态

    2、验证是否成功


    docker

    Kubernetes版本

    由此Docker+Kubernetes安装成功。

    2、编写node.js应用程序

    将此代码保存在以文件名命名hellonode 的文件夹中server.js:

    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);

    这可以先试用node server.js来运行一下,应该能够在http:// localhost:8080 /上看到“Hello World!”消息。按Ctrl-C停止正在运行的Node.js服务器。

    3、将应用程序打包到Docker容器中

    这里需要使用Dockerfile文件来创建容器,在server.js文件夹内创建Dockerfile文件,如下:

    FROM node:6.9.2

    EXPOSE 8080

    COPY server.js .

    CMD node server.js

    Docker镜像的这个配置从Docker注册表中的官方Node.js LTS镜像开始,公开端口8080,将server.js文件复制到镜像并启动Node.js服务器。

    4、使用build指令根据Dockerfile文件创建镜像

    使用Docker守护进程构建Docker镜像(注意尾随点):

    docker build -t hello-node:v1 .

    5、创建部署

    Kubernetes Pod是一个由一个或多个容器组成的组合,用于管理和联网。本教程中的Pod只有一个Container。Kubernetes 部署会检查Pod的运行状况,并在Pod终止时重新启动Pod的容器。部署是管理Pod的创建和扩展的推荐方法。

    使用该kubectl run命令创建管理Pod的Deployment。Pod根据hello-node:v1Docker镜像运行Container 。将 --image-pull-policy标志设置Never为始终使用本地映像,而不是从Docker注册表中提取它(因为您还没有将它推到那里):

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

    查看部署:

    kubectl get deployments

    输出:


    输出

    查看Pod:

    kubectl get pods

    输出:


    输出

    6、创建服务

    默认情况下,Pod只能通过Kubernetes集群中的内部IP地址访问。要从hello-nodeKubernetes虚拟网络外部访问Container,须将Pod公开为Kubernetes 服务。可以使用以下kubectl expose命令将Pod公开到公共Internet :

    kubectl expose deployment hello-node --type=LoadBalancer

    查看刚刚创建的服务:

    kubectl get services

    输出:


    输出

    --type=LoadBalancer标志表示在群集外部公开的服务。

    7、使用本地IP地址自动打开浏览器窗口,并显示“Hello World”消息。


    Hello World!

    8、更新应用

    这编辑server.js文件以返回新消息:

    response.end('Hello World Again!');

    9、重新构建版本的镜像

    docker build -t hello-node:v2 .

    10、更新部署的镜像:

    kubectl set image deployment/hello-node hello-node=hello-node:v2


    更新完成

    11、再次运行您的应用以查看新消息:


    更新完成

    12、Kubernetes仪表盘


    仪表盘

    参考:Kubernetes

  • 相关阅读:
    关于换行
    WebService
    C#操作XML的通用方法总结
    19个必须知道的Visual Studio快捷键
    Asp.net C# 把 Datatable转换成JSON 字符串
    C#中的多态性
    virtual和abstract
    DataTable的过滤需要的数据
    自定义控件之瀑布流与水波纹实现
    反转链表
  • 原文地址:https://www.cnblogs.com/April-Chou-HelloWorld/p/9425151.html
Copyright © 2011-2022 走看看