前言
上文
【從入門到放棄-Kubernetes】Kubernetes入門中我們了解到如何在本地使用Minikube搭建一個k8s叢集,本文中,我們一起學習如何在叢集中部署一個簡單的應用。
我們可以通過設定k8s的部署配置,來控制k8s如何建立和更新你的應用執行個體,一但部署設定建立好,叢集主節點就會根據你的配置來排程應用執行個體,部署在叢集的各個節點上。
部署完成後,k8s會繼續監控應用執行個體在各個節點的運作狀态,一但出現當機、被删除等情況,k8s會在叢集其他節點上建立新的應用執行個體,來滿足你的部署配置設定。這也是不同于以往部署方式的地方,利用k8s部署應用,可以幫你提高系統的高可用性。
準備鏡像
首先我們需要準備一個應用鏡像,因為k8s上部署的應用需要是容器化的。
可以直接使用我建構好的registry.cn-hangzhou.aliyuncs.com/larswang/hello-node:1.0鏡像,跳過本段落,直接看 建立Deployment 。
也可以參考下面的方式 建構自己的鏡像。
下面我們就用docker建立一個簡單的NodeJS服務鏡像。(如果還沒安裝docker的朋友可以
下載下傳安裝,相關配置教程網上很多,這裡不做展開)。
代碼準備
可以直接使用
hello-node代碼倉庫的内容
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);
Dockerfile
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD [ "node", "server.js" ]
建構鏡像
我使用的是阿裡雲的鏡像倉庫:
立即通路建立鏡像倉庫

關聯源代碼
立即建構
建構成功
本地拉取
docker pull registry.cn-hangzhou.aliyuncs.com/larswang/hello-node:1.0
docker run --name node-test -p 8080:8080 -d registry.cn-hangzhou.aliyuncs.com/larswang/hello-node:1.0
本地通路:
http://localhost:8080/,可以看到Hello World!輸出。說明鏡像建構OK。
Deployment
Deployment是用來部署無狀态應用的,即描述無狀态應用叢集狀态,比如設定部署5個副本,當其中某個副本當機時,會自動擴容至5個副本。
kubectl create deployment hello-node --image=registry.cn-hangzhou.aliyuncs.com/larswang/hello-node:1.0
檢視deployment
kubectl get deployments
檢視pod
kubectl get pods
Service
預設Pod 隻能通過 Kubernetes 叢集中的内部 IP 位址通路, 為了能在Kubernetes 虛拟網絡的外部通路,需要将 Pod 暴露為 Kubernetes Service。
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
通過LoadBalancer類型的方式将叢集服務的8080端口暴露出去。
檢視Services
kubectl get services
通路Service
minikube service hello-node
浏覽器會自動打開
http://127.0.0.1:51284,顯示Hello World!
清理
kubectl delete service hello-node
kubectl delete deployment hello-node
清理叢集中建立的資源。
總結
本文我們介紹了如何建立一個遠端鏡像,并通過指令行的方式使用鏡像部署服務。
實際上我們通常使用yaml配置檔案的方式去部署服務。下文我們一起學習下如果根據yaml檔案部署一個無狀态應用,并對其進行擴縮容。
更多文章
見我的部落格:
https://nc2era.comwritten by
AloofJr,轉載請注明出處