iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0

Kubernetes 是用於管理分散式系統的工具,透過 RESTful API 提供操作接口,而 YAML 則用來編寫配置文件,讓用戶能夠輕鬆地定義和管理 Kubernetes 中的資源。

因此了解 Kubernetes 前,將介紹以下背景知識。

Distributed system

分散式系統由多個獨立的計算節點組成,這些節點協同工作以提供可靠的服務和資源。與單一系統相比,分散式系統具有以下優點:

  1. 可擴展性:可以根據工作負載和需求擴展,通過添加新的節點來增強運算能力。
  2. 可用性:即使部分節點出現故障,系統仍能繼續運行,保證了高可用性。
  3. 效率性:通過最佳利用基礎硬體資源,提高系統性能和效率。

Kubernetes 的核心作用在於簡化這些複雜系統的部署和管理,提供了有效的容器編排和自動化工具。

Restful API

RESTful API 是一種基於 HTTP 的網路應用程式介面,旨在促進不同系統之間的通訊。REST(Representational State Transfer)是一種軟體架構風格,對 API 的運作方式設有特定條件。

REST 架構風格的主要原則包括:

  1. 統一介面:伺服器以標準格式傳輸資訊,這種格式稱為呈現。這個呈現格式可能與伺服器內部資源的實際格式不同。
  2. 無狀態:每個請求都是獨立的,伺服器不保留任何關於先前請求的狀態資訊。
  3. 隨需編碼:伺服器可以傳輸程式碼到用戶端,以便在需要時擴展或自訂用戶端的功能。

resflapi

Figure Source

一般來說,任何 REST API 呼叫的步驟如下:

  1. 用戶端發送請求:用戶端根據 API 文件的規範,以伺服器能夠理解的格式發送請求。
  2. 伺服器驗證:伺服器對用戶端進行身份驗證,確認用戶端有權執行該請求。
  3. 伺服器處理請求:伺服器接收並處理請求,執行相應的操作。
  4. 伺服器發送回應:伺服器將處理結果返回給用戶端。回應中會包含請求是否成功的訊息以及請求所需的任何其他資訊。

Kubernetes 利用 RESTful API 提供與集群互動的功能。通過這些 API,使用者可以建立、更新、刪除或查詢集群中的資源,例如 Pods、Services 和 Deployments。

yaml

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

/images/emoticon/emoticon08.gif

Reference


上一篇
[Day 2] More about container
下一篇
[Day 4] Basic concepts of Kubernetes
系列文
關於新手會想知道Kubernetes的幾件事情30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言