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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM