k8s---配置资源管理

news2024/11/20 7:24:51

目录

配置资源管理的方式

secret

pod如何来引用secret???

陈述式创建:

声明式创建

Secret创建加密文件

使用token挂载

环境变量使用

docker-registry

ConfigMap

陈述式

热更新

总结:


配置资源管理的方式

Secret

Configmap(必问)1.2加入的新特征

secret

secret:保存密码,token,敏感的k8s资源

这类数据可以存放在镜像当中,但是放在secret当中可以更方便的控制,减少暴露的风险。

通俗来讲就是保存加密信息。

查看加密的token

kubectl get secrets
docker-registry存储docker仓库的认证信息,以及docker组件认证信息。(私有)
generic是secret的默认模式,Opaque base64加密编码的secret。用户自定义的密码、密钥等等。
tlsTLS/SSL 用于存储证书和私钥。https
系统自建的用来访问系统的apiserver,pod会默认使用这个kubernetes.io/service-account-token创建的secret和apiserver通信。自动挂载到pod的/run/secret/kubernetes.io/serviceaccount.

pod如何来引用secret???

3种方式

1、挂载的方式,secret挂载到pod当中的一个或者多个容器上的卷里面。

2、把secret作为容器的环境变量

3、docker-registry可以作为集群拉取镜像时使用。使用secret可以实现免密登录

主要用于 保存的是加密的内容,容器内部可以解密,可以直接引用。

陈述式创建:

默认类型(Opaque)---从指定文件提取信息

kubectl create secret generic mysecret --from-file=/opt/test/pod-controller/
username.txt --from-file=/opt/test/pod-controller/passwd.txt

声明式创建

Secret创建加密文件

apiVersion: v1
kind: Secret
metadata:
  name: mysecret2
type:
  Opaque
data:
  username: bHl3Cg==
  password: bGl1eWF3ZWkK

使用token挂载
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: nginx
      image: nginx:1.22
      volumeMounts:
      - name: secrets
        mountPath: "/etc/secrets"
        readOnly: false
  volumes:
  - name: secrets
    secret:
      secretName: mysecret2

执行

kubectl apply -f test.yaml

保存的是加密的内容,容器内部可以解密,可以直接引用。

环境变量使用
apiVersion: v1
kind: Pod
metadata:
  name: mypod1
spec:
  containers:
    - name: nginx
      image: nginx:1.22
      env:
        - name: USER
          valueFrom:
            secretKeyRef:
              name: mysecret2
              key: username
        - name: USER1
          valueFrom:
            secretKeyRef:
              name: mysecret2
              key: password
#我给nginx1.22这个容器里面传了两个环境变量,这两个变量的值从secret来,分别是两条mysecret1的加密信息

docker-registry

kubectl create secret docker-registry myharbor --docker-server=192.168.10.40 --docker-username=admin --docker-password=123456
apiVersion: v1
kind: Pod
metadata:
  name: mypod2
spec:
  containers:
    - name: nginx2
      image: hub.test.com/library/nginx:v1
  imagePullSecrets:
  - name: myharbor
  nodeName: node01

ConfigMap

ConfigMap:保存的时不需要加密的信息。configmap时1.2引入的功能,应用程序会从配置文件,命令参数,以及环境变量中读取配置信息

configmap在创建容器中,给他注入我们需要的配置文件信息,既可以单个的属性也可以整个容器的配置文件。

陈述式

指定目录文件(定义两个文件1.txt 2.txt)

kubectl create configmap game --from-file=/opt/1.txt --from-file=/opt/2.txt

陈述式---直接定义内容

kubectl create configmap game1 --from-literal=guoqi=shuai --from-literal=wangdefu=sao

声明式

apiVersion: v1
kind: ConfigMap
metadata:
  name: game
data:
  guoqi: shuai
  wangdefu: sao
  lyw: Liu
#config是键值对形式保存,一个键值对对应一个值

应用:定义达到环境变量

apiVersion: v1
kind: Pod
metadata:
  name: mypod2
spec:
  containers:
    - name: nginx3
      image: nginx:1.22
      env:
        - name: USER1
          valueFrom:
            configMapKeyRef:
              name: game
              key: guoqi
        - name: USER2
          valueFrom:
            configMapKeyRef:
              name: game
              key: wangdefu
        - name: USER3
          valueFrom:
            configMapKeyRef:
              name: game
              key: lyw

进入pod

热更新

触发滚动跟新

kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/confgi": "20240116"}}}}}'

nginx.conf----1

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
    listen       8080;
    listen  [::]:8080;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
}

nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx1
  labels:
    app: nginx1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx1
  template:
    metadata:
      labels:
        app: nginx1
    spec:
      containers:
      - name: nginx1
        image: nginx:1.22
        ports:
        - containerPort: 8080
        volumeMounts:
          - name: nginx-config
            mountPath: /etc/nginx/
          - name: nginx-mount
            mountPath: /usr/share/nginx/html
      volumes:
      - name: nginx-config
        configMap:
          name: nginx-conn
      - name: nginx-mount
        hostPath:
          path: /opt/html
          type: DirectoryOrCreate

nginx.conf-----2

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
    listen       8080;
    listen  [::]:8080;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
}

执行

kubectl create configmap nginx-con --from-file=/opt/test/secret/configmap/nginx/nginx.conf
#此处用nginx---1

kubectl apply -f nginx.yaml
查看创建的pod


kubectl edit cm nginx-conn
#修改为nginx---2
#修改完成后,大约30s-1min nginx.conf文件会同步为修改后的,修改后的配置文件后要重启nginx服务,此处用滚动更新

触发滚动更新:
kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/confgi": "20240116"}}}}}'

数据卷使用configMap:

1、我们通过数据卷的形式,把配置文件传给了pod内部容器

2、config的热更新,在pod运行的情况下,对config的配置信息进行修改。直接生效 (反应到容器当中)。热更新---pod不会重启

3、configmap的热更新不会触发pod的滚动更新机制(deployment) version/config来触发滚动更新机制(deployment)

主要用于把配置文件传入pod,键值对形式保存的,非加密的信息

总结:

secret:保存加密文件,主要使用方式挂载方式。

configMap:把配置文件传给容器,主要方式也是挂载。

configMap的热更新: 热更新可以直接反应到容器的内部,也不会触发pod的更新机制。如果不是需要重启的配置,都可以直接生效。

version/config来触发滚动更新

需要重启的,可以重启pod。

更新:就是把配置信息重新传到容器内,重启也是一样。

configMap:就是把配置信息传给容器键值对形式保存的,非加密的信息。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OJAC近屿智能带你解读:AIGC必备知识之Lang Chain

Look!👀我们的大模型商业化落地产品📖更多AI资讯请👉🏾关注Free三天集训营助教在线为您火热答疑👩🏼‍🏫 Lang Chain, 是一种先进的语言模型链技术,旨在通过串联多个专业…

js逆向第21例:猿人学第20题新年挑战

文章目录 一、前言二、定位加密参数1、定位wasm加密2、反编译wasm3、定位sign加密三、代码实现四、参考文献一、前言 新春福利:抓取这5页的数字,计算加和并提交结果 二、定位加密参数 通过get请求地址可以看到需要搞定参数有page、sign、t如下图: 进入堆栈不难发现这样一…

互联网加竞赛 基于机器视觉的12306验证码识别

文章目录 0 简介1 数据收集2 识别过程3 网络构建4 数据读取5 模型训练6 加入Dropout层7 数据增强8 迁移学习9 结果9 最后 0 简介 🔥 优质竞赛项目系列,今天要分享的是 基于机器视觉的12306验证码识别 该项目较为新颖,适合作为竞赛课题方向…

驾驭车联网的力量:深入车联网网络架构

车联网,作为移动互联网之后的新风口,以网联思想重新定义汽车,将其从简单的出行工具演化为个人的第二空间。车联网涵盖智能座舱和自动驾驶两大方向,构建在网联基础上,犀思云多年深度赋能汽车行业,本文将从车…

极端恶劣天气数据集-

极端恶劣天气数据集是一个包含了各种极端天气事件的统计信息的数据集。这些事件包括暴雨、暴雪、台风、龙卷风等极端天气现象。该数据集提供了有关这些极端天气事件的时间、地点、持续时间、强度等详细信息。 这个数据集对于研究和分析极端天气现象的频率、趋势和影响具有重要…

基于K-Means聚类与RFM模型分析顾客消费情况【500010102】

项目说明 本数据集是生成式模拟数据,本项目通过可视化分析对数据进行初步探索,再通过时间序列针对店铺的销售额进行分析,对时序图进行分解,发现数据存在季节性,并且通过auto_arima自动选择参数建立了SARIMA模型&#…

【Leetcode 程序员面试金典 02.08】 —— 环路检测 |双指针

面试题02.08. 环路检测 给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。若环不存在,请返回null。 如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。 为了表示给定链表中的…

【不用找素材】ECS 游戏Demo制作教程(1) 1.15

一、项目设置 版本:2022.2.0f1 (版本太低的话会安装不了ECS插件) 模板选择3D URP 进来后移除URP(因为并不是真的需要,但也不是完全不需要) Name: com.unity.entities.graphics Version: 1.0.0-exp.8 点击…

59.说一下 spring 的事务隔离?

spring 的事务隔离有什么作用? 用来解决并发事务所产生一些问题,并发会产生什么问题? 1.脏读2.不可重复度3.幻影读事务隔离的概念 通过设置隔离级别可解决在并发过程中产生的那些问题分别举例说明 1.脏读 上述图表示:一个事务,读取了另一个事务中没有提交的数据,会在…

AI对决:ChatGPT与文心一言的深度比较

. 个人主页:晓风飞 专栏:数据结构|Linux|C语言 路漫漫其修远兮,吾将上下而求索 文章目录 引言ChatGPT与文心一言的比较Chatgpt的看法文心一言的看法Copilot的观点chatgpt4.0的回答 模型的自我评价自我评价 ChatGPT的优势在这里插入图片描述 文…

NXP-RT1176开发(一)——环境搭建(MCUXpressoIDE/VSCode)

目录 1. 安装IDE 1.1 官方开发的IDE软件 1.2 Config工具下载 1.3 说明(需先有SDK) 2. 下载SDK 3. VScode环境下编译 3.1 安装插件 3.2 确保本地有交叉编译工具链和CMAKE 3.3 加载本地SDK 3.4 导入例程编译 1. 安装IDE 该处理器编译规则可以MDK…

动手搓一个kubernetes管理平台(2)-后端权限设计

授权和认证 1. 权限分类 由于用户需要操作kubernetes,所以权限分类起码需要2套,即平台的权限和集群的权限管理,前者用于管理平台,如用户的添加,报表的查看,日志的审计等等,后者用于集群管理&a…

Vue3+ElementPlus实例_select选择器(不连续搜索)

1.开发需求 在各大UI框架的select选择器中,在搜索时都是输入连续的搜索内容,比如“app-store”选项,你要输入“app-xxx”,才能匹配这个选择,要是想输入“a-s”这种不连续的匹配方式,就实现不了&#xff0c…

【MATLAB】Linux版本 高分辨率屏 调整显示缩放

0 引言 安装了linux版本的MATLAB R2023b之后,发现工具栏字体很小不方便使用,所以上网找到了MATLAB论坛上某位大佬的教程:参考链接,放在这里供各位参考 。 1 环境 这里注明我的matlab安装环境仅供参考,未在其他环境下…

搭建知识付费小程序平台:如何避免被坑,选择最佳方案?

随着知识经济的兴起,知识付费已经成为一种趋势。越来越多的人开始将自己的知识和技能进行变现,而知识付费小程序平台则成为了一个重要的渠道。然而,市面上的知识付费小程序平台琳琅满目,其中不乏一些不良平台,让老实人…

【MATLAB随笔】遗传算法优化的BP神经网络(随笔,不是很详细)

文章目录 一、算法思想1.1 BP神经网络1.2 遗传算法1.3 遗传算法优化的BP神经网络 二、代码解读2.1 数据预处理2.2 GABP2.3 部分函数说明 一、算法思想 1.1 BP神经网络 BP神经网络(Backpropagation Neural Network,反向传播神经网络)是一种监…

多特征变量序列预测(五) CEEMDAN+CNN-LSTM风速预测模型

目录 ​编辑 往期精彩内容: 前言 1 多特征变量数据集制作与预处理 1.1 导入数据 1.2 CEEMDAN分解 1.3 数据集制作与预处理 2 基于Pytorch的CEEMDAN CNN-LSTM 预测模型 2.1 定义CEEMDAN CNN-LSTM预测模型 2.2 设置参数,训练模型 3 模型评估与…

Spring Aop原理

Aop概述 Spring 中 Aop的理解: AOP:将那些与业务无关,却与业务模块所共同调用的逻辑(例如事务处理,日志管理,权限管理等) 封装成一个可重用的模块,这个模块被称为"切面",便于减少系统的重复代码…

立体声耳机功率放大器电路D7000,静态电流低且电源纹波抑制比高

立体声耳机功率放大器电路-D7000,静态电流低,电源纹波抑制比高,内置节电模式开关和静噪开关,主要应用于便携式视盘播放器(DISCMAN),便携式迷你播放器(MD),Disc-Man,MP3 播放器,CD-ROM以及其它便携式Disc风扇马达驱动器等领域。 二…