使用Docker+Kubernetes实践(1)

简单介绍

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

 

实际操做

一、按照教程安装Docker+Kubernetes for Macdocker


关于tool

关于状态

二、验证是否成功浏览器


docker

Kubernetes版本

由此Docker+Kubernetes安装成功。服务器

二、编写node.js应用程序网络

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

var http = require('http');url

var handleRequest = function(request, response) {3d

    console.log('Received request for URL: ' + request.url);server

    response.writeHead(200);blog

    response.end('Hello World!');

};

    var www = http.createServer(handleRequest);

    www.listen(8080);

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

三、将应用程序打包到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服务器。

四、使用build指令根据Dockerfile文件建立镜像

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

docker build -t hello-node:v1 .

五、建立部署

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

输出:


输出

六、建立服务

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

kubectl expose deployment hello-node --type=LoadBalancer

查看刚刚建立的服务:

kubectl get services

输出:


输出

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

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


Hello World!

八、更新应用

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

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

九、从新构建版本的镜像

docker build -t hello-node:v2 .

十、更新部署的镜像:

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


更新完成

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


更新完成

十二、Kubernetes仪表盘


仪表盘

 

 

参考:Kubernetes

相关文章
相关标签/搜索