今天使用Docker+Kubernetes搭建一個簡單的Hello World Node.js應用程序。node
一、按照教程安裝Docker+Kubernetes for Macdocker
二、驗證是否成功瀏覽器
由此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」消息。
八、更新應用
這編輯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