We couldn't find a match for given <KEYWORD>, please try again.

什麼是 Kubernetes 部署?

Kubernetes 部署會告知 Kubernetes 如何建立或修改保存容器化應用程式的 Pod 執行實例,也可有效率地擴充複寫 Pod 數量、透過受控的方式推展更新程式碼,或在必要時回復至先前的部署版本。Kubernetes 部署會使用 kubectl 指令行工具來完成,該工具可安裝在各種平台上,包括 Linux、macOS 和 Windows。

Kubernetes 現況

《讓 Kubernetes 準備就緒並開始運作》(Kubernetes Up and Running)

使用 Kubernetes 部署可享有哪些優勢?

Kubernetes 能自動化進行部署、擴充和更新生產環境應用程式所涉及的工作和重複的手動功能,藉此節省時間並減少錯誤。由於 Kubernetes 部署控制器會持續監控 Pod 和節點的運作狀況,因此能即時做出變更 (例如替換故障 Pod,或略過當機節點),以確保關鍵應用程式的續航力。

部署會自動啟用 Pod 執行實例,並確保其在 Kubernetes 叢集中的所有節點上按照定義的方式執行。自動化程度越高,部署速度就越快,而錯誤也越少。

什麼是 Kubernetes 部署策略?

Kubernetes 會提供多種部署策略,以因應各式各樣的應用程式開發和部署需求。定義好應用程式的目標狀態後,部署控制器就會開始運作,並以受控的速率做出變更,藉此將部署最佳化。 

什麼是 Kubernetes 重新建立部署?

重新建立策略會終止目前正在執行的 Pod,並使用新版來「重新建立」這些 Pod。這項策略通常會運用於使用者活動不會造成問題的開發環境中。

由於重新建立部署會完全更新 Pod 和應用程式狀態,預期會因為關閉舊有部署和初始化新部署執行實例,發生停機時間。

什麼是 Kubernetes 滾動式更新部署?

滾動式更新部署會提供依序進行且更出色的移轉作業,以利自某個應用程式版本移轉至較新版本。新的 ReplicaSet 會搭配新版啟動,而隨著新版啟動,舊版複寫則會透過系統化方式終止。最後,舊版的所有 Pod 都將由新版取而代之。 

滾動式更新部署可在不同版本之間進行組織化轉換,因此相當具有優勢。不過,可能需要花費不少時間來完成。

什麼是 Kubernetes 藍 / 綠部署?

藍 / 綠策略可在新版於生產環境中測試完成後,從舊版快速轉換為新版。在這項策略下,新的「綠色」版本會搭配現有的「藍色」版本一同部署。若足以確信「綠色」版本能依設計運作,在執行負載平衡之 Kubernetes 服務物件的選取器欄位中,版本標籤將遭到更換。這項動作會立即將流量切換至新版。

Kubernetes 藍 / 綠部署選項可快速進行推展,以防發生版本問題。不過,這項策略會在實際切換前執行兩個版本,因此將耗用雙倍的資源。

什麼是 Kubernetes 金絲雀部署?

在金絲雀部署中,一小組使用者會路由至在較小規模 Pod 子集上執行的新版應用程式。其目的是要在生產環境中測試功能。在確信測試並未出錯後,新版的複寫就會進行擴充,並依序取代舊版。

金絲雀部署相當適合想要以一小組使用者測試新功能的情境。由於您可以輕鬆回復金絲雀部署,這項策略有助於在不造成顯著風險的情況下,衡量新程式碼將對整體系統作業帶來哪些衝擊。

Kubernetes 部署適合哪些使用情境?

要管理和擴充 Kubernetes 叢集上應用程式的執行方式,部署是最簡單的方式,而 Kubernetes 的開放式 API 可簡化整合至 CI/CD Pipeline 的作業。 

下方列出了幾個常見的部署使用情境:

  • 執行無狀態網頁伺服器,例如熱門的開放原始碼 Nginx。部署可要求具現化固定數量的 Pod 複寫,而 Kubernetes 將於部署期間維持該 Pod 數量。
  • 需要使用持續性儲存的應用程式 (例如資料庫執行實例),可使用 StatefulSet 類型的部署,並裝載持續性磁區,以確保資料的完整性和壽命。
  • 部署可隨著工作負載增加,自動擴充叢集中的複寫數量。舉例來說,部署可自動平衡複寫之間的傳入要求、在需求增加時建立新的複寫,並在需求下降時終止複寫。

如何建立 Kubernetes 部署?

如同多數 Kubernetes 一樣,部署會在 YAML (或 JSON) 檔案中定義,然後使用 kubectl apply 來建立。

舉例來說,名為「web-deployment」且包含四個複寫的 Nginx 部署,其 YAML 可能如下方所示:

apiVersion: apps/v1;

kind: Deployment

metadata:

name: web-deployment

spec:

selector:

matchLabels:

app: nginx

replicas: 4

template:

metadata:

labels:

app: nginx

spec:

containers:

- name: nginx

image: nginx:1.17.0

ports:- containerPort: 80


在這個範例中,中繼資料顯示「web-deployment」會使用四個已複寫 Pod 建立 (replicas: 4),而選取器則會指定部署將如何使用標籤 (app: nginx) 尋找 Pod。容器 (nginx) 會執行版本 1.17.0 的容器映像,而部署將開放連接埠 80,以供 Pod 使用。

您也可以使用設定檔案中的「env」或「envFrom」欄位,以定義容器的環境變數。部署定義完成後,就會自 YAML 檔案搭配以下內容來建立:kubectl apply -f https://[location/web-deployment.yaml]


Kubernetes 中的 JSON 和 YAML 有何差異?

YAML (YAML Ain’t Markup Language) 和 JSON (JavaScript Object Notation) 都可用來定義 Kubernetes 資源。許多使用者會基於可讀性,而偏好使用 YAML。不過,由於 YAML 為 JSON 的子集,任何有效的 JSON 檔案也等同有效的 YAML 檔案。

如何更新 Kubernetes 部署?

您可以透過變更部署中的 Pod 範本規格,以著手更新 Kubernetes 部署。此舉將自動推展更新作業。

變更 Pod 範本將導致執行中的 Pod 無法接受請求,以便在所有 Pod 皆可遭到終止後,縮減為原先的規模。當 Pod 遭到終止後,就會使用更新的 Pod 範本來建立新的 Pod。

如何回復 Kubernetes 部署?

如果部署已確定無法使用,或當中存在錯誤,您可以使用 kubectl 進行回復和更新。若要回復至先前的版本,請使用下列指令:

Kubectl rollout undo [deployment_name] Adding the argument–to-revision=will roll back to that specific version of the deployment

如何擴充 Kubernetes 部署?

部署可在特定應用程式的需求增加時,協助擴充複寫版本。請使用 kubectl scale 指令來執行這項作業。舉例來說,若要將部署擴充為多達 20 個複寫,請在指令行中輸入以下內容:

Kubectl scale [deployment-name] –replicas 20

Keywords:

2-5 times

  • Kubernetes deployment (already 11)

Add more:

  • Kubetcl (1-2 more)
  • Kubernetes cluster (1-2 more)
  • Metadata (1-2 more)
  • Selector (already 3)
  • Command line (1 more)
  • Container image (1 more)
  • Environment variables (1 more)
  • Linux (1 more)

相關解決方案與產品

實驗室:應用程式現代化改造

在短短數週內,將應用程式移至雲端。

Tanzu Kubernetes for Operation

現代化多雲容器基礎架構的基礎。

Tanzu Application Platform

在 Kubernetes 上享受優異的多雲開發人員體驗。