当前位置: 首页 > news >正文

应用配置管理

一、Pod 配置管理

可变配置用 ConfigMap;

敏感信息用 Secret;

身份认证用 ServiceAccount 这几个独立的资源来实现的;

资源配置用 Resources;

安全管控用 SecurityContext;

前置校验用 InitContainers 这几个在 spec 里面加的字段,来实现的这些配置管理。

二、ConfigMap

1、介绍

ConfigMap 主要是管理可变配置信息,比如配置文件,环境变量,或者命令行参数。

它的好处在于它可以让可变配置和容器镜像进行解耦,保证了容器的可移植性。

2、创建

kubectl create configmap [NAME] [DATA]

用 kubectl 这个命令来创建,它带的参数主要有两个:一个是指定 name,第二个是 DATA。其中 DATA 可以通过指定文件或者指定目录,以及直接指定键值对。

3、使用

ConfigMap主要被Pod使用。

第一种是环境变量。通过 valueFrom 下的 ConfigMapKeyRef 这个字段,name 指定 ConfigMap 名,key 是 ConfigMap.data 里面的 key。

第二个是命令行参数。

最后一个是通过 volume 挂载的方式直接挂到容器的某一个目录下面去。

4、注意要点

① ConfigMap 文件的大小。虽然说 ConfigMap 文件没有大小限制,但是在 ETCD 里面,数据的写入是有大小限制的,现在是限制在 1MB 以内。

第二个注意点是 pod 引入 ConfigMap 的时候,必须是相同的 Namespace 中的 ConfigMap。

第三个是 pod 引用的 ConfigMap。假如这个 ConfigMap 不存在,那么这个 pod 是无法创建成功的,这也表示在创建 pod 前,必须先把要引用的 ConfigMap 创建好。

三、secret

1、介绍

Secret 是一个主要用来存储密码 token 等一些敏感信息的资源对象。

2、创建

有两种创建方式:

系统创建:K8s 为每一个 namespace 的默认用户(default ServiceAccount)创建 Secret。

用户手动创建: kubectl create secret generic [NAME] [DATA] [TYPE],DATA 可以指定文件/键值对,TYPE 默认为Opaque。

3、使用

Secret 主要是被 pod 来使用,一般是通过 volume 形式挂载到容器里指定的目录,然后容器里的业务进程再到目录下读取 Secret 来进行使用。

四、ServiceAccount

Pod 创建时 Admission Controller 会根据指定的 ServiceAccount (默认为default)把对应的 Secret 挂载到容器中固定的目录下。

当 Pod 访问集群时,可以默认利用 Secret 其中的 token 文件来认证 Pod 的身份。

五、Resource

1、介绍

Resource 容器资源配置管理。目前内部支持类型有三种:CPU、内存,以及临时存储。资源配置主要分成 request 和 limit 两种类型,一个是需要的数量,一个是资源的界限。CPU、内存以及临时存储都是在 container 下的 Resource 字段里进行一个声明。

2、Pod 服务质量 (QoS) 配置

根据 CPU 对容器内存资源的需求,对 pod 的服务质量进行一个分类,分别是 Guaranteed、Burstable 和 BestEffort。

① Guaranteed :pod 里面每个容器都必须有内存和 CPU 的 request 以及 limit 的一个声明,且 request 和 limit 必须是一样的,这就是 Guaranteed;

② Burstable:Burstable 至少有一个容器存在内存和 CPU 的一个 request;

③ BestEffort:只要不是 Guaranteed 和 Burstable,那就是 BestEffort。

六、SecurityContext

SecurityContext 主要是用于限制容器的一个行为,它能保证系统和其他容器的安全

SecurityContext 主要分为三个级别:

第一个是容器级别,仅对容器生效;

第二个是 pod 级别,对 pod 里所有容器生效;

第三个是集群级别,就是 PSP,对集群内所有 pod 生效。

七、InitContainer

1InitContainer 和普通 container 的区别

① InitContainer 首先会比普通 container 先启动,并且直到所有的 InitContainer 执行成功后,普通 container 才会被启动;

② InitContainer 之间是按定义的次序去启动执行的,执行成功一个之后再执行第二个,而普通的 container 是并发启动的;

③ InitContainer 执行成功后就结束退出,而普通容器可能会一直在执行。

2、InitContainer 的用途

InitContainer 主要为普通 container 服务,比如为普通 container 启动之前做一个初始化,或者为它准备一些配置文件。

http://www.lryc.cn/news/305830.html

相关文章:

  • This dependency was not found解决方法
  • 基于SpringBoot的停车场管理系统
  • SQL库操作
  • 物麒平台根据入耳出耳状态使能或禁止触摸按键实现方法
  • CAS5.3使用JPA实现动态注册服务
  • unity ui界面优化
  • mysql-MVCC
  • ​Sqli-labs靶场第9关详解[Sqli-labs-less-9]
  • 第3.5章:StarRocks数据导入——Broker Load
  • Linux之ACL权限chmod命令
  • HBuilderX的特点
  • CrossOver虚拟机软件2024有哪些功能?最新版本支持哪些游戏?
  • Android LinearLayout 如何让子元素靠下居中对齐 center bottom
  • 物体检测-系列教程16:YOLOV5 源码解析6(马赛克数据增强函数load_mosaic)
  • 星河做市基金会全球DAO社区启动,为数字货币市场注入新活力
  • QT Widget自定义菜单
  • UnityWebGL 设置全屏
  • 100224. 分割数组
  • WSL2配置Linux、Docker、VS Code、zsh、oh my zsh(附Docker开机自启设置)
  • 深度学习基础(四)医疗影像分析实战
  • ChatGPT调教指南 | 咒语指南 | Prompts提示词教程(一)
  • LeetCode | 两数相加 C语言
  • 【Spring MVC】处理器映射器:AbstractHandlerMethodMapping源码分析
  • 网络编程知识整理
  • 【小白友好】leetcode 移动零
  • 迭代、递归、尾递归实现斐波那契数列的第n项
  • vulnhub靶场之driftingblues-1
  • NGINX服务器配置实现加密的WebSocket连接WSS协议
  • 5个免费文章神器,用来改写文章太方便了
  • 详细教程!VMware Workstation Pro16 安装 + 创建 win7 虚拟机!