【kubernetes】k8s配置资源管理

一、ConfigMap资源配置

ConfigMap保存的是不需要加密配置的信息

ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制大对象。
应用场景:应用配置

创建 ConfigMap

方法1:

只要指定为一个文件就可以从单个文件中创建 ConfigMap
--from-file 这个参数可以使用多次,即可以使用两次分别指定上个实例中的那两个配置文件
 

--from-file 指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容
kubectl create cm demo1-cm --from-file=demo/

方法2:

使用文字值创建,利用 --from-literal 参数传递配置信息
kubectl create cm kv-cm --from-literal=myname=kukun --from-literal=mylove=hobby

 Pod 中使用 ConfigMap 

作为数据卷挂载使用
vim demo1-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: demo-pod
  name: demo-pod
spec:
  volumes:
  - name: cm-vol       #定义存储卷名称
    configMap:        
      name: demo-cm    #指定cm资源名称
  containers:
  - image: soscscs/myapp:v1
    name: myapp
    ports:
    - containerPort: 80
    resources: {}
    volumeMounts:      #指定挂载容器信息
    - name: cm-vol
      mountPath: /mnt
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

 

作为环境变量引用使用
vim demo2-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: demo2-pod
  name: demo2-pod
spec:
  containers:
  - image: soscscs/myapp:v1
    name: myapp
    ports:
    - containerPort: 80
    resources: {}
    env:               #指定环境变量
    - name: MYNAME  
      value: liangzai
    - name: MYCLASS 
      valueFrom:         #变量值从什么地方而来
        configMapKeyRef:
          name: kv-cm
          key: myclass
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

补充:

kubectl create cm web-cm --from-file=./
 
vim demo4-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: demo4-pod
  name: demo4-pod
spec:
  volumes:
  - name: web-vol
    configMap:
      name: web-cm
  containers:
  - image: soscscs/myapp:v1
    name: myapp
    ports:
    - containerPort: 80
    resources: {}
    volumeMounts:
    - name: web-vol
      mountPath: /usr/share/nginx/html
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
 
 
kubectl apply -f demo4-pod.yaml 

 更新内容
kubectl edit cm web-cm   修改其中的chen.html为tc
 
通过数据卷挂载使用的支持热更新

注:环境变量引用的方式使用configmap在线修改内容不会进行更新

挂载时如何不覆盖原本目录的内容进行挂载?

(此种方法也不支持热更新)

二、Secret

作用:存储密钥信息资源

Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。

Secret 有四种类型: 
●kubernetes.io/service-account-token:由 Kubernetes 自动创建,用来访问 APIServer 的 Secret,Pod 会默认使用这个 Secret 与 APIServer 通信, 并且会自动挂载到 Pod 的 /var/run/secrets/kubernetes.io/serviceaccount 目录中;
●Opaque :base64 编码格式的 Secret,用来存储用户自定义的密码、密钥等,默认的 Secret 类型;
●kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息。
●kubernetes.io/tls :用来存储 TLS 证书和私钥信息。

Pod 需要先引用才能使用某个 secret,Pod 有 3 种方式来使用 secret:
●作为挂载到一个或多个容器上的卷 中的文件。
●作为容器的环境变量。
●由 kubelet 在为 Pod 拉取镜像时使用

Opaque的创建、使用

kubectl create -n xy101 secret generic liliang-cecret --from-file=./username.txt --from-file=./password.txt
kubectl create secret -n xy101 generic li-secret --from-file=demo/
kubectl create -n xy101 secret generic scj-secret --from-literal=myname=scj --from-literal=myclass=xy101

挂载方式引用Opaque

 vim demo1-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: demo1-pod
  name: demo1-pod
  namespace: xy101
spec:
  volumes:
  - name: secret-vol
    secret:
      secretName: liliang-cecret
  containers:
  - image: nginx
    name: myapp
    ports:
    - containerPort: 80
    resources: {}
    volumeMounts:
    - name: secret-vol
      mountPath: /mnt
  dnsPolicy: ClusterFirst
  restartPolicy: Always

环境变量方式引用

vim demo2-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: demo2-pod
  name: demo2-pod
  namespace: xy101
spec:
  containers:
  - image: nginx
    name: myapp
    ports:
    - containerPort: 80
    resources: {}
    env:
    - name: MYSCHOOL
      valueFrom:
        secretKeyRef:
          name: scj-secret
          key: myname
    envFrom:
    - secretRef:
        name: scj-secret
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

总结:

configMap资源(简称cm)  

作用:    

用于保存配置文件、环境变量等不需要加密的信息。它可以实现将配置信息与应用程序镜像解耦

创建cm资源

kubectl create cm <资源名称>  -n <命名空间>  --from-file=文件|目录   --from-liternal=<键名>=<键值>

查看cm资源

kubectl describe -n <命名空间>  cm  <资源名称>
kubectl get -n <命名空间>  cm  <资源名称> -o yaml

注:保存的文件名会作为 cm 资源数据的 键名,文件内容会作为 cm 资源数据的键值

使用cm资源

1、作为存储卷挂载的方式:
在Pod资源配置中用spec.volumes字段设置configMap类型的卷
在容器配置中用volumeMounts字段将卷挂载到容器的指定目录,cm资源数据的键名会作为文件名、键值会作为文件内容生成在容器的挂载点目录中(支持热更新)
在容器配置中用volumeMounts.subPath字段指定文件名,实现将卷挂载到容器中的指定文件上(不支持热更新)

2、作为容器环境变量的方式:(不支持热更新)
在容器配置中用env.name指定自定义容器的环境变量名,用env.valueFrom.configMapKeyRef.name|key字段指定环境变量的值从哪个cm资源的键获取
在容器配置中用envFrom.configMapRef.name字段指定cm资源的名称,使得cm资源数据的键名和键值直接作为容器的环境变量名和

 

secret资源

 作用:

用户保存密码文件、tls证书/私钥文件、token令牌字符串、镜像私有仓库认证信息等需要加密的敏感信息

secret的4种类型:

Opaque:默认的secret资源类型,可以通过选项引用文件、目录、键值对的方式创建secret资源,并且资源数据的键值会被自动转换为base64编码格式
kubernetes.io/service-account-token:当创建serviceaccount账户资源后K8S会自动创建同名的此类型secret资源,用于Pod访问apiserver时会使用此secret中的token做认证
kubernetes.io/dockerconfigjson:用于存储K8S从harbor等镜像私有仓库拉取镜像时做认证的信息
kubernetes.io/tls:用于存储tls证书和私钥文件的信息

创建secret资源

kubectl create secret generic <资源名称>  -n <命名空间>  --from-file=文件|目录   --from-liternal=<键名>=<键值>

kubectl create secret docker-registry <资源名称> -n <命名空间> --docker-server=<镜像私钥仓库URL地址> --docker-username=<仓库用户名> --docker-password=<用户密码> --docker-email=<邮箱地址>

kubectl create secret tls <资源名称> -n <命名空间>  --cert=<证书文件路径>  --key=<私钥文件路径>

查看secret资源

kubectl describe -n <命名空间>  secret  <资源名称>
kubectl get -n <命名空间>  secret  <资源名称> -o yaml

注:数据的键值会以base64编码格式加密显示

使用secret资源

作为存储卷挂载的方式:
在Pod资源配置中用spec.volumes字段设置secret类型的卷
在容器配置中用volumeMounts字段将卷挂载到容器的指定目录,secret资源数据的键名会作为文件名、键值会作为文件内容生成在容器的挂载点目录中

作为容器环境变量的方式:
在容器配置中用env.name指定自定义容器的环境变量名,用env.valueFrom.secretKeyRef.name|key字段指定环境变量的值从哪个secret资源的键获取
在容器配置中用envFrom.secretRef.name字段指定secret资源的名称,使得secret资源数据的键名和键值直接作为容器的环境变量名和值

Pod配置从镜像私钥仓库拉取镜像:
在Pod资源配置中用spec.imagePullSecrets.name字段指定kubernetes.io/dockerconfigjson类型secret资源名称

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/871430.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

avue-crud 自定义搜索项 插槽

加上 -search 就可以自定义查询项了

43.x86游戏实战-XXX寻找吸怪坐标

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

如何在 FastReport .NET 中构建和安装 Postgres 插件

FastReport .NET 是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案。 功能非常丰富&#xff0c;功能广泛。今天我们将介绍如何使用报表设计器的 FastReport 插件连接数据库。 FastReport .NET 是适用于.NET Core 3&#xff0c;ASP.NET&#xff0c;MVC和Windows窗体…

SQL注入(cookie、base64、dnslog外带、搜索型注入)

目录 COOKIE注入 BASE64注入 DNSLOG注入—注入判断 什么是泛解析&#xff1f; UNC路径 网上邻居 LOAD_FILE函数 搜索型注入—注入判断 本文所使用的sql注入靶场为sqli-labs-master&#xff0c;靶场资源文件已上传&#xff0c;如有需要请前往主页或以下链接下载 信安必备…

视频直播平台选择服务器需要注意什么?

在当今数字化时代&#xff0c;直播平台已成为连接内容创作者与广大观众的重要桥梁。为了确保直播的流畅性、稳定性和安全性&#xff0c;服务器的选择与配置显得尤为重要。以下是搭建直播平台时&#xff0c;服务器所需具备的关键因素。 一、高性能与可扩展性 直播平台需要处理大…

C++第十二弹 -- STL之list模拟实现

文章索引 前言模拟实现list1. ListNode节点类2. list的迭代器封装3. 反向迭代器4. list类的模拟实现测试代码 list的反向迭代器总结 前言 通过模拟实现可以让我们更加深刻的理解C底层STL的实现逻辑, 本篇就对list的底层进行模拟实现. 博客主页: 酷酷学!!! 点击关注 共同进步!…

详解语义安全(semantically secure)

目录 一. 引入 二. 密文与明文 2.1 通俗性理解 2.2 定理 2.3 定理理解 三. 语义安全的第一个版本 3.1 基本理解 3.2 定理 3.3 定理理解 四. 语义安全的第二个版本 4.1 直观解释 4.2 小结 一. 引入 密码学中安全加密要求&#xff1a;敌手&#xff08;adversary&…

Git使用方法(三)---简洁版上传git代码

1 默认已经装了sshWindows下安装SSH详细介绍-CSDN博客 2 配置链接github的SSH秘钥 1 我的.ssh路径 2 进入路径cd .ssh 文件 3 生成密钥对 ssh-keygen -t rsa -b 4096 (-t 秘钥类型 -b 生成大小) 输入完会出现 Enter file in which to save the key (/c/Users/Administrator/…

【Android】adb devices 出现devices offline的问题

1 问题 adb devices 出现devices offline 2 解决方法 adb kill-serveradb start-server 然后&#xff0c;adb devices查看。 adb devices 问题解决啦。。。&#x1f49b; &#x1f499; &#x1f49c; ❤️ &#x1f49a; &#x1f49b; &#x1f499; &#x1f49c; ❤️…

雨云美国二区E5v2服务器测评(非广告)

注&#xff1a;本文非广告&#xff0c;非推广 本文长期更新地址&#xff1a; 雨云美国二区E5v2服务器测评&#xff08;非广告&#xff09;-星零岁的博客https://blog.0xwl.com/13594.html 今天来测评一下雨云美国二区v2服务器。我测试的这台配置是4-8&#xff0c; 35 M上传&a…

《机器学习》周志华-CH1(绪论)

1.1引言 机器学习&#xff08;Matchine-Learning&#xff09;所研究的主要内容是关于在计算机上从数据中产生“模型”&#xff08;model&#xff09;的算法&#xff0c;即“学习算法”&#xff08;learning algorithm&#xff09;。可以说机器学习&#xff08;Matchine-Learni…

智能菜谱推荐系统_ct3p7

TOC springboot575智能菜谱推荐系统_ct3p7--论文 第一章 概述 1.1 研究背景 近些年&#xff0c;随着中国经济发展&#xff0c;人民的生活质量逐渐提高&#xff0c;对网络的依赖性越来越高&#xff0c;通过网络处理的事务越来越多。随着智能菜谱推荐管理的常态化&#xff0c…

PYQT实现上传图片,保存图片

代码如下 from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import sysclass MyWindow(QMainWindow):def __init__(self):super(MyWindow, self).__init__()self.setWindowTitle("图片处理")self.setGeometry(200, 200, 500, …

最全海外广告库大合集,建议收藏!

在当今数字营销的世界中&#xff0c;广告投放的精准性和创意性变得越来越重要。而“海外广告库”作为一种强大的工具&#xff0c;正在被越来越多的广告主和营销专家所使用。本文将深入探讨几大主流的海外广告库&#xff0c;并探讨如何利用它们来提升广告效果。 什么是海外广告…

推荐一个开源的kafka可视化客户端GUI工具(Kafka King)

大佬的博客地址&#xff1a; https://blog.ysboke.cn/posts/tools/kafka-king Github地址&#xff1a; https://github.com/Bronya0/Kafka-King Kafka-King功能清单 查看集群节点列表&#xff08;完成&#xff09;支持PLAINTEXT、SASL PLAINTEXT用户名密码认证&#xff08;完…

[C语言]-基础知识点梳理-文件管理

前言 各位师傅们好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解文件管理的相关知识&#xff0c;也就是常见的 读取&#xff0c;删除一类的操作 文件 为什么要使用文件&#xff1f; 程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&…

[Leetcode 61][Medium]-旋转链表

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 原题链接 二、整体思路 首先发现这样的规律&#xff1a;当k大于等于链表中节点总数n时&#xff0c;会发现此时旋转后的链表和kk%n时的旋转后的链表一样。同时对于特殊情况n0和n1时&#xff0c;无论k的值为多少都可以…

认识Mongodb及其Java的连接

什么是Mongodb&#xff1f; MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。 优点 1.MongoDB的提供了一个面向文档存储&#xff0c;操作起来比较简单和容易。 2.如果负载的增加&#x…

Python中matplotlib使用4

在matplotlib中&#xff0c;可以通过绘制“饼图”来展示各类别在总体中所占的比例。 1 绘制基本“饼图” 通过matplotlib中的pie()函数绘制饼图&#xff0c;代码如图1所示。 图1 绘制基本“饼图”的代码 从图1中可以看出&#xff0c;pie()函数的参数y即为要绘制的数据&#…

使用SSMS连接和查询 SQL Server 实例

简介 SQL Server Management Studio 是用于管理SQL Server基础架构的集成环境。Management Studio提供用于配置、监视和管理SQL Server实例的工具。 此外&#xff0c;它还提供了用于部署、监视和升级数据层组件(如应用程序使用的数据库和数据仓库)的工具以生成查询和脚本。 官方…