首页 > 其他分享 >Kubernetes基础配置管理

Kubernetes基础配置管理

时间:2022-09-28 20:55:55浏览次数:61  
标签:configmap name Kubernetes kubectl 配置管理 基础 auth nginx conf

一、ConfigMap创建

  1-1、基于目录创建ConfigMap

  • 首先创建一个configmap/conf存储目录,分别建立.conf文件 
mkdir /configmap/conf

#创建。conf文件和添加内容
vim passwd.conf
username=user1
pwd=12345

#创建第二个conf文件和内容
dir=/home
power=rw
  • 基于目录创建configMap命令。kubectl create configmap <映射名称> <数据源>
#命令使用介绍
kubectl create configmap <映射名称> <数据源>

#示例
[root@k8s-master1 conf]# kubectl create configmap cm --from-file=/configmap/conf/
configmap/cm created

  注:

    cm :指的是映射名称

    --from-file= 指向数据源(/configmap/conf目录)

  • 查看基于configMap目录创建状态
#查看方式1是否创建了cm映射对象
[root@k8s-master1 conf]# kubectl get cm
NAME               DATA   AGE
cm                 2      16s
kube-root-ca.crt   1      6d19h

#基于describe命令查看创建的内容
[root@k8s-master1 conf]# kubectl describe configmaps cm
Name:         cm
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
auth.conf:
----
dir=/home
power=rw

passwd.conf:
----
username=user1
pwd=12345


BinaryData
====

Events:  <none>

  注:

    目录/configmap/conf下的auth.conf和passwd.conf两个文件里面的内容出现在了Data下面

  • 利用yaml文件格式查看创建内容
[root@k8s-master1 conf]# kubectl get configmaps cm -oyaml
apiVersion: v1
data:
  auth.conf: |
    dir=/home
    power=rw
  passwd.conf: |
    username=user1
    pwd=12345
kind: ConfigMap
metadata:
  creationTimestamp: "2022-09-27T01:57:56Z"
  name: cm
  namespace: default
  resourceVersion: "202341"
  uid: 583e2a95-d81b-49c1-8eee-659a2f601507

  1-2、基于文件创建configMap

    说明:你可以使用 kubectl create configmap 基于单个文件或多个文件创建 ConfigMap。

  • 基于文件创建configMap命令
[root@k8s-master1 conf]# kubectl create configmap passwd --from-file=/configmap/conf/passwd.conf 
configmap/passwd created
  • 查看创建状态
[root@k8s-master1 conf]# kubectl get cm passwd
NAME     DATA   AGE
passwd   1      5m
[root@k8s-master1 conf]# kubectl describe configmap passwd 
Name:         passwd
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
passwd.conf:
----
username=user1
pwd=12345


BinaryData
====
  • --from-file 参数,从多个数据源创建 ConfigMap。
 kubectl create configmap auth-pwd --from-file=/configmap/conf/auth.conf --from-file=/configmap/conf/passwd.conf 

  注:根据上面查看状态命令使用

  1-3、使用 --from-env-file 选项从环境文件创建 ConfigMap,例如:

    Env 文件包含环境变量列表。其中适用以下语法规则:

      • Env 文件中的每一行必须为 VAR=VAL 格式。
      • 以#开头的行(即注释)将被忽略。
      • 空行将被忽略。
      • 引号不会被特殊处理(即它们将成为 ConfigMap 值的一部分)。
  • 示例文件
vim game-env.conf

enemies=aliens
lives=3
allowed="true"
  •   --from-env-file创建示例
[root@k8s-master1 conf]# kubectl create configmap game-env --from-env-file=/configmap/conf/game-env.conf 
configmap/game-env created
  • 创建状态
[root@k8s-master1 conf]# kubectl describe configmaps game-env
Name:         game-env
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
enemies:
----
aliens
lives:
----
3
allowed:
----
"true"

BinaryData
====

Events:  <none>

  注:从 Kubernetes 1.23 版本开始,kubectl 支持多次指定 --from-env-file,多个文件创建跟--from-file一样

二、ConfigMap使用方法

  2-1、生成一个deployment nginx yaml文件,把生成的yaml文件追加到nginx-configmap.yaml里面

#生成yaml命令
kubectl create deploy nginx --image=nginx:1.16.1-alpine --dry-run=client -oyaml > nginx-configmap.yaml

#对生成的yaml文件删除不使用参数,删除参数后的yaml文件如下

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.16.1-alpine
        name: nginx

  2-2、利用valueFrom定义容器环境变量。单个ConfigMap中的数据定义容器环境变量,修改nginx-configmap.yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.16.1-alpine
        name: nginx
        env:
          - name: LIEVS
            valueFrom:
              configMapKeyRef:
               name: game-env
               key: lives

  注;

    2-2-1、添加内容为:

env:
   - name: LIEVS                #生成容器里面的环境变量名称
      valueFrom:                  
         configMapKeyRef:      
         name: game-env       #生成configMap的映射名称,利用kubectl get configmaps查看
         key: lives                  #生成configMap环境变量key

   2-2-2、进入nginx容器终端查看利用configMap设置的LIEVS环境变量,红色方框是实在的变量

 

   2-2-3、key: lives 指的就是如果红色方框查询处的key

 

   2-2-4、可以添加多个环境变量,可以直接拷贝 如下:

- name: LIEVS                #改成新的容器里面的环境变量名称
      valueFrom:                  
         configMapKeyRef:      
         name: game-env       #生成configMap的映射名称,利用kubectl get configmaps查看
         key: lives                  #生成configMap环境变量key

   2-3、利用envFrom实现批量环境变量设置

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.16.1-alpine
        name: nginx
        envFrom:
        - configMapRef:
            name: game-env
          prefix: game-env

  注:

#利用envFrom这里的配置是实现批量环境变量设置
envFrom:
- configMapRef:
      name: game-env     #这里是创建的ConfigMap容器名称
      prefix: game-env_   #这里设置的是实区服是通过CofingMap还是自定义实现添加前缀字段     

  查看实现批量状态和设置区服前缀字段,如图红色框前缀显示

 

   2-4、以文件的形式挂载ConfigMap

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: web
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: web
    spec:
      containers:
      - image: nginx:1.16.1-alpine
        name: nginx
        volumeMounts:
        - name: auth-volume
          mountPath: /etc/config
      volumes:
        - name: auth-volume
          configMap:
            #提供包含要添加到容器中的文件的 ConfigMap 的名称
            name: auth

  注:volumes 部分下添加 ConfigMap 名称。 这会将 ConfigMap 数据添加到 volumeMounts.mountPath 所指定的目录 (在本例中为 /etc/config

   2-4-1、利用volumes挂载文件相关配置注解

 volumeMounts:
   - name: auth-volume        #在这的auth-volume需要跟volues.-name下面的名称一致
      mountPath: /etc/config   #指定挂载目录路径
volumes:
   - name: auth-volume         #volumes.-name名称
      configMap:
          name: auth                #提供包含要添加到容器中ConfigMap 的名称,可以通过kubectl get configmaps

  2-4-2、挂载文件验证

[root@k8s-master1 opt]# kubectl exec -it web-64d4ff5dd9-q9tjw -- sh
/ # ls -l /etc/config/
total 0
lrwxrwxrwx    1 root     root            16 Sep 28 07:09 auth.conf -> ..data/auth.conf
/ # cat /etc/config/auth.conf 
dir=/home
power=rw

  2-4-3、通过实现在线编辑,挂载文件内容进行自动修改

#把dir=/home修改为dir=/opt
kubectl get configmaps

  查看修改后的内容状态

[root@k8s-master1 opt]# kubectl exec -it web-64d4ff5dd9-q9tjw -- sh
/ # cat /etc/config/auth.conf 
dir=/opt
power=rw

  注:修改后有可能会有相应的时间等待刷新。如果在程序中使用这个功能需要关注程序是否有热加载功能,如果程序没有加载功能修改后的配置程序不读取生效。

  2-5、自定义挂载文件权限和名称

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: web
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: web
    spec:
      containers:
      - image: nginx:1.16.1-alpine
        name: nginx
        volumeMounts:
        - name: auth-volume
          mountPath: /etc/config
      volumes:
        - name: auth-volume
          configMap:
            #提供包含要添加到容器中的文件的 ConfigMap 的名称
            name: auth
            items:
            - key: auth.conf
              path: auth.conf-back

  2-5-1、刷新yaml文件

kubectl replace -f web-volumes.yaml

  2-5-2、查看自定义挂载文件名称

 

   2-5-3、修改自定义挂载文件权限

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: web
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: web
    spec:
      containers:
      - image: nginx:1.16.1-alpine
        name: nginx
        volumeMounts:
        - name: auth-volume
          mountPath: /etc/config
      volumes:
        - name: auth-volume
          configMap:
            #提供包含要添加到容器中的文件的 ConfigMap 的名称
            name: auth
            items:
            - key: auth.conf
              path: auth.conf-back
            defaultMode: 0666

  查看挂载文件权限修改后如果:

  

 

   注:可以对照源文件权限2-5-2图。查权限需要进入 ..data目录里面,因为auth.conf-back是通过软连接建立的

  

 

 

 

 

 

 

 

 

 

 

 

 

 

  

标签:configmap,name,Kubernetes,kubectl,配置管理,基础,auth,nginx,conf
From: https://www.cnblogs.com/albert919/p/16733414.html

相关文章

  • Kubernetes资源调度
    一、无状态应用管理Deployment1-1、创建DeploymentapiVersion:apps/v1kind:Deploymentmetadata:labels:app:nginxname:nginxspec:replicas:5......
  • Kubernetes之Pod详解
    1、Pod生命周期pod创建1.APIServer在接收到创建pod的请求之后,会根据用户提交的参数值来创建一个运行时的pod对象。2.根据APIServer请求的上下文的元数据来验......
  • 【Java基础】自定义异常类
    1.自定义异常类(1)继承现有异常类:比如RuntimeException、Exception。(2)提供全局常量:serialVersionUID。(3)提供重载构造器。publicclassValueExceptionextendsException......
  • 【Java基础】抛出异常throws
    1.throws声明抛出异常一个方法中可能出现异常,那么可以使用throws抛出异常,交给这个方法的调用者处理(也不处理就继续向上抛,直到main方法)。publicvoidsay()throwsCl......
  • 【Java基础】异常处理机制:try-catch-finally
    1.异常对象生成(抛出异常)Java程序的执行过程中如果出现异常,就会生成一个异常类的对象,该异常对象将会被提交给Java运行时系统。虚拟机自动生成异常对象:虚拟机检测到程序......
  • Go基础编程:并发编程—goroutine
    1goroutine是什么goroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goro......
  • Go基础编程:基础数据类型
    分类Go语言内置以下这些基础类型:类型名称长度零值说明bool布尔类型1false其值不为真即为假,不可以用数字代表true或falsebyte字节型10uint8别名rune字符类型40专用于存储unic......
  • 计算机基础知识
    计算机基础知识计算机的本质计算机的本质,俗称为电脑,仅仅通过字面意思,我们可以将其理解为”通电的大脑“,而计算机需要通电才能够运行。电所产生的信号只有正负两种,在此基......
  • Go基础编程:自定义函数
    定义格式函数构成代码执行的逻辑结构。在Go语言中,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句。Go语言函数定义格式如下:funcFuncName(/*参......
  • Go基础编程:递归函数、函数类型、匿名函数与闭包
    1.递归函数递归指函数可以直接或间接的调用自身。递归函数通常有相同的结构:一个跳出条件和一个递归体。所谓跳出条件就是根据传入的参数判断是否需要停止递归,而递归体则是......