从零开始的云计算生活——第四十六天,铁杵成针,kubernetes模块之Configmap资源与Secret资源对象

目录

一.故事背景

二.Configmap资源

1.Configmap 概述

什么是 Configmap?

Configmap 能解决哪些问题?

Configmap 应用场景

使用 ConfigMap 的限制条件

2.Configmap 创建方法

命令行直接创建

通过文件创建(常用)

指定目录创建 configmap(常用)

3.使用 Configmap

通过环境变量引入

通过环境变量引入

把 configmap 做成 volume,挂载到 pod(常用)

4.Configmap 热更新

三.K8S-Secret资源对象

1.Secret概述

2.Secret 类型

kubectl 创建类型

3. Secret 使用

Opaque 类型 Secret 的使用

kubectl create创建

yaml创建

挂载

作为环境变量

作为文件挂载及设置 POSIX 权限

查看 secret

ssh 类型 secret

通过文件创建

pod 挂载 ssh secret

四.总结


一.故事背景

今日继续讲解k8s的两个模块

二.Configmap资源

1.Configmap 概述

什么是 Configmap?

Configmap 是 k8s 中的资源对象,用于保存非机密性的配置的,数据可以用 key/value 键值对的形式保存,也可通过文件的形式保存。

Configmap 能解决哪些问题?

ConfigMap 的主要作用就是为了让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性。

我们在部署服务的时候,每个服务都有自己的配置文件,如果一台服务器上部署多个服务:nginx、nginx、apache 等,那么这些配置都存在这个节点上,假如一台服务 器不能满足线上高并发的要求,需要对服务器扩容,扩容之后的服务器还是需要部署 多个服务:nginx、nginx、apache,新增加的服务器上还是要管理这些服务的配置, 如果有一个服务出现问题,需要修改配置文件,每台物理节点上的配置都需要修改, 这种方式肯定满足不了线上大批量的配置变更要求。 所以,k8s 中引入了 Configmap 资源对象,可以当成 volume 挂载到 pod 中,实现统一的配置管理。

1、Configmap 是 k8s 中的资源, 相当于配置文件,可以有一个或者多个 Configmap;

2、Configmap 可以做成 Volume,k8s pod 启动之后,通过 volume 形式映射到容器内部指定目录上;

3、容器中应用程序按照原有方式读取容器特定目录上的配置文件。

4、在容器看来,配置文件就像是打包在容器内部特定目录,整个过程对应用没有任何侵入。

Configmap 应用场景

1、使用 k8s 部署应用,当你将应用配置写进代码中,更新配置时也需要打包镜像,configmap 可以将配置信息和 docker 镜像解耦,以便实现镜像的可移植性和可复用性,因为一个 configMap 其实就是一系列配置信息的集合,可直接注入到 Pod 中给容器使用。configmap 注入方式有两种,一种将 configMap 做为存储卷,一种是将configMap 通过 env 中 configMapKeyRef 注入到容器中。

2、使用微服务架构的话,存在多个服务共用配置的情况,如果每个服务中单独一份配置的话,那么更新配置就很麻烦,使用 configmap 可以友好的进行配置共享。

使用 ConfigMap 的限制条件

  • ConfigMap 需要在 Pod 启动前创建出来;

  • 并且只有当 ConfigMap 和 Pod 处于同一命名空间时,才可以被 Pod 引用;

  • 当 Pod 挂载 ConfigMap 绑定的目录时,目录下的目录并不会挂载到 Pod 内,只有目录下的文件会被挂载。

  • ConfigMap 在设计上不是用来保存大量数据的。在 ConfigMap 中保存的数据不可超过 1MiB。如果你需要保存超出此尺寸限制的数据,可以考虑挂载存储卷或者使用独立的数据库或者文件服务。

2.Configmap 创建方法

命令行直接创建

直接在命令行中指定 configmap 参数创建,通过--from-literal 指定参数

创建选项解析:

--allow-missing-template-keys

含义:如果设置为true,当模板中的字段或映射键在数据来源中缺失时,忽略模板中的任何错误。

--append-hash

含义:将configmap的哈希值附加到它的名称后面。

--as-group

含义:指定操作时要模拟的组。这个标志可以重复使用,以指定多个组,用于在操作中进行权限模拟。

--as-uid

含义:指定操作时要模拟的用户ID(UID)。

--as

含义:指定操作时要模拟的用户名。这个用户可以是普通用户或者服务账户,用于在操作中进行权限模拟。

--cache-dir

含义:默认的缓存目录路径。

--certificate-authority

含义:指向证书颁发机构(CA)证书文件的路径,用于验证服务器证书的合法性。

--client-certificate

含义:指向用于TLS(传输层安全协议)的客户端证书文件的路径。

--client-key

含义:指向用于TLS的客户端密钥文件的路径。

--cluster

含义:指定要使用的kubeconfig中的集群名称。kubeconfig是Kubernetes用于配置客户端访问集群的文件。

--context

含义:指定要使用的kubeconfig中的上下文名称。上下文包含了集群、用户和命名空间等信息,用于确定如何与集群进行交互。

--disable-compression

含义:如果设置为true,对发送到服务器的所有请求都不使用响应压缩。

--dry-run

含义:必须是“none”、“server”或“client”之一。如果是“client”策略,仅打印出将要发送到服务器的对象,而不实际执行创建操作;“server”可能在服务器端进行一些验证但不持久化;“none”则是正常执行操作。

--field-manager

含义:用于跟踪字段所有权的管理器名称。

--from-env-file

含义:指定一个文件路径,用于读取以键值对(key=val)形式的行来创建configmap。

--from-file

含义:可以使用文件路径来指定键文件,在这种情况下,文件的基本名称(不含路径)将被用作configmap中的键,文件内容作为值。

--from-literal

含义:指定一个键和一个字面量值,用于插入到configmap中(例如mykey=somevalue)。

--help

含义:显示configmap相关的帮助信息。

--insecure-skip-tls-verify

含义:如果设置为true,将不会检查服务器证书的有效性。这会使你的连接变得不安全,但在某些测试或特殊环境下可能会用到。

--kubeconfig

含义:指向用于命令行接口(CLI)请求的kubeconfig文件的路径。

--log-flush-frequency

含义:日志刷新的最大间隔秒数,即多久将日志缓冲区中的内容刷新输出一次。

--match-server-version

含义:要求服务器版本与客户端版本匹配。

--namespace

含义:如果存在此选项,它指定了这个命令行请求的命名空间范围。命名空间用于在Kubernetes集群中对资源进行隔离和分组。

--output

含义:输出格式。可以是以下之一:(json、yaml、name、go-template、go-template-file、template等),用于指定命令执行结果的输出格式。

--password

含义:用于对API服务器进行基本身份验证的密码。

--profile

含义:要捕获的性能分析(profile)名称。可以是(none、cpu、heap、goroutine、threadcreate、block、mutex)之一,用于对Kubernetes组件的性能进行分析。

--profile-output

含义:指定要将性能分析结果写入的文件名。

--request-timeout

含义:在放弃单个服务器请求之前等待的时间长度。非零值会设置请求超时时间,避免长时间等待无响应的服务器。

--save-config

含义:如果设置为true,当前对象的配置将保存在其注释中。否则,不会保存配置。

--server

含义:Kubernetes API服务器的地址和端口,用于指定客户端连接的服务器位置。

--show-managed-fields

含义:如果设置为true,在以JSON或YAML格式打印对象时,保留managedFields字段。这些字段通常用于记录资源的管理信息。

--template

含义:当-o=go-template、-o=go-template-file等输出格式选项被使用时,指定要使用的模板字符串或模板文件路径。

--tls-server-name

含义:用于服务器证书验证的服务器名称。如果未提供,将使用主机名进行验证。

--token

含义:用于对API服务器进行身份验证的承载令牌(Bearer Token)。

--username

含义:用于对API服务器进行基本身份验证的用户名。

--user

含义:指定要使用的kubeconfig用户的名称。

--validate

含义:必须是以下之一:strict(或true)、warn、ignore(或false),用于指定对资源配置的验证级别。

--vmodule

含义:逗号分隔的pattern=N设置列表,用于基于文件过滤的日志记录(仅适用于特定的日志系统)。

--v

含义:日志级别详细程度的数字表示,用于控制日志输出的信息量。

--warnings-as-errors

含义:将从服务器接收到的警告视为错误,并以非零退出码退出命令执行。

通过文件创建(常用)

通过指定文件创建一个 configmap,--from-file=<文件>,若没有定义key,则使用文件名作为key,文件内容作为value。

apiVersion: v1
kind: Pod
metadata:
  name: pod-test
  labels:
    app: nginx129
spec:
  containers:
  - name: nginx129
    ports:
    - containerPort: 80
    image: nginx:latest
    imagePullPolicy: IfNotPresent
                                             

将default.conf拷出来并修改

在nginx.yaml中新加内容

volumeMounts:
    - name: nginx-config
      mountPath: /etc/nginx/conf.d/
  volumes:
  - name: nginx-config
    configMap:
      name: nginx-conf  

创建一个svc.yaml


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值