Kubernetes架構和部署

k8s組件
master節點:管理節點 管理平面組件
api server : api gateway
controller manager
scheduler
etcd 數據庫       

worker節點:被管理節點,運行容器
kubelet:k8s agent
container runtime:docker,containerd,cri-o
kube-proxy:service 網絡

?????????? ?? ?????????

正式開始,前言總結

Kubernetes架構和部署

Kubernetes(K8s) 架構相關知識,可總結核心要點

  1. 節點分類:K8s 集群分管理平面 Master 節點和 worker 節點 ,分工協作保障集群運行。
  2. Master 組件
    • api - server:作為集群入口,提供 RESTful API,實現各組件通信、資源操作及權限管控 。
    • scheduler:負責 Pod(容器組)調度,依據資源需求、節點狀態等選合適節點部署 Pod 。
    • controller - manager:包含各類控制器,如 Deployment 控制器保障副本數,節點控制器管理節點狀態,維持集群期望狀態 。
    • etcd:分布式鍵值存儲,存集群關鍵配置、狀態等數據,是集群 “大腦記憶”,需高可用部署 。
  3. worker 節點組件
    • kubelet:運行在 worker 節點,管控容器生命周期,接收 api - server 指令,確保 Pod 內容器正常運行,還與容器運行時交互 。
    • 容器運行時:支持 docker、containerd、cri - o 等,負責容器創建、運行、銷毀,是容器運行基礎環境 。
    • kube - proxy:實現集群網絡代理與負載均衡,處理 Service 網絡流量轉發,可通過模式(如 iptables、IPVS )配置,讓 Pod 間、內外網訪問 Service 更高效,“可選” 指部署等有靈活調整空間 。

一、附件(Add-ons)

二、網絡(Networking)

K8s 集群網絡分不同層次,保障容器、服務間通信,涵蓋:

  1. 為集群提供額外功能,輔助集群管理、增強使用體驗,包含:

  2. 網絡附件:是實現容器網絡互聯互通的關鍵組件,有多種方案可選,適配不同網絡需求,比如:
    • CNI:容器網絡接口標準,定義容器網絡配置規范,讓不同網絡插件能接入 K8s 。
    • flannel:簡單易用的 Overlay 網絡方案,為集群 Pod 分配子網,實現跨節點通信 。
    • calico:基于 BGP 等技術,支持大規模網絡場景,提供豐富網絡策略 如訪問控制。
    • Cilium:借助 eBPF 技術,在網絡性能、安全策略(如 L7 層策略)實現上更高效、靈活 。
  3. dns:為集群內服務、Pod 提供域名解析,讓應用可通過域名(而非 IP )訪問,簡化服務發現,像 CoreDNS 是常用 K8s DNS 組件 。
  4. ingress:管理集群對外 HTTP/HTTPS 流量接入,通過規則配置(如路徑、域名路由),將外部請求轉發到內部服務,實現統一入口和流量調度 。
  5. dashboard:可視化 Web 界面,方便用戶查看集群資源狀態(如 Pod 、節點信息)、進行簡單操作(如部署應用),輔助集群管理 。
  6. 節點網絡:集群節點(物理 / 虛擬機)自身的網絡,是容器網絡、服務網絡基礎,負責節點間數據傳輸 。
  7. service 網絡:為 Service 分配虛擬 IP ,實現服務暴露與負載均衡,有不同實現方式:
    • kube - proxy:K8s 原生組件,通過 iptables、IPVS 等模式,轉發 Service 流量到后端 Pod 。
    • cilium:除網絡附件功能外,也可參與 service 網絡流量處理,結合 eBPF 優化轉發 。
  8. Pod 網絡:Pod 間通信的網絡,依賴 CNI 插件實現,常用插件:
    • flannel:為 Pod 構建 Overlay 網絡,簡化跨節點 Pod 通信 。
    • Cilium:利用 eBPF 提升 Pod 網絡性能、擴展安全策略 。
    • calico:支持大規模 Pod 網絡,提供精細網絡策略管控 。

注:cilium插件可以替換kube-proxy 比較強大

三、總結大圖

四、安裝k8s 基于kubeadm和docker

Kubernetes 是一個分布式系統 , 是由很多主機節點組成 , 且各個節點的分工不同
Master 節點 : 管理( 控制 ) 節點 , 相當于公司的管理層
Master 節點主要由 API Server Controller-Manager Scheduler 三個組件,以及一個用于存儲集群狀態的 Etcd 存儲服務組成。

Node 節點 : 也稱為工作worker 節點或者 Minion 節點 , 相當于公司具體完成工作的基層員工
Node 節點則主要包含 Kubelet Kube Proxy 及容器運行時( 當前docker 仍是最為常用的實現) 三個組件,它們承載運行各類應用容器。

Kubernetes 組件: https://kubernetes.io/zh/docs/concepts/overview/components/

kubernetes 組件分成三種
Control Plane Components 控制平臺組件
Node Components 節點組件
Addons 附件(插件)

k8s在1.24版本之后,不在默認支持docker

部署環境主機情況,注意: Master節點內存至少2G以上,否則在初始化時會出錯

流程說明

每個節點主機的初始環境準備
準備代理服務 , 以便訪問 k8s.gcr.io ,或根據部署過程提示的方法獲取相應的 I 國內鏡像的 image (可
選)
Kubernetes 集群 API 訪問入口的高可用和 harbor (可選)
在所有 Master Node 節點都安裝容器運行時 Docker
在所有節點安裝和配置 cri-dockerd(kubernetes-v1.24 版本以后需要 )
在所有 Master Node 節點都安裝 kubeadm kubelet kubectl( 集群管理工具 , node 節點可
不安裝 )
在第一個 master 節點運行 kubeadm init 初始化命令 , 并驗證 master 節點狀態
在第一個 master 節點安裝配置 CNI 規范的網絡插件 flannel,calico
在其它 master 節點運行 kubeadm join 命令加入到控制平面集群中實現高可用 ( 測試環境可選 )
在所有 node 節點使用 kubeadm join 命令加入集群 , 并驗證 node 節點狀態
創建 pod 并啟動容器測試訪問 ,并測試網絡通信

初始環境準備
硬件準備環境: 每個主機至少2G以上內存,CPU2核以上
操作系統: 最小化安裝支持KubernetesLinux系統
唯一的主機名,MAC地址以及product_uuid和主機名解析
保證各個節點網絡配置正確,并且保證通信正常
禁用 swap
禁用 SELinux
放行Kubernetes使用到的相關端口或禁用firewalld/iptables
配置正確的時區和時間同步
內核參數優化
所有節點實現基于 ssh key 驗證(可選)
#DMI Desktop Management Interface )是一種由 Intel 制定的系統管理的硬件標準 , 定義了一組在
計算機系統中獲取有關硬件和系統配置的方法
# 查看 product_uuid
[root@ubuntu2204 ~] #cat /sys/class/dmi/id/product_uuid
# 按照前面規劃配置唯一的主機名(可選)
[root@ubuntu2204 ~] #hostnamectl set-hostname master1.zhang.org
# 注意 ; 網卡配置中不要加 search 指令
[root@ubuntu2204 ~] #cat /etc/netplan/01-netcfg.yaml

實現基于 ssh key 驗證 ( 可選 )
在10.0.0.101上實現到10.0.0.102--10.0.0.109 所有主機的 ssh key 驗證,方便后續管理

主機名并實現主機名解析(略)linux里面在/etc/hosts 里面進行修改
在 VMware 的宿主機Windows 上添加 hosts 解析(略)

IP 地址 標識名稱 主機名
10.0.0.100 kubeapi kubeapi.zhang.org
10.0.0.101 master1 master1.zhang.org
10.0.0.102 master2 master2.zhang.org
10.0.0.103 master3 master3.zhang.org
10.0.0.104 node1 node1.zhang.org
10.0.0.105 node2

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

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

相關文章

建造者模式及優化

建造者模式是一種創建型設計模式,它將復雜對象的構建過程與表示分離,使得同樣的構建過程可以創建不同的表示。核心思想是指揮者定流程,建造者填細節,通過多個步驟逐步構建對象,并允許靈活組合這些步驟以生成不同配置的…

【09】C++實戰篇——C++ 生成靜態庫.lib 及 C++調用lib,及實際項目中的使用技巧

文章目錄1 C 靜態庫.lib 生成1.1 靜態庫lib的生成方法和使用方法1.2 創建靜態庫項目1.3 編寫.h 和 .cpp文件1.4 設置 及 生成 DLL2 調用 C 靜態庫lib2.1 新建LIBtest及測試代碼2.2 靜態庫配置 及代碼調用測試3 實際項目中的使用技巧、及通用設置3.1 設置lib輸出路徑3.2 設置頭文…

飛算JavaAI:從寫不出代碼到絲滑開發,飛算JavaAI把小白從編程深淵撈進了正軌---它都讓我懷疑自己是不是多余的!

開篇介紹 對于很多初學者來說,編程是一項既有趣又充滿挑戰的任務。面對復雜的代碼和繁瑣的開發流程,常常會感到無從下手。不過,現在有了飛算JavaAI,這一切都將變得簡單起來。 它有啥實用功能呢? 比如: …

關于tresos Studio(EB)的MCAL配置之GtmCfg

Generic Time Module通用時鐘模塊GeneralGtmCfg_DevErrorDetect開發者錯誤檢測開關GtmCfg_DemErrorReporting診斷錯誤報告開關GtmCfg_VersionInfoApi獲取版本信息的接口開關GtmCfg_ConfigSetClockManagementUnitGlobal_Clock_Control_Numerator全局時鐘分頻器的分子Global_Cloc…

深入探索Weaviate:構建高效AI應用的數據庫解決方案

在當今數據驅動的世界中,高效地存儲、檢索和處理大規模數據成為了AI應用開發的關鍵挑戰。Weaviate作為一個開源的向量搜索引擎,憑借其強大的功能和靈活的架構,正逐漸成為開發者構建智能AI應用的首選工具。本文將深入探討Weaviate的核心概念、…

【開源】一款開源、跨平臺的.NET WPF 通用權限開發框架 (ABP) ,功能全面、界面美觀

文章目錄一、開源地址二、框架介紹三、技術路線四、適用場景五、功能模塊六、框架演示截圖一、開源地址 Gihub地址: https://github.com/HenJigg/wpf-abp B站學習視頻:https://www.bilibili.com/video/BV1nY411a7T8?spm_id_from333.788.player.switch&…

信創緩存中間件-TongRDS(Redis平替)安裝

TongRDS 是由東方通開發的國產 分布式內存數據緩存中間件,功能類似于 Redis,但它是完全自主研發的國產產品,是國內信創的一大重要組件。它兼容 Redis 的接口,能做到應用代碼無需改動即可替換使用。TongRDS是沒有直接的下載地址的。…

Git鏈接備用手冊

三板斧及其他:git init:初始化git倉庫git add . :將所在文件夾中的所有文件加入到暫存區git commit -m 自定義記錄信息 :將暫存區中的數據放到Git的倉庫(本地)中,并進行記錄(自定義&#xff0…

零信任網絡概念及在網絡安全中的應用

零信任網絡概念及在網絡安全中的應用 零信任網絡(Zero Trust Network)是一種顛覆傳統邊界安全的架構理念,其核心是**“永不信任,始終驗證”**(Never Trust, Always Verify)。它假設網絡內外均存在威脅&…

GaussDB case when的用法

1 case函數的類型case具有兩種格式&#xff0c;簡單case函數和case搜索函數。這兩種方式&#xff0c;大部分情況下可以實現相同的功能。1.1 簡單case函數語法case column when <condition> then value when <condition> then value ...... else value end;示例case…

Git用法記錄

代碼中沖突標記的含義&#xff1a;<<<<<<< HEAD 標記當前分支&#xff08;或本地&#xff09;的舊代碼作為分隔線 >>>>>>> [commit哈希] 標記從其他分支合并過來的新代碼&#xff08;這里的 c472b4b... 是提交哈希&#xff09; 暫存…

解決Android Studio中創建的模擬器第二次無法啟動的問題

Android Studio中創建的模擬器&#xff0c;首次啟動時一切正常。但是關閉模擬器&#xff0c;下一次啟動時一直顯示&#xff1a;Connecting to the Emulator&#xff0c;無法啟動。無法啟動的原因通常是默認開啟了模擬器的快速啟動功能&#xff0c;首次啟動時是“冷啟動”&#…

Linux設備驅動架構相關文章

學習一個領域&#xff0c;最好是從多個角度去學習&#xff0c;總有一個角度適合你。學習Linux驅動&#xff0c;從架構的角度把握&#xff0c;比直接看代碼更容易接受。以架構為主&#xff0c;結合細節學習&#xff0c;我稱之為自上而下的學習方法&#xff0c;就一個字&#xff…

YOLOv13 漢化優化部署版本:超圖增強自適應視覺感知的目標檢測系統

目錄 &#x1f4d6; 項目概述&#x1f680; YOLOv13 核心特性&#x1f4ca; 性能對比&#x1f5bc;? 可視化效果&#x1f527; 項目優化改進?? 快速部署指南?? 運行使用&#x1f4dd; 使用示例&#x1f527; 故障排除&#x1f31f; 項目特色&#x1f517; 相關鏈接&#…

uni-app webview的message監聽不生效(uni.postmessage is not a function)

uni-app開發app web-view組件message事件不觸發背景子頁面是h5&#xff08;非uni-app版&#xff09;子頁面是h5&#xff08;uni-app版&#xff09;背景 大致背景是 在uni-app開發的客戶端app中使用web-view嵌入h5頁面&#xff0c;在h5中通過postmessage API觸發父組件web-view…

【異常案例分析】使用空指針調用函數(非虛函數)時,沒有崩潰在函數調用處,而是崩在被調用函數內部

目錄 1、問題說明 2、代碼段地址與數據段地址 3、使用空指針調用BindWindow函數&#xff08;非虛函數&#xff09;&#xff0c;沒有崩在BindWindow函數的調用處&#xff0c;而是崩在函數內部 3.1、虛函數調用的二次尋址 3.2、崩潰在被調用函數內部 4、總結 C軟件異常排查…

鎖定中科院1區TOP!融合LSTM與Attention做時間序列預測 !

Transformer雖火&#xff0c;但在數據少、要求穩的時序預測場景中&#xff0c;LSTM仍是首選。尤其加上注意力機制后&#xff0c;更是彌補了LSTM的短板&#xff0c;增強了性能&#xff0c;實現了更精確的預測。這種組合不僅應用場景廣泛&#xff0c;工業界愛&#xff0c;學術界也…

在不可更改系統上構建數據響應機制的可選策略

在現代企業信息系統架構中&#xff0c;我們常常面臨如下挑戰&#xff1a;某個業務系統屬于“不可變更系統”&#xff0c;我們既不能修改其業務邏輯&#xff0c;也不能對其核心代碼做任何侵入式改動。但與此同時&#xff0c;我們又需要對該系統中的某些關鍵業務數據變更做出響應…

Docker 實戰 -- cloudbeaver

文章目錄前言文件目錄docker-compose.yml網絡連接前言 當你迷茫的時候&#xff0c;請點擊 Docker 實戰目錄 快速查看前面的技術文章&#xff0c;相信你總能找到前行的方向 上一篇文章 Docker 實戰 – Mysql 講述了用 docker 搭建 mysql 數據庫的過程, 連接數據庫的工具很多, …

Rust × WebAssembly 項目腳手架詳解

一、模板概覽 模板生成方式核心用途典型角色wasm-pack-templatecargo generate …把 Rust 代碼 打包成 npm 庫「底層算法/組件」作者create-wasm-appnpm init wasm-app構建純 JS/TS 項目&#xff0c;消費上面生成的 npm 包Web 前端/Node 服務rust-webpack-templatenpm init ru…