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.mzph.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、网关再将请求转发至对应服务 二、具体操作…