K8s ConfigMap
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s ConfigMap相关的知识,希望对你有一定的参考价值。
参考技术A 原文地址: https://alphahinex.github.io/2020/11/22/k8s-config-map/description: "分离配置与镜像,提高可移植性"
date: 2020.11.22 10:34
categories:
- K8s
tags: [K8s, DevOps]
keywords: K8s, ConfigMap, subPath
在 k8s 集群中部署第一个应用 中,完成了一个基本的 nginx 服务的部署,但在真实环境中使用 NGINX 时,一般都需要定制其配置文件,使满足实际代理需求。K8s 提供了一个 ConfigMap 的概念,允许将配置文件与镜像文件分离,以使容器化的应用程序具有可移植性。
可以按字面方式,将 ConfigMap,理解为一个 Config 的 Map:
一个 ConfigMap 中可以包含多个 Key / Value 对。
可以使用 kubectl create configmap 命令基于 目录、文件 或字符串来创建 ConfigMap,也可以直接编写 yaml 文件进行定义:
之后可使用 kubectl apply -f nginx-config.yml 完成 ConfigMap 的创建。
ConfigMap 有多种定义形式,也有多种使用形式,详细情况可以查阅 官方文档 。本文仍以 NGINX 配置文件为例,说明一下 ConfigMap 中定义的配置文件的使用方式。
上面的 nginx-config.yml 定义了两个 ConfigMap,目标是放到 NGINX 容器中的如下两个位置:
可以将 ConfigMap 添加到 Volume 中,再进行挂载以使用,如:
有两个地方需要说明一下:
比如上例中的 mountPath: /etc/nginx/conf.d ,此时可指定挂载 ConfigMap 中的某个配置到该路径下的具体文件,也可将整个 ConfigMap 中的所有配置以多个文件的形式挂载到指定路径下。
不论哪种方式,都会将容器中原路径下所有先前的文件清除,需注意。
若想将配置文件挂载至容器中某个具体文件处,不影响该文件所在路径的其他文件,可按上例中的 nginx.conf 文件方式:
即 mountPath 直接指定到具体文件,并通过 subPath 表明文件名。
更新已经在数据卷中使用的 ConfigMap 时,已映射的配置内容最终也会被自动更新。 kubelet 在每次定期同步时都会检查已挂载的 ConfigMap 是否是最新的。但是,它使用其本地的基于 TTL 的缓存来获取 ConfigMap 的当前值。因此,从更新 ConfigMap 到将新值映射到 Pod 的总延迟,可能与 kubelet 同步周期 + ConfigMap 在 kuelet 中缓存的 TTL 一样长。
另外,使用 ConfigMap 作为 subPath 的数据卷将不会收到 ConfigMap 更新。
以上面配置为例,当更新 ConfigMap 中 NGINX 配置文件内容并 apply 到集群之后,可以稍等一会,然后进入到容器中观察配置文件, nginx.conf 文件的内容不会随 ConfigMap 文件更新同步,但 /etc/nginx/conf.d 路径下内容,会按更新周期,自动同步 confd-config 中的所有变更,包括配置文件内容,以及配置文件个数。
本文中完整的 K8s 配置如下:
kubectl apply -f nginx-test.yml 完成部署之后,可通过集群的 30081 端口访问容器内 2020 端口的服务,并可以修改 ConfigMap 中内容,进入到容器中观察 NGINX 对应配置文件的变化。
反思K-S指标(KPMG大数据挖掘)
评估信用评级模型,反思K-S指标
“信用评级”的概念听起来可以十分直截了当。比如一天早上你接到电话,有个熟人跟你借钱,而你将在半睡半醒间迅速做出决定:借,还是不借。在灵光闪现的一秒里,你或许考虑了对方的脾气秉性、经济实力、家庭住址、种种黑白历史……但最终,你面对的是一道只有两个选项的单选题,并需要承担选择的后果,这就是一种最简单的“评级”。商业银行对待申请借贷的客户也类似。为了控制不良贷款、避免损失,银行需要提前对客户进行信用评级。当然,主观评价客户缺乏操作性,这时就需要建立某种信用评级模型,利用数据将客户划分为“好客户”和“坏客户”,即守信客户和违约客户。
信用评级模型已经有了五六十年的实践应用历史,也在不断发展的过程中逐渐建立了相对较全面的评价体系。衡量信用评级模型是否强大的关键,是其区分好坏客户并进行正确排序的能力。根据业内经验,我们可以通过考察模型对客户按风险排序的结果与实际发生违约的结果之间的一致性来判断模型的准确性。在有效的情况下,模型会赋予那些容易违约的客户低评分值,同时赋予那些不易违约的客户赋予评分值,从而体现模型的区分能力:区分能力越高则说明模型越好,反之则说明模型越差。
根据这一原理,在信用评分模型的评价准则中,K-S统计量由于计算简便、易于理解,而成为少数几个被广泛使用的评价指标之一。本文将介绍K-S统计量及其存在的缺陷,并提出“AUKS统计量”作为一种新的评价标准,希望能为银行的信用评级业务及其他相关实践提供新思路。
K-S统计量来源于两样本Kolmogorov-Smirnov检验,这是一种非参数检验,用于检验两个一元概率分布是否相同。K-S统计量度量了两个分布之间的最大垂直距离,即
两样本K-S检验主要考察两个样本是否服从同一个分布,这一点被借鉴为信用评级模型的评判标准。信用评价模型的输出结果可认为是事件发生的概率。如果坏客户预测值的经验分布显著区别于好客户预测值的经验分布,说明信用评级模型分派给了好客户和坏客户显著不同的估计值。K-S统计量就等于好客户和坏客户的的经验分布间的最大距离。如果两个分布显著不同,则可以认为模型的K-S统计量足够区分申请人是否会成为坏客户。如下图所示:
如何评估一个信用评级模型的效果呢?我们必须选择一个验证样本,这个样本不同于创建模型的建模样本。和建模样本一样,验证样本中的一条观测代表一个客户,其中的因变量Y和输入变量X的值都是已知的。在验证模型的时候,首先会用待检验的模型来预测验证样本中每一个客户的或者信用评分。如果以K-S统计量作为模型优劣的评判标准,这个值就可以根据验证样本中每个客户的或者评分计算出来。把这些或者评分从低到高排序,然后等分成若干个组(通常为20组或者10组),每一组都会包含好客户和坏客户,因为模型的错误分类是不可能避免的,任何一个评分模型不可能给所有的坏客户绝对的低分所有的好客户绝对的高分。但是,一个好的模型能够保证坏客户的评分相对比较低而好客户的评分相对比较高,即好的模型能保证有更多的和谐对。上图中,虚线表示好客户的的经验分布,实线表示坏客户的的经验分布。两个经验分布之间的最大距离就是K-S统计量。K-S统计量的值越大,两个区别越显著,评分模型给出的评分越合理。因此,K-S统计量可以作为信用评分模型的评判标准,在实际操作中也较为方便,SAS中的NPAR1WAYProcedure和EM模块及R语言中的基本软件包stats都可以用来计算该指标。
然而,K-S统计量也存在相当显著的缺陷。K-S统计量仅仅从一个点来衡量两个分布的差异,其稳定性必然不足。我们曾设计验证方案,参考另一个常用指标AUC统计量,对样本量5960的验证样本进行多次抽样,并用每一个抽取出来的样本做模型验证计算K-S统计量和另一常用指标AUC统计量来检查它们的稳定性。最终,我们发现,K-S统计量的变异系数远远大于AUC统计量的变异系数。
要增加稳定性,最好的方法莫过于将距离变为面积,将局部推广到整体。为此,我们设计了一个新统计量:K-S曲线下的面积(Area under the K-S curve),可以简写为AUKS。
当,可以假设,则
与K-S统计量相比,AUKS统计量的优点在于:从整个评分的取值域而不是一个点来检验模型的优劣,具有更好的稳定性,对样本量的依赖程度相对较低。我们用两个统计量对评价模型进行了验证,在模拟实验中,与K-S统计量相比,AUKS统计量始终有更加稳定的均值、更小的标准差和更小的变异系数,作为信用评分模型的评价指标具有更好的稳定性。
在信用评分领域的多年实践工作中,业内已经创造并总结了一套较为全面的评价标准,这些标准互为补充,大体能保证信用评价模型的应用价值。然而,这些标准、指标和统计量仍存在缺陷,需要我们根据实际情况不断加以修正、改进,继续完善这一评价标准体系。相信AUKS统计量将成为一种有价值的新指标。
以上是关于K8s ConfigMap的主要内容,如果未能解决你的问题,请参考以下文章