雲計算

如何在 Kubernetes 集群上部署應用

5.JPG
鏡像下載、域名解析、時間同步請點擊 阿里巴巴開源鏡像站

前言

本文中,我們將一起學習如何在集群中部署一個簡單的應用。

我們可以通過設置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" ]

構建鏡像

我使用的是阿里雲的鏡像倉庫:立即訪問

創建鏡像倉庫

image.png

關聯源代碼

image.png

立即構建

image.png

構建成功

image.png

本地拉取

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

image.png

Service

默認Pod 只能通過 Kubernetes 集群中的內部 IP 地址訪問, 為了能在Kubernetes 虛擬網絡的外部訪問,需要將 Pod 暴露為 Kubernetes Service。

kubectl expose deployment hello-node --type=LoadBalancer --port=8080

通過LoadBalancer類型的方式將集群服務的8080端口暴露出去。
查看Services

kubectl get services

image.png
訪問Service

minikube service hello-node

image.png
瀏覽器會自動打開http://127.0.0.1:51284,顯示Hello World!

清理

可通過如下命令清理集群中創建的資源。

kubectl delete service hello-node
kubectl delete deployment hello-node

總結

本文我們介紹瞭如何創建一個遠程鏡像,並通過命令行的方式使用鏡像部署服務。

來源:AloofJr

阿里巴巴開源鏡像站 提供全面,高效和穩定的鏡像下載服務。釘釘搜索 ' 21746399 ‘ 加入鏡像站官方用戶交流群。”

Leave a Reply

Your email address will not be published. Required fields are marked *