k8s 的基本原理、架構圖、使用步驟和注意事項

Kubernetes(k8s)是一個開源的容器編排平臺,用于自動化部署、擴展和管理容器化應用。以下是其基本原理、使用步驟和注意事項的總結:


一、k8s 基本原理

  1. 核心架構

    • Master 節點:控制集群的核心組件,包括:
      • API Server:所有操作的入口,提供 RESTful API。
      • Scheduler:將 Pod 分配到合適的 Node。
      • Controller Manager:維護集群狀態(如副本數、故障檢測)。
      • etcd:分布式鍵值存儲,保存集群狀態。
    • Worker 節點:運行容器化應用,包含:
      • kubelet:與 Master 通信,管理 Pod 生命周期。
      • kube-proxy:處理網絡規則和負載均衡。
      • 容器運行時(如 Docker、containerd)。
  2. 關鍵概念

    • Pod:最小部署單元,包含一個或多個共享資源的容器。
    • Deployment:定義 Pod 的副本數和更新策略。
    • Service:為 Pod 提供穩定的網絡訪問(ClusterIP、NodePort、LoadBalancer)。
    • Namespace:邏輯隔離集群資源(如開發、生產環境)。
    • ConfigMap/Secret:管理配置和敏感數據。
  3. 工作流程

    • 用戶通過 kubectl 或 API 提交 YAML 描述文件。
    • Master 組件協調資源分配,調度 Pod 到 Node。
    • kubelet 拉取鏡像并啟動容器,持續監控狀態。

以下是一個簡化的 Kubernetes 架構圖,描述 物理機(服務器)、K8s 集群、應用節點 之間的關系,并用文字逐步解釋關鍵組件和交互流程:

Kubernetes 架構圖

在這里插入圖片描述


關鍵關系說明

  1. 物理服務器層

    • 提供硬件資源(CPU/內存/存儲/網絡)。
    • 每臺物理機部署一個角色:
      • Master 節點:運行控制平面組件(API Server、Scheduler 等)。
      • Worker 節點:運行應用負載(Pod)。
  2. K8s 集群層

    • Master 節點
      • API Server:接收用戶或工具(如 kubectl)的指令。
      • Scheduler:決定 Pod 運行在哪個 Worker 節點。
      • etcd:存儲集群狀態(如 Pod、Service 配置)。
    • Worker 節點
      • kubelet:與 Master 通信,管理 Pod 生命周期。
      • kube-proxy:處理節點上的網絡規則(Service 流量轉發)。
      • Pod:最小調度單元,包含一個或多個容器。
  3. 應用層

    • 每個 Pod 中運行具體的容器化應用(如 Nginx、MySQL)。
    • 應用通過 Service 或 Ingress 暴露給外部訪問。

交互流程示例

  1. 用戶部署應用

    • 用戶通過 kubectl apply -f app.yaml 提交請求到 API Server。
    • Scheduler 根據資源情況,將 Pod 分配到 Node1 或 Node2。
    • 目標節點的 kubelet 拉取鏡像并啟動容器。
  2. 應用訪問

    • 其他 Pod 或外部用戶通過 Service(如 ClusterIP)訪問應用。
    • kube-proxy 負責將請求轉發到具體的 Pod。
  3. 高可用性

    • 若 Node1 宕機,Master 檢測到故障后,會在 Node2 上重新調度 Pod。

注意事項

  1. 物理機與 K8s 節點的映射

    • 生產環境中,建議 Master 節點獨占物理機(避免資源競爭)。
    • Worker 節點可以跨多臺物理機,提高容災能力。
  2. 網絡要求

    • 所有物理機需在同一網絡,確保 Pod 間可通信。
    • 避免防火墻阻斷 K8s 組件端口(如 6443、10250)。
  3. 存儲卷

    • 如果應用需要持久化數據,需掛載物理機的存儲(如 NFS)或云存儲(如 AWS EBS)。

通過此架構圖,可以清晰看到:
物理機提供資源 → K8s 管理調度 → 應用運行在 Pod 中
實際部署時,還需考慮網絡插件(如 Calico)、負載均衡(如 MetalLB)等組件。


二、使用步驟

1. 安裝與初始化
  • 安裝工具:kubectlminikube(本地測試)或 kubeadm(生產集群)。
  • 初始化集群(以 kubeadm 為例):
    kubeadm init --apiserver-advertise-address=<MASTER_IP>
    
  • 加入 Worker 節點:
    kubeadm join <MASTER_IP>:6443 --token <TOKEN>
    
2. 部署應用
  • 編寫 YAML 文件(例如 deployment.yaml):

    apiVersion: apps/v1
    kind: Deployment
    metadata:name: nginx-deployment
    spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latestports:- containerPort: 80
  • 應用配置:

    kubectl apply -f deployment.yaml
    
3. 暴露服務
  • 創建 Service:
    apiVersion: v1
    kind: Service
    metadata:name: nginx-service
    spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: LoadBalancer
    
4. 監控與維護
  • 查看資源狀態:
    kubectl get pods,svc,deployments
    
  • 日志與調試:
    kubectl logs <pod-name>
    kubectl describe pod <pod-name>
    

三、注意事項

  1. 資源規劃

    • 確保 Node 資源(CPU、內存)充足,避免 Pod 因資源不足被驅逐。
    • 使用 Resource Requests/Limits 限制容器資源占用:
      resources:requests:cpu: "100m"memory: "256Mi"limits:cpu: "500m"memory: "1Gi"
      
  2. 高可用性

    • 生產環境需部署多 Master 節點,避免單點故障。
    • 使用 Horizontal Pod Autoscaler (HPA) 自動擴縮容。
  3. 安全實踐

    • 啟用 RBAC 控制權限,避免過度授權。
    • 定期更新 k8s 版本,修復安全漏洞。
    • 敏感數據使用 Secret 而非 ConfigMap。
  4. 網絡與存儲

    • 選擇適合的 CNI 插件(如 Calico、Flannel)解決網絡隔離。
    • 持久化存儲使用 PersistentVolume (PV)PersistentVolumeClaim (PVC)
  5. 故障排查

    • 常見問題:
      • Pod 一直 Pending:檢查資源或調度約束。
      • CrashLoopBackOff:查看容器日志排查應用錯誤。
    • 使用 kubectl events 查看集群事件。
  6. 備份與恢復

    • 定期備份 etcd 數據:
      etcdctl snapshot save backup.db
      

四、常用命令速查

功能命令示例
查看 Podkubectl get pods -A
進入容器kubectl exec -it <pod> -- bash
刪除資源kubectl delete -f file.yaml
查看 Servicekubectl get svc
滾動更新kubectl set image deploy/nginx nginx=nginx:1.20

通過理解這些原理和步驟,可以高效使用 k8s 管理容器化應用。生產環境中建議結合監控工具(Prometheus)和日志系統(ELK)完善運維體系。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88713.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88713.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88713.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Qt 多線程編程:單例任務隊列的設計與實現

引言&#xff1a; 在現代應用程序開發中&#xff0c;多線程編程已成為處理異步任務的標配。對于 GUI 應用而言&#xff0c;保持主線程的響應性尤為重要。本文將詳細介紹一個基于 Qt 的單例任務隊列實現方案&#xff0c;它通過線程池和單例模式&#xff0c;優雅地解決了后臺任務…

OpenEuler操作系統中檢測插入的USB設備并自動掛載

OpenEuler操作系統中檢測插入的USB設備并自動掛載 項目需求&#xff1a;工控機上openeuler操作系統是無界面版本的&#xff0c;在工控機上連接了激光雷達&#xff0c;當激光雷達采集完數據&#xff0c;我們要將采集數據導入u盤&#xff0c;故需要在工控機上插入u盤&#xff0c;…

《Spring 中上下文傳遞的那些事兒》Part 11:上下文傳遞最佳實踐總結與架構演進方向

&#x1f4dd; Part 11&#xff1a;上下文傳遞最佳實踐總結與架構演進方向 經過前面幾篇文章的深入探討&#xff0c;我們已經系統性地學習了 Spring 應用中上下文傳遞的各種技術原理、常見問題以及解決方案。從 Web 請求上下文到異步任務、從多租戶隔離到日志脫敏&#xff0c;…

使用云虛擬機搭建hadoop集群環境

使用云虛擬機搭建hadoop集群環境 安裝jdk17 配置docker網絡 docker network create --subnet172.18.0.0/16 hadoop 172.18.0.0&#xff1a;這是子網的網絡地址&#xff0c;也就是這個網絡的起始地址。/16&#xff1a;這是子網掩碼&#xff08;Network Mask&#xff09;&#x…

【機器學習】吳恩達機器學習課程代碼作業-Python版本

吳恩達老師的機器學習課程作業是MATLAB版本&#xff08;Octave&#xff09;的&#xff0c;現在有點過時了&#xff0c;我參考了幾位大牛的代碼&#xff0c;將作業改成了Python3.6版本&#xff0c;并做了中文注釋&#xff0c;推薦使用Jupyter notebook。Python作業使用了原版數據…

2025年人工智能、虛擬現實與交互設計國際學術會議

重要信息 官網&#xff1a;www.aivrid.com 時間&#xff1a;2025年10月17-19日 地點&#xff1a;中國-東莞 部分介紹 征稿主題 包括但不限于&#xff1a; 生物特征 模式識別 機器視覺 專家系統 深度學習 智能搜索 自動編程 智能控制 智能機器…

SHA-256算法流程分析與詳解——Github工程結合示例和動畫演示

近日筆者在學習區塊鏈的相關知識&#xff0c;接觸到SHA-256算法&#xff0c;這里做一個知識梳理和總結。 強烈推薦大家自行去學習下面鏈接github上的工程&#xff0c;作者的動畫演示和解釋做的非常出色&#xff0c;邏輯非常清晰&#xff0c;B站搬運的對應的油管的講解視頻也放…

CSPNet: A New Backbone that can Enhance Learning Capability of CNN (CSP模塊)

3. Method 方法 3.1 Cross Stage Partial Network 跨階段局部網絡 3.1.1 Cross Stage Partial Network 跨階段局部網絡 3.1.1.1 ResNet 和 DenseNet 的優缺點主流的卷積神經網絡&#xff08;CNN&#xff09;架構&#xff0c;如ResNet [8]、ResNeXt [37]、DenseNet [11]&#x…

前端學習4:小白入門注冊表單的制作(包括詳細思考CSS、JS實現過程)

這篇我們來做一個簡單表單&#xff0c;即常見的注冊頁面吧~學習完這篇我們將學習到Input、label、CSS偽類、CSS入門、更多的JS操作等。。一、首先明確需求&#xff1a;直接模仿常見的注冊頁面&#xff0c;包括&#xff1a;用戶名、Email、性別&#xff08;單選按鈕男/女&#x…

強化學習 (RL) 新突破:超越游戲,走向復雜現實決策

強化學習 (RL) 新突破&#xff1a;超越游戲&#xff0c;走向復雜現實決策 強化學習&#xff08;Reinforcement Learning&#xff0c; RL&#xff09;作為人工智能的核心范式之一&#xff0c;歷經數十年的發展&#xff0c;正迎來一場深刻的范式轉移。曾以戰勝人類頂尖選手的Alph…

2025年6-7月AI領域關鍵進展:從藥物研發到全球監管--AI深度融入產業與社會

2025年6月至7月&#xff0c;人工智能領域繼續以驚人速度發展&#xff0c;在技術突破、行業應用、政策法規、企業戰略及學術研究等方面取得了一系列重要里程碑。以下為關鍵動態&#xff1a;一、技術突破&#xff1a; AI向生命科學和認知科學縱深挺進DeepMind啟動AI設計藥物人體試…

【TOOL】ubuntu升級cmake版本

文章目錄一、下載cmake腳本二、安裝一、下載cmake腳本 在編譯新工程時遇到cmake版本過低的情況&#xff0c;到 cmake官網 下載指定cmake安裝腳本&#xff1a; 若需下載指定版本&#xff0c;見上圖右上角藍框。 二、安裝 # 賦予可執行權限 sudo chmod x cmake-3.31.8-linux-x8…

GMSK調制解調系統的matlab性能仿真,對比維特比解調,1bit差分解調,2bit差分解調

目錄 1.前言 2.算法運行效果圖預覽 3.算法運行軟件版本 4.部分核心程序 5.算法仿真參數 6.算法理論概述 7.參考文獻 8.算法完整程序工程 1.前言 GMSK(Gaussian Minimum Shift Keying&#xff0c;高斯最小頻移鍵控)是一種連續相位調制技術&#xff0c;基于MSK調制改進而…

SQL138 連續兩次作答試卷的最大時間窗

SQL138 連續兩次作答試卷的最大時間窗 問題分析 找出2021年至少有兩天作答的用戶計算每個用戶連續兩次作答的最大時間窗基于歷史數據預測在這個時間窗內平均會做多少套試卷 版本1 with-- 功能?&#xff1a;篩選2021年至少有兩天作答的用戶及其作答記錄-- 子查詢找出2021年…

TensorFlow2 study notes[2]

文章目錄tf.autodiff.ForwardAccumulatorreferencestf.autodiff.ForwardAccumulator the function can be used to achieve the Computation of Jacobian-vector products with forward-mode autodiff. primals is variables need to watch.tangents is direction vector. …

穩定幣將成為新時代的重要金融工具

在數字經濟加速滲透的今天,加密貨幣作為一種新型價值載體,正深刻改變著全球金融的運作邏輯。其中,穩定幣與非穩定幣構成了加密貨幣生態的兩大支柱,二者在設計邏輯、應用場景和市場表現上呈現出顯著差異。 穩定幣錨定法定貨幣 穩定幣是一類以法定貨幣、大宗商品或其他資產…

Constants

本節是《Solidity by Example》的中文翻譯與深入講解&#xff0c;專為零基礎或剛接觸區塊鏈開發的小白朋友打造。我們將通過“示例 解說 提示”的方式&#xff0c;帶你逐步理解每一段 Solidity 代碼的實際用途與背后的邏輯。 Solidity 是以太坊等智能合約平臺使用的主要編程語…

五鏡頭傾斜攝影相機的技術優勢與應用原理

傾斜攝影技術作為三維實景建模的核心手段&#xff0c;其硬件設計直接影響數據采集效率與模型質量。在眾多鏡頭配置方案中&#xff0c;五鏡頭結構&#xff08;下視前、后、左、右四個傾斜視角&#xff09;已成為行業主流選擇。這一設計并非偶然&#xff0c;而是基于嚴苛的技術需…

ThinkSound V2版 - 一鍵給無聲視頻配音,為AI視頻生成匹配音效 支持50系顯卡 一鍵整合包下載

ThinkSound 是阿里通義實驗室開源的首個音頻生成模型&#xff0c;它能夠讓AI像專業“音效師”一樣&#xff0c;根據視頻內容生成高度逼真、與視覺內容完美契合的音頻。 ThinkSound 可直接應用于影視后期制作&#xff0c;為AI生成的視頻自動匹配精準的環境噪音與爆炸聲效&#x…

如何從0開始構建自己的第一個AI應用?(Prompt工程、Agent自定義、Tuning)

一、前言 從0開始基于自定義Agent構建AI應用&#xff0c;涉及從創建智能Agent到使用、測試及優化提示詞等一系列步驟。前置&#xff1a;什么是LLM、Prompt、Mcp和Agent&#xff1f; 二、步驟一&#xff1a;規劃和設計AI應用 在創建AI應用之前&#xff0c;你需要明確應用的目標…