pod的配置文件管理

发布于:2025-02-19 ⋅ 阅读:(136) ⋅ 点赞:(0)

配置管理

1.相关概念

        就是用来给pod在初始化阶段传参的一种方式,给pod直接初始化配置文件。

        secret-->保存密码,token,密钥等敏感的k8s数据,放在secret中,可以减少加密信息暴露的风险。

       configmap: 与secret类似,保存需要的信息传入到pod当中去,configmap存储的是不需要加密的信息。(k8s1.20版本之后的新机制)可以传配置文件,命令行参数,或者环境变量直接导入到pod中去。

2. secret类型

类型 说明
opaque : base64 编码格式的secret,用来存储用户自定义的密码,密钥等等,默认类型。(generic就是opaque)
kubernetes.io/dockerconfigjson 用来保存docker仓库的认证信息
tls

用来存储TLS/SSL证书和密钥-->https

kubernetes.io/service-account-token: k8 k8s自动创建,用来访问apiserver的secret,只要创建了pod都会自动使用seret,和apiserver通信,自动挂载到pod的目录/run/secrets/kubernetes.io/serviceaccount

3.pod使用secret的场景

  • 挂载,把配置挂载到容器内的卷中,文件的形式
  • 作为容器的环境变量
  • 拉取镜像的使用

4.secret实例 

命令行创建

使用yaml文件 

 

挂载使用

 

把变量形式secret保存到pod当中

5.configmap实例

指定目录

 

指定文件-->推荐

kubectl create configmap 名称 --from-file=绝对路径 --from-file=绝对路径 --from-file=绝对路径

#可以直接在命令行指定单个或多个文件

使用yaml文件
  • valueFrom 

  • envFrom 

声明在cm的yaml文件当中(配置文件的内容较长,不推荐)

#整个写在configmap里面再传进去,以nginx的配置文件为例

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-conf
data: |
  worker_processes  2;
    events {
      worker_connections  1024;
      }
  http {
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
      listen       8081;
      server_name  localhost;
      charset utf-8;
      location / {
        root   html;
        index  index.html index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
          root   html;
        }
  }
  }
#确保文件的缩进格式是正确的,所以不推荐

6.configMap的热更新  

        在不修改configmap的配置文件,同时也不停止pod的情况下,对配置文件进行修改,同步到pod的配置文件当中去。

kubectl create cm nginx-conf --from-file=/opt/configmap/nginx.conf

原配置文件中的端口号是8081

kubectl edit cm nginx-conf #配置出错了可以用命令行修改

当修改了cm-配置文件,基于同一配置文件生成的pod都会改变