k8s之控制器詳解

1.deployment:適用于無狀態服務

1.功能

????????(1)創建高可用pod

? ? ? (2)滾動升級/回滾

? ? ? (3)平滑擴容和縮容

2.操作命令

(1)回滾

# 回滾到上一個版本
kubectl rollout undo deployment/my-app# 回滾到特定版本(先查看歷史)
kubectl rollout history deployment/my-app
kubectl rollout undo deployment/my-app --to-revision=2

(2)平滑擴容和縮容

????????手動擴縮容

# 擴容到 5 個副本
kubectl scale deployment/my-app --replicas=5# 縮容到 2 個副本
kubectl scale deployment/my-app --replicas=2

????????自動擴縮容(HPA)

# 創建 HPA(CPU 使用率超過 50% 時擴容,最多 10 個 Pod)
kubectl autoscale deployment/my-app --min=2 --max=10 --cpu-percent=50

3.滾動升級/回滾圖解(先創建出新的,然后用新的逐步替換出舊的)

4.滾動升級/回滾示例

apiVersion: apps/v1
kind: Deployment
metadata:name: my-httpd          # Deployment 名稱labels:app: httpd            # 標簽(用于 Service 選擇器匹配)
spec:replicas: 3             # Pod 副本數(高可用)revisionHistoryLimit: 5 # 保留的歷史版本數(用于回滾)strategy:type: RollingUpdate   # 滾動升級策略rollingUpdate:maxSurge: 1         # 升級時最多臨時超出的 Pod 數量maxUnavailable: 0   # 升級時允許不可用的 Pod 數量(0 表示全量可用)selector:matchLabels:app: httpd          # 匹配 Pod 的標簽(必須與 template 一致)template:metadata:labels:app: httpd        # Pod 標簽(Service 通過此選擇器關聯)spec:affinity:          # 反親和性:將 Pod 分散到不同節點podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchLabels:app: httpdtopologyKey: kubernetes.io/hostnamecontainers:- name: httpdimage: httpd:alpine   # 容器鏡像ports:- containerPort: 80   # 容器監聽的端口(targetPort)resources:requests:cpu: "100m"       # 最小資源請求(HPA 自動擴縮容依據)memory: "128Mi"limits:cpu: "200m"       # 資源上限memory: "256Mi"livenessProbe:        # 健康檢查httpGet:path: /port: 80initialDelaySeconds: 5periodSeconds: 10

5.hpa擴縮容示例


五.HPA彈性控制器:監控控制器,實現集群的自動擴縮容設置控制器:---kind: DeploymentapiVersion: apps/v1metadata:name: mydeployspec:replicas: 1selector:matchLabels:app: deploy-httpdtemplate:metadata:labels:app: deploy-httpdspec:containers:- name: webimage: myos:httpdresources:           # 為該資源設置配額requests:          # HPA 控制器會根據配額使用情況伸縮集群cpu: 300m        # CPU 配額---kind: Service   #負載均衡apiVersion: v1metadata:name: websvcspec:type: ClusterIPclusterIP: 10.245.1.80selector:app: deploy-httpdports:- protocol: TCPport: 80targetPort: 80HPA 控制器:---kind: HorizontalPodAutoscalerapiVersion: autoscaling/v2metadata:name: myhpaspec:behavior:                # 窗口穩定期,這個期間的資源變化scaleDown:stabilizationWindowSeconds: 60scaleTargetRef:          # 指定控制器kind: DeploymentapiVersion: apps/v1name: mydeployminReplicas: 1           # 副本數量      maxReplicas: 3metrics:                 # 擴縮容設置     - type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 50 #百分比,節點超過設置的cpu資源的百分之50,則擴容節點,平均資源小于值,縮容

2.statefulset:有狀態的服務,(redis,mysql等)

? ? ? ? 通過headless無頭服務,暴露每個pod的唯一dns地址

????????訪問方式 :redis-0.redis-service.default.svc.cluster.local(0個-服務名.----)

(1) Headless Service 配置# service-headless.yaml
apiVersion: v1
kind: Service
metadata:name: redis-service  # 名稱需與 StatefulSet 的 serviceName 一致
spec:clusterIP: None     # Headless Service 的關鍵配置selector:app: redis        # 匹配 StatefulSet 的 Pod 標簽ports:- protocol: TCPport: 6379        # Service 端口,集群內部的訪問端口,nodeport集群外部的訪問端口targetPort: 6379   # Pod 端口,用于service,后端服務的端口(2) StatefulSet 配置
# statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:name: redis
spec:serviceName: "redis-service"  # 必須與 Headless Service 名稱一致replicas: 3selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: redis:alpineports:- containerPort: 6379 容器里面的端口volumeClaimTemplates:  # 每個 Pod 獨立存儲- metadata:name: dataspec:storageClassName: "ssd"resources:requests:storage: 10Gi

3.daemonset:守護進程,保證每個node上都運行一個容器(Prometheus日志,elk監控等)

# DaemonSet 示例:Fluentd 日志收集
apiVersion: apps/v1
kind: DaemonSet
metadata:name: fluentd
spec:selector:matchLabels:name: fluentdtemplate:metadata:labels:name: fluentdspec:containers:- name: fluentdimage: fluent/fluentdvolumeMounts:- name: varlogmountPath: /var/logvolumes:- name: varloghostPath:path: /var/log

4.job和cronjob:定時任務的pod,數據備份,定時器清理等(執行完后pod銷毀)

5.HPA彈性控制器:自動擴縮容

# nginx-deployment.yamlapiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploy  # 此名稱必須與HPA中的scaleTargetRef.name一致
spec:replicas: 3template:spec:containers:- name: nginximage: nginxresources:requests:cpu: "100m"# HPAapiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:name: nginx-hpa
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: nginx-deploy  # 必須與集群中Deployment名稱一致minReplicas: 2maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 50  # CPU使用率目標50%behavior:  # 擴縮容行為控制(Kubernetes 1.18+)scaleDown:  # 縮容配置stabilizationWindowSeconds: 300  # 縮容冷卻時間5分鐘(默認300秒)policies:- type: Percent  # 按百分比縮容value: 10      # 每次最多縮容10%的PodperiodSeconds: 60  # 每60秒評估一次- type: Pods     # 按固定數量縮容(與Percent二選一)value: 1       # 每次最多縮容1個PodscaleUp:  # 擴容配置stabilizationWindowSeconds: 60  # 擴容冷卻時間1分鐘(默認0秒)policies:- type: Percentvalue: 100     # 允許瞬間擴容100%的Pod(緊急情況下)periodSeconds: 15- type: Podsvalue: 4       # 每次最多擴容4個Pod

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

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

相關文章

.NET Core中的配置系統

傳統配置方式文件Web.config 進行配置。ConfigurationManager類配置。.NET配置系統中支持配置方式文件配置(json、xml、ini等)注冊表環境變量命令行自定義配置源Json文件配置方式實現步驟:創建一個json文件,把文件設置 為“如果較…

kafka的消費者負載均衡機制

Kafka 的消費者負載均衡機制是保證消息高效消費的核心設計,通過將分區合理分配給消費者組內的消費者,實現并行處理和負載均衡。以下從核心概念、分配策略、重平衡機制等方面詳細講解。一、核心概念理解消費者負載均衡前,需明確三個關鍵概念&a…

騰訊云edges on部署pages

騰訊云edges on部署pages適用場景部署方式官方文檔 適用場景 Next.js Hexo 以及用React Vue等現代前端框架構建的單頁應用全棧項目開發 通過Pages Function KV等能力 實現輕量化的動態服務快速部署與迭代 通過Github等代碼管理平臺集成 每次代碼提交時自動構建和部署網站 注…

SpringAI入門及淺實踐,實戰 Spring? AI 調用大模型、提示詞工程、對話記憶、Adv?isor 的使用

上一次寫AI學習筆記已經好久之前了,溫習溫習,這一章講講關于Spring? AI 調用大模型、對話記憶、Adv?isor、結構化輸出、自定義對話記憶?、Prompt 模板的相關知識點。 快速跳轉到你感興趣的地方一、提示詞工程(Prompt)1. 基本概…

對抗攻擊-知識點

文章目錄自然圖像往往靠近機器學習分類器學習到的決策邊界(decision boundaries)。正交方向--改變某一個不影響其它的特征降采樣(Feature Downsampling)通過黑盒攻擊的持續挑戰,我們才能構建真正安全可靠的智能系統DCT…

7.26 作業

一、實驗要求及其拓撲圖: 本次實驗拓撲圖: 二、實驗IP地址劃分: 1. 公網地址(R5 作為 ISP,使用公網地址): R1 與 R5 之間接口:15.1.1.0/24,R1 側為 15.1.1…

Kafka運維實戰 14 - kafka消費者組消費進度(Lag)深入理解【實戰】

目錄什么是消費者 Lag舉例說明:Lag 的意義:Lag 監控和查詢kafka-consumer-groups基本語法常用命令示例1. 查看單個消費者組的詳細信息(最常用)2. 列出所有消費者組(只顯示名稱)3. 列出所有消費者組&#xf…

設計模式(十三)結構型:代理模式詳解

設計模式(十三)結構型:代理模式詳解代理模式(Proxy Pattern)是 GoF 23 種設計模式中的結構型模式之一,其核心價值在于為其他對象提供一種間接訪問的機制,以控制對原始對象的訪問。它通過引入一個…

24點數學游戲(窮舉法求解表達式)

摘要本畢業設計旨在利用MATLAB技術實現一個24點數學游戲,采用窮舉法求解所有可能的表達式組合。通過全排列數字、枚舉運算符及括號位置,結合遞歸回溯算法,系統能夠高效地搜索所有可能的運算路徑,并驗證結果是否為24。實驗結果表明…

【web應用】如何進行前后端調試Debug? + 前端JavaScript調試Debug?

文章目錄一、前后端:后端以Debug模式運行后端項目,打斷點二、前后端:前端項目在瀏覽器中調試三、單獨前端:前端JavaScript調試1、控制臺輸出2、網頁調試器中添加斷點3、debugger關鍵字一、前后端:后端以Debug模式運行后…

FreeCAD開發樓梯參數化三維模型和鋼格柵

根據樓梯標準圖集開發各種樓梯。上行左轉,上行右轉,對應的欄桿也是配套2種。樓梯總成鋼格柵標準里的跨度和承載 扁鋼尺寸,輕松切換和修改參數。格柵綜合本來格柵上橫桿是冷軋扭鋼筋,先繪制一個圓柱,再做一個內切正方形…

【AcWing 836題解】合并集合

AcWing 836. 合并集合 【題目描述】 在查看解析之前,先給自己一點時間思考哦! 【題解】 并查集是一種用于處理集合合并與查詢問題的數據結構,通常支持以下兩種操作: Find:查詢一個元素所在的集合。 Union&#xff1a…

MySQL鎖機制與MVCC原理剖析

在MySQL中,我們使用到了它的各種類鎖;按照它的維度,有各種鎖 從數據庫的操作粒度有,表鎖,行鎖。從數據庫的操作的類型,有讀鎖和寫鎖。性能上有樂觀鎖和悲觀鎖。 在上一篇文章中的事務隔離級別,需…

C++學習(線程相關)

目錄 一、線程庫thread 1.使用外部函數 2. 使用類的函數 3. 添加參數 二、線程庫 mutex 1.使用lock()方法 2.try_lock()方法 三、線程庫lock_guard 四、線程庫unique_lock 1.adopt_lock 2.defer_lock() 五、線程庫call_once 六、線程庫promise & future 七、c…

EPOLLONESHOT 深度解析:Linux epoll 的單次觸發機制

EPOLLONESHOT 深度解析:Linux epoll 的單次觸發機制 EPOLLONESHOT 是 Linux epoll 接口中的高級事件標志,用于實現精確的事件單次觸發控制。以下是其全面技術解析: 核心設計理念 #mermaid-svg-Xg5sCLdddqmKsvKG {font-family:"trebuchet…

深入解析MongoDB分片原理與運維實踐指南

深入解析MongoDB分片原理與運維實踐指南 技術背景與應用場景 隨著互聯網業務的高速發展,單節點MongoDB實例在數據量和訪問并發上都面臨瓶頸。為了解決數據存儲容量受限和讀寫性能下降的問題,MongoDB官方提供了分片(Sharding)方案&…

基于Django的天氣數據可視化分析預測系統

【86-Django】基于Django的天氣數據可視化分析預測系統(完整系統源碼開發筆記詳細部署教程)? 目錄 一、項目簡介 二、項目界面展示 三、項目視頻展示 四、技術架構 五、核心功能模塊 六、部署教程一、項目簡介 隨著全球氣候變化和極端天氣事件的頻發&am…

怎么放大單片機輸出電流

單片機作為電子系統的控制核心,其 I/O 口輸出電流通常較小(一般在 10-20mA 左右),難以直接驅動繼電器、電機、大功率 LED 等需要較大工作電流的外設。因此,在實際應用中需通過特定電路放大單片機輸出電流,實…

站長百科類網站pbootcms模板(自適應手機端)+利于SEO優化(下載)

站長百科類網站pbootcms模板(自適應手機端)利于SEO優化 模板介紹: PbootCMS內核開發的模板,該模板屬于新聞資訊、新聞博客類企業使用! 頁面簡潔簡單,容易管理,附帶測試數據! 模板特點: 1、手工書…

【Golang】Go語言函數

Go語言函數 文章目錄Go語言函數Go函數特點一、函數的基本格式定義二、匿名函數三、自執行函數四、閉包函數五、延遲調用Go函數特點 無需聲明原型支持不定 變參支持多返回值支持匿名函數和閉包函數也是一種類型,一個函數可以賦值給變量不支持嵌套,一個包…