鏡像下載、域名解析、時間同步請點擊 阿里巴巴開源鏡像站
前言
本文中,我們將一起學習如何在集群中部署一個簡單的應用。
我們可以通過設置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
總結
本文我們介紹瞭如何創建一個遠程鏡像,並通過命令行的方式使用鏡像部署服務。
來源:AloofJr
“ 阿里巴巴開源鏡像站 提供全面,高效和穩定的鏡像下載服務。釘釘搜索 ' 21746399 ‘ 加入鏡像站官方用戶交流群。”