Kubernetes:命令式(Imperative)與宣告式(Declarative)管理的差異

更新於 發佈於 閱讀時間約 4 分鐘

Kubernetes 是一個開源的容器管理平台,它可以幫助您自動化容器應用程式的部署、擴展和管理。在 Kubernetes 中,有兩種主要的管理方式:命令式和宣告式。

命令式(Imperative)管理:

注重在「How to do」

命令式管理方式是通過直接給 Kubernetes 下達指令,告訴它應該如何進行操作。這些指令可能是使用 kubectl 命令行工具直接操作的,也可能是使用其他的客戶端工具或程式碼(shell script腳本)來執行的。

優點:

  1. 直觀和快速: 命令式管理是一種直觀的方式,對於單個操作很容易理解和執行。易於初學者,或是臨時測試功能。
  2. 即時反饋: 您可以立即看到您的操作結果,因為您直接在命令行中執行命令。
  3. 適用於單一任務: 對於一些簡單的操作,如創建一個臨時的資源或進行快速的設定更改,命令式方式較為方便。

缺點:

  1. 碎片化配置: 命令式方式操作容易導致管理配置的碎片化。因為每次操作都是單獨的命令,不同管理者難以維護和追蹤多個操作之間的相互關係。
  2. 難於重複執行: 由於操作步驟並不會被記錄,當需要重複執行或在不同叢集建立相同配置的測試環境時,很難確保一致性。
  3. 缺乏版本控制: 單一操作通常無法進行版本控制,無法輕鬆地追蹤設定變更、恢復操作或與團隊共同管理叢集。
  4. 難以自動化: 命令式管理方式不太適合自動化,因為它缺乏一個明確的描述來定義狀態,這使得自動化工作變得更困難。

範例:

創建一個名為 my-nginx 的 Deployment,並指定副本數為 3。以下是使用kubectl create的範例。

# 使用命令式方式創建 Deployment
kubectl create deployment my-nginx --image=nginx --replicas=3

宣告式(Declarative)管理:

注重在「What to do」

宣告式管理方式則是通過提供一個描述狀態的文件(通常是 YAML 格式),然後將該文件提交給 Kubernetes,讓 Kubernetes 根據這份文件建立所需的資源或是配置。

優點:

  1. 可追蹤性和可維護性: 宣告式管理通常使用 YAML檔來描述資源的狀態,這使得配置更易於追蹤和管理。
  2. 基礎架構即代碼 (IaC): 宣告式管理與基礎架構即代碼的理念相符,可以將管理用的設置撰寫成程式碼,利於未來的自動化和基礎架構管理。
  3. 易於自動化: 宣告式管理方式更容易於自動化。可以搭配使用 CI/CD 流程自動部署和更新應用程式,從而提高效率並降低人為錯誤的風險。
  4. 回滾和修復: 如果更新導致問題,您可以輕鬆地回滾到之前的配置狀態,以修復問題。

缺點:

  1. 學習曲線: 初學者可能需要一些時間來學習宣告式管理的方式,特別是理解和編寫 YAML 配置文件。
  2. 複雜性: 在YAML配置文件中表示複雜的拓撲關係、服務依賴可能需要花時間去規範和管理。

範例:

創建一個名為 my-nginx 的 Deployment,並指定副本數為 3。以下是使用YAML描述相同的 Deployment,並使用kubectl apply去做部屬。

apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 3
selector:
matchLabels:
app: my-nginx
template:
metadata:
labels:
app: my-nginx
spec:
containers:
- name: nginx
image: nginx

使用 kubectl 的 apply 命令來創建或更新這個 Deployment:

# 使用宣告式方式創建或更新 Deployment
kubectl apply -f my-nginx-deployment.yaml

總結

命令式管理方式快速直觀,但容易導致碎片化且不利於自動化。宣告式管理方式則更適合長期運營,具有可追蹤性、可維護性和一致性,適合自動化和版本控制。

raw-image


avatar-img
18會員
44內容數
歡迎來到「Marcos的方格子」!目前在「Marcos談科技」撰寫在職涯上學習到的知識,在「Marcos談書」分享我在日常的閱讀和心得,歡迎您的到來!!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Marcos的方格子 的其他內容
什麼是dynatrace? dynatrace在Gartner的分類是屬於APM(應用程式效能監控)的類別。
隨著應用程式底層架構的演變,監控工具也在不斷發展。第二代監控工具(Gen 2)逐漸顯露出其限制和不足,而第三代監控工具(Gen 3)已經在許多方面取得了突破性的進展。
應用程式效能監控(APM)的演變 Gen1-APM隨著JAVA興起日漸重要 應用程式效能監控市場的發展歷程可追溯至1990s末期,當時Wily Technology(後來被CA收購)和Precise Software處於領先地位。 第一代的應用程式效能管理(APM)解決方案因應Java的快速興
什麼是dynatrace? dynatrace在Gartner的分類是屬於APM(應用程式效能監控)的類別。
隨著應用程式底層架構的演變,監控工具也在不斷發展。第二代監控工具(Gen 2)逐漸顯露出其限制和不足,而第三代監控工具(Gen 3)已經在許多方面取得了突破性的進展。
應用程式效能監控(APM)的演變 Gen1-APM隨著JAVA興起日漸重要 應用程式效能監控市場的發展歷程可追溯至1990s末期,當時Wily Technology(後來被CA收購)和Precise Software處於領先地位。 第一代的應用程式效能管理(APM)解決方案因應Java的快速興
你可能也想看
Google News 追蹤
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章將提供一個完整的Kubernetes安裝指南,包括控制平面節點和工作節點的安裝過程。文章中還會提及一些參考資料和解決常見錯誤的方法。
Thumbnail
安裝環境需求 64位元Linux,核心版本為3.1以上,且能滿足Ducker安裝環境。 機器之間要能夠互通。 外部存取權限。 硬體資源:兩核心CPU、8G記憶體、硬碟30GB以上。 安裝Kubeadm與Ducker Kubeadm是Kubernetes的一鍵部署工具。 增加Kube
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
Thumbnail
本篇文章將教你如何在Kubernetes cluster內部署一個MongoDB,包括取得Manifests、建立Volume、部署實務、基本操作和結論。透過操作演示,讓你瞭解在實務上如何成功建立MongoDB,並進行基本操作。
Thumbnail
在Kubernetes cluster上建立Jenkins,並且使用動態方式建立Jenkins Agent。透過K8S解決傳統的Jenkins一對多架構的問題,最終建立基本Pipeline在Jenkins Web UI上,簡單驗證Jenkins engine正常運行。
Thumbnail
引言 在當今的技術世界中,Kubernetes 已成為容器化應用的領導平台。作為一個高效的容器編排系統,它不僅管理著容器的部署和擴展,還提供了必要的自動化支持,以保證應用的高可用性和性能。在這個框架中,自動擴展功能起著至關重要的作用,特別是在面對不斷變化的負載和需求時。
Thumbnail
本文將演示在安裝完 Kubernetes Cluster 後的基本元件安裝,包括 Calico/Calicoctl、Metric Server 和 Dashboard UI 的安裝方法以及相關問題與解決方式。
Thumbnail
這篇文章教你如何搭建Kubernetes Cluster,包括節點安裝前設定、軟體套件安裝、Control-Plane部署和加入運算節點等步驟。在建置之後,作者會分享一些基礎服務的安裝。希望這篇文章對你有所幫助。
Thumbnail
本文章將說明如果您想要從頭建置一組具有Loadbalancer HA架構的Kubernetes Cluster時,你可能會需要做的事前準備工作。
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章將提供一個完整的Kubernetes安裝指南,包括控制平面節點和工作節點的安裝過程。文章中還會提及一些參考資料和解決常見錯誤的方法。
Thumbnail
安裝環境需求 64位元Linux,核心版本為3.1以上,且能滿足Ducker安裝環境。 機器之間要能夠互通。 外部存取權限。 硬體資源:兩核心CPU、8G記憶體、硬碟30GB以上。 安裝Kubeadm與Ducker Kubeadm是Kubernetes的一鍵部署工具。 增加Kube
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
Thumbnail
本篇文章將教你如何在Kubernetes cluster內部署一個MongoDB,包括取得Manifests、建立Volume、部署實務、基本操作和結論。透過操作演示,讓你瞭解在實務上如何成功建立MongoDB,並進行基本操作。
Thumbnail
在Kubernetes cluster上建立Jenkins,並且使用動態方式建立Jenkins Agent。透過K8S解決傳統的Jenkins一對多架構的問題,最終建立基本Pipeline在Jenkins Web UI上,簡單驗證Jenkins engine正常運行。
Thumbnail
引言 在當今的技術世界中,Kubernetes 已成為容器化應用的領導平台。作為一個高效的容器編排系統,它不僅管理著容器的部署和擴展,還提供了必要的自動化支持,以保證應用的高可用性和性能。在這個框架中,自動擴展功能起著至關重要的作用,特別是在面對不斷變化的負載和需求時。
Thumbnail
本文將演示在安裝完 Kubernetes Cluster 後的基本元件安裝,包括 Calico/Calicoctl、Metric Server 和 Dashboard UI 的安裝方法以及相關問題與解決方式。
Thumbnail
這篇文章教你如何搭建Kubernetes Cluster,包括節點安裝前設定、軟體套件安裝、Control-Plane部署和加入運算節點等步驟。在建置之後,作者會分享一些基礎服務的安裝。希望這篇文章對你有所幫助。
Thumbnail
本文章將說明如果您想要從頭建置一組具有Loadbalancer HA架構的Kubernetes Cluster時,你可能會需要做的事前準備工作。