# Outline
一、前言
二、實作
# TL;DR
如同 Dockerize 就是將應用程式封裝成 Docker Image 並隨時可以透過 Image 去建立一個個容器。Kubernetize 就是將我們「手動部署多個容器到多台機器上,並監測管理這些容器的狀態」的過程透過 Kubernetes 去處理。
前一篇都是手動透過 kubectl
工具去部署我們的 .NET Core Application 服務,但是這樣的缺點一來「手動本身就很麻煩」,二來是無法將部署的設定也被版本控制紀錄。所以最好的做法是將這些部署的參數設定都寫成設定檔去描述這些 Kubernetes 物件。這也就是本篇想嘗試實作。
在編寫時,先在這節筆記一下 Kubernetes 的一些概念。
Automated container deployment, scaling, and management
Pod 就是 Kubernetes 運行的最小單位,通常一個 Pod 會對應到一個應用程式服務(Application) 。在本系列文就是透過對應到一到數個 Docker Image 建立起來的服務,也因此一個 Pod 裡面可能會有一到多個 Container,也可以說是最小服務單位。
如果 Pod 是 Kubernetes 運行的最小「軟體」單位,那麼 Node 就是 Kubernetes 運行的最小硬體單位。一個 Node 通常對應到一台機器(無論實體或虛擬)。
Master Node 可以說是 Kubernetes 的指揮中心,我們就是透過他去管理其他的 Worker Node。
而 Kubernetes 中,由多個 Node 與 Master 組成的群集,就是所謂的 Cluster。
apiVersion: v1
kind: Pod
metadata:
name: ironman-dotnet-core-pod
labels:
app: demoApp
spec:
containers:
- name: ironman-dotnet-core-container
image: dotnet-core-ci-cd-lab:1.1
ports:
- containerPort: 3000