使用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

相關文章
相關標籤/搜索