k8s的配置文件總結

在 Kubernetes 中,配置文件 是定義集群資源的核心,通常以 YAML 或 JSON 格式編寫。以下是 Kubernetes 中關鍵的配置文件類型及其作用:


1. 核心工作負載配置

(1) Deployment

? 用途:定義無狀態應用的 Pod 副本管理策略(滾動更新、回滾、擴縮容)。
? 核心字段

apiVersion: apps/v1
kind: Deployment
metadata:name: my-app
spec:replicas: 3selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: appimage: nginx:1.21ports:- containerPort: 80
(2) StatefulSet

? 用途:管理有狀態應用(如數據庫),提供穩定的網絡標識和持久化存儲。
? 關鍵字段volumeClaimTemplates(自動創建 PVC)。

apiVersion: apps/v1
kind: StatefulSet
metadata:name: mysql
spec:serviceName: mysqlreplicas: 3volumeClaimTemplates:- metadata:name: dataspec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 10Gi
(3) DaemonSet

? 用途:在集群每個節點上運行一個 Pod(如日志收集、節點監控)。

apiVersion: apps/v1
kind: DaemonSet
metadata:name: fluentd
spec:selector:matchLabels:name: fluentdtemplate:metadata:labels:name: fluentdspec:containers:- name: fluentdimage: fluentd:latest

2. 服務與網絡配置

(1) Service

? 用途:暴露 Pod 為網絡服務,支持負載均衡。
? 類型ClusterIP(默認)、NodePortLoadBalancer

apiVersion: v1
kind: Service
metadata:name: web-service
spec:type: LoadBalancerports:- port: 80targetPort: 8080selector:app: web-app
(2) Ingress

? 用途:定義 HTTP/HTTPS 路由規則(如域名、SSL 證書)。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: my-ingressannotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:rules:- host: example.comhttp:paths:- path: /apppathType: Prefixbackend:service:name: app-serviceport:number: 80

3. 配置與存儲

(1) ConfigMap

? 用途:存儲非敏感配置(環境變量、配置文件)。

apiVersion: v1
kind: ConfigMap
metadata:name: app-config
data:app.properties: |server.port=8080logging.level=INFO
(2) Secret

? 用途:存儲敏感數據(密碼、Token),需 Base64 編碼。

apiVersion: v1
kind: Secret
metadata:name: db-secret
type: Opaque
data:username: dXNlcm5hbWU=  # "username" 的 Base64password: cGFzc3dvcmQ=  # "password" 的 Base64
(3) PersistentVolume (PV) / PersistentVolumeClaim (PVC)

? PV:定義集群存儲資源(如 NFS、云存儲)。
? PVC:應用對存儲資源的請求。

# PV 示例(NFS)
apiVersion: v1
kind: PersistentVolume
metadata:name: nfs-pv
spec:capacity:storage: 10GiaccessModes:- ReadWriteManynfs:server: 10.0.0.1path: /data/nfs# PVC 示例
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: data-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 5Gi

4. 權限與安全

(1) ServiceAccount

? 用途:為 Pod 分配身份,用于 API 訪問權限控制。

apiVersion: v1
kind: ServiceAccount
metadata:name: my-serviceaccount
(2) Role / ClusterRole

? Role:定義命名空間內的權限。
? ClusterRole:定義集群級別的權限。

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:name: pod-reader
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "list"]
(3) RoleBinding / ClusterRoleBinding

? 用途:將 Role/ClusterRole 綁定到 ServiceAccount 或用戶。

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: read-pods
subjects:
- kind: ServiceAccountname: my-serviceaccount
roleRef:kind: Rolename: pod-readerapiGroup: rbac.authorization.k8s.io

5. 自動擴縮容與任務調度

(1) HorizontalPodAutoscaler (HPA)

? 用途:根據 CPU/內存使用率自動擴縮容 Pod。

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:name: app-hpa
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: my-appminReplicas: 2maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 50
(2) CronJob

? 用途:定時執行任務(如備份、批量處理)。

apiVersion: batch/v1
kind: CronJob
metadata:name: backup-job
spec:schedule: "0 0 * * *"jobTemplate:spec:template:spec:containers:- name: backupimage: busyboxcommand: ["/bin/sh", "-c", "tar czf /backup/data.tar.gz /data"]restartPolicy: OnFailure

6. 集群級配置

(1) Namespace

? 用途:邏輯隔離資源(如開發、測試、生產環境)。

apiVersion: v1
kind: Namespace
metadata:name: production
(2) CustomResourceDefinition (CRD)

? 用途:擴展 Kubernetes API,定義自定義資源。

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:name: myresources.example.com
spec:group: example.comversions:- name: v1served: truestorage: trueschema: {...}scope: Namespacednames:plural: myresourcessingular: myresourcekind: MyResource

配置文件管理最佳實踐

  1. 版本控制
    ? 將 YAML 文件存儲在 Git 倉庫中,使用分支或目錄區分環境(dev/prod)。
  2. 模板化
    ? 使用 HelmKustomize 管理多環境配置,避免硬編碼。
    ? Helm 示例(values.yaml):
    replicaCount: 3
    image:repository: nginxtag: 1.21
    
  3. 安全
    ? 使用 SealedSecretVault 加密敏感數據,避免直接存儲明文。
  4. 驗證配置
    # 檢查語法錯誤
    kubectl apply -f deployment.yaml --dry-run=client# 查看生成的配置(Kustomize)
    kustomize build overlays/prod
    

總結

? 核心配置文件:Deployment、Service、ConfigMap、Secret、PersistentVolumeClaim。
? 高級配置:Ingress、HPA、RBAC、CronJob。
? 集群管理:Namespace、CRD。
? 工具推薦:Helm 用于應用打包,Kustomize 用于多環境配置,Prometheus 用于監控。

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

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

相關文章

STM32(基于標準庫)

參考博客:江科大STM32筆記 Stm32外設 一、GPIO 基礎 GPIO位結構 I/O引腳的保護二極管是對輸入電壓進行限幅的上面的二極管接VDD, 3.3V,下面接VSS, 0V,當輸入電壓 >3.3V 那上方這個二極管就會導通,輸入電壓產生的電流就會大部分充入VD…

為什么我們需要if __name__ == __main__:

[目錄] 0.前言 1.什么是 __name__? 2.if __name__ __main__: 的作用 3.為何Windows更需if __name__ ?前言 if __name__ __main__: 是 Python 中一個非常重要的慣用法,尤其在使用 multiprocessing 模塊或編寫可導入的模塊時。它的作用是區分…

速盾:高防CDN的原理和高防IP一樣嗎?

隨著互聯網的發展,網絡安全威脅日益嚴重,尤其是DDoS攻擊、CC攻擊等惡意行為,給企業帶來了巨大的風險。為了應對這些挑戰,許多企業開始采用高防CDN(內容分發網絡)和高防IP作為防御措施。盡管兩者都能提供一定…

《算法筆記》3.6小節——入門模擬->字符串處理

1009 說反話 #include <cstdio>int main() {char sen[80][80];int num0;while(scanf("%s",sen[num])!EOF){num;}for (int i num-1; i > 0; --i) {printf("%s ",sen[i]);}printf("%s\n",sen[0]);return 0; }字符串連接 #include <io…

供應鏈業務-供應鏈全局觀(三)- 供應鏈三流的集成

概述 供應鏈的全局觀的全兩篇文章主要描述了供應鏈的基礎概念和供應鏈的協作和集成問題。 供應鏈業務-供應鏈全局觀&#xff08;一&#xff09;定義了什么是供應鏈和供應鏈管理。 所謂供應鏈就是把采購進來的東西&#xff0c;通過自身的生成加工&#xff0c;進行增值服務&am…

鏈表-算法小結

鏈表 單鏈表 雙鏈表 循環鏈表 鏈表_stl-CSDN博客 虛擬頭結點 反轉鏈表 刪除鏈表元素 方法一: 直接使用原來的鏈表來進行刪除操作。 頭節點是否為空頭鏈表的值是否為要刪除的值頭結點刪除后,新的頭節點是否依舊要刪除 ,刪除后的,新頭節點可能是空結點 方法二: 設置一個虛擬…

C語言中常用的調試宏和函數總結(__LINE__、__FUNCTION__)

表格&#xff1a;C語言調試工具 類別工具描述示例代碼預定義宏__LINE__表示當前源代碼的行號。printf("Error occurred at line %d\n", __LINE__);__FILE__表示當前源代碼文件的名稱。printf("Error occurred in file %s\n", __FILE__);__func__表示當前函…

DotnetCore開源庫SampleAdmin源碼編譯

1.報錯: System.Net.Sockets.SocketException HResult0x80004005 Message由于目標計算機積極拒絕&#xff0c;無法連接。 SourceSystem.Net.Sockets StackTrace: 在 System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, C…

如何使用切片操作來處理序列數據

1 問題 本文主要探究 Python 中切片操作的原理和應用。具體來說&#xff0c;我們將分析切片的基本語法、切片的步長和切片的邊界&#xff0c;并通過示例代碼展示如何使用切片操作來處理序列數據。 2 方法 為了更好地理解切片操作&#xff0c;我們采用如下的思路學習python中的切…

java(二):java的運算和流程控制

java中單引號和雙引號區別和用法 區別1&#xff1a;java中的單引號表示字符&#xff0c;雙引號表示字符串。 區別2&#xff1a;單引號引的數據一般是char類型的&#xff1b;雙引號引的數據 是String類型的。 區別3&#xff1a;java中單引號里面只能放一個字母或數字或符號&…

Android envsetup與Python venv使用指南

Android envsetup 和 Python venv 是兩種完全不同的環境配置工具&#xff0c;分別服務于不同的開發場景。以下是對它們的詳細解釋及使用方法&#xff1a; 1. Android envsetup 用途&#xff1a; Android envsetup 是 Android 源碼開發中的環境配置腳本&#xff08;envsetup.sh…

游戲引擎學習第222天

回顧昨天的過場動畫工作 我們正在制作一個游戲&#xff0c;目標是通過直播的方式完成整個游戲的開發。在昨天的工作中&#xff0c;我享受了制作過場動畫的過程&#xff0c;所以今天我決定繼續制作多個層次的過場動畫。 昨天我們已經開始了多層次過場動畫的基本制作&#xff0…

Leedcode刷題 | Day31_貪心算法05

一、學習任務 56. 合并區間代碼隨想錄738. 單調遞增的數字968. 監控二叉樹 二、具體題目 1.56合并區間56. 合并區間 - 力扣&#xff08;LeetCode&#xff09; 給出一個區間的集合&#xff0c;請合并所有重疊的區間。 示例 1: 輸入: intervals [[1,3],[2,6],[8,10],[15,1…

app逆向專題五:新快報app數據采集

app逆向專題五:新快報app數據采集 一、抓包尋找數據接口二、編寫代碼三、完整代碼一、抓包尋找數據接口 打開charles,并在手機端打開新快報app,點擊“廣州”或者“經濟”等選項卡,抓包,尋找數據接口,如圖所示: 二、編寫代碼 這里介紹一種簡便的代碼編寫方法,在數據…

Java面試黃金寶典45

1. 非對稱加密 RSA 定義:RSA 是一種廣泛使用的非對稱加密算法,其安全性基于大整數分解的困難性。它使用一對密鑰,即公鑰和私鑰。公鑰可公開用于加密消息,而私鑰必須保密,用于解密由相應公鑰加密的消息。要點: 公鑰公開,私鑰保密,二者成對出現。加密和解密使用不同的密鑰…

提權實戰!

就是提升權限&#xff0c;當我們拿到一個shell權限較低&#xff0c;當滿足MySQL提權的要求時&#xff0c;就可以進行這個提權。 MySQL數據庫提權&#xff08;Privilege Escalation&#xff09;是指攻擊者通過技術手段&#xff0c;從低權限的數據庫用戶提升到更高權限&#xff…

在虛擬機上修改saprk的版本

之前安裝的spark版本是3.4&#xff0c;現在實驗需要的版本是2.4。現在需要更改spark的版本。 方法很簡單&#xff1a; 直接將原有的spark3.4的文件刪除&#xff0c;再安裝2.4版本。 安裝過程之后再寫。Spark2.1.0入門&#xff1a;Spark的安裝和使用_廈大數據庫實驗室博客

文獻分享: DESSERT基于LSH的多向量檢索(Part3.2.外部聚合的聯合界)

原論文 文章目錄 1. \textbf{1. } 1. 定理 4.2 \textbf{4.2} 4.2的內容 1.1. \textbf{1.1. } 1.1. 一些符號 1.2. \textbf{1.2. } 1.2. 定理內容 3. \textbf{3. } 3. 聯合界限 Ps. \textbf{Ps. } Ps. 運行時間分析 1. \textbf{1. } 1. 定理 4.2 \textbf{4.2} 4.2的內容 1.1. \t…

MIPI協議介紹

MIPI協議介紹 mipi 協議分為 CSI 和DSI,兩者的區別在于 CSI用于接收sensor數據流 DSI用于連接顯示屏 csi分類 csi 分為 csi2 和 csi3 csi2根據物理層分為 c-phy 和 d-phy, csi-3采用的是m-phy 一般采用csi2 c-phy 和 d-phy的區別 d-phy的時鐘線和數據線是分開的,2根線一對…

【中間件】nginx反向代理實操

一、說明 nginx用于做反向代理&#xff0c;其目標是將瀏覽器中的請求進行轉發&#xff0c;應用場景如下&#xff1a; 說明&#xff1a; 1、用戶在瀏覽器中發送請求 2、nginx監聽到瀏覽器中的請求時&#xff0c;將該請求轉發到網關 3、網關再將請求轉發至對應服務 二、具體操作…