Kubernetes 是用於管理分散式系統的工具,透過 RESTful API 提供操作接口,而 YAML 則用來編寫配置文件,讓用戶能夠輕鬆地定義和管理 Kubernetes 中的資源。
因此了解 Kubernetes 前,將介紹以下背景知識。
分散式系統由多個獨立的計算節點組成,這些節點協同工作以提供可靠的服務和資源。與單一系統相比,分散式系統具有以下優點:
Kubernetes 的核心作用在於簡化這些複雜系統的部署和管理,提供了有效的容器編排和自動化工具。
RESTful API 是一種基於 HTTP 的網路應用程式介面,旨在促進不同系統之間的通訊。REST(Representational State Transfer)是一種軟體架構風格,對 API 的運作方式設有特定條件。
REST 架構風格的主要原則包括:
一般來說,任何 REST API 呼叫的步驟如下:
Kubernetes 利用 RESTful API 提供與集群互動的功能。通過這些 API,使用者可以建立、更新、刪除或查詢集群中的資源,例如 Pods、Services 和 Deployments。
YAML(Yet Another Markup Language)是一種直觀的數據序列化格式,Kubernetes 使用 YAML 文件來描述其資源的配置。
這些 YAML 文件定義了應用程式的配置、服務要求和集群管理策略,使得 Kubernetes 能夠根據這些描述來自動化部署和調度容器。
以下是一個 YAML 文件範例,展示了如何使用 Kubernetes 的 Pod
來從 Dockerfile 建立 Docker 映像檔。這個 YAML 文件描述了一個簡單的 Pod,其中包含了一個容器,並用 Dockerfile 中指定的映像檔來運行它。
其中,Pod 是 Kubernetes 中的基本運行單位,代表了一組共享相同網路 namespace 和 storage volume 的容器。
假設我們已經有一個 Dockerfile 並且已經將 image file 推送到 Docker Hub 或其他 container registry。這個 YAML 文件會使用那個 image file 來建立 contatiner。
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: my-container
image: your-dockerhub-username/your-image-name:tag
ports:
- containerPort: 80
在這個 YAML 文件中:
apiVersion: v1
:指定了 Kubernetes API 的版本。kind: Pod
:指定了資源的類型為 Pod。metadata
:包含了 Pod 的名稱。spec
:定義了 Pod 的規格。
containers
:列出了一個或多個容器。
name
:容器的名稱。image
:指定要使用的 Docker image file。ports
:容器連接的端口。這個 YAML 文件會告訴 Kubernetes 建立一個 Pod,並在其中運行指定的 Docker image file。
明天開始學習 Kubernetes XD