簡單介紹
今天使用Docker+Kubernetes搭建一個簡單的Hello World Node.js應用程序。
實際操作
1、按照教程安裝Docker+Kubernetes for Mac
2、驗證是否成功
由此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”消息。
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
