Kubernetes(K8s)_06_配置容器

配置容器

配置容器的3种方式:

1)向容器传递命令和参数(如:设置容器启动时自动运行的命令);

2)容器设置自定义环境变量;

3)特殊类型的卷将配置文件挂载到容器种;

命令和参数

在创建Pod时,通过command和args字段指定命令和参数

1)位于spec.containers字段下;

2)command和args字段在Pod创建后则无法修改;


创建带有命令和参数的Pod格式(其他部分省略):

spec:
  containers:
  -	image: 容器基于的镜像
    name: 容器名
    command: [“命令”]
    args: [“参数1”,“参数2”,“参数N”]

KubernetesDocker说明
commanENTRYPOINT传递命令
argsCMD传递参数

//命令都以执行文件的绝对路径表示

环境变量

Kubernetes允许Pod种每个容器拥有独立自定义的环境变量集合

1)环境变量集合无法在Pod创建后被修改;

2)通过env字段(位于spec.containers字段下)配置环境变量集合;

3)调用环境变量的方式:$(变量名)


如:同一个变量名在不同容器下所代表的值不同
在这里插入图片描述


创建带有环境变量集合的Pod格式(其他部分省略):

spec:
  containers:
   - image:容器基于的镜像
     name: 容器名
     env:
      -  name: 环境变量名1
         value: 环境变量值1
      -  name:环境变量名2
         value: 环境变量值2
      -  name: 环境变量名N
         value: 环境变量值N

ConfigMap

ConfigMap(CM):Kubernetes的一种资源,实现配置数据的传递

1)本质就是键和值的映射;

2)值可以是字符串,也可以是完整的配置文件;

3)映射的内容通过环境变量或卷文件的形式传递给容器;


如:使用ConfigMap配置Pod种相关的容器
在这里插入图片描述

创建ConfigMap

创建ConfigMap可通过两种方式:create命令和YAML文件

(1)create命令创建ConfigMap格式:

kubectl create configmap ConfigMap名称 --from-literal=键=值

1)若包含多个键,则需通过多个–from-literal选项单独指定;

2)键的命名仅包含数字、字母、破折号和下划线;

3)除指定值外,还可引用文档格式:

kubectl create configmap ConfigMap名称 --from-file=文档路径

4)默认以文件名作为键(若不使用文件名作为键,可通过“–form-file=键=文件名”的形式修改);

5)若为目录,则引用该目录下的所有文件当作该键的值;

6)若包含多个键,则需通过多个–from-file选项单独指定;

7)可混合使用–from-literal选项和–from-file选项


如:混合使用–from-literal和–from-file选项创建ConfigMap
在这里插入图片描述


如:通过create命令创建ConfigMap
在这里插入图片描述


(2)YAML文件创建ConfigMap格式:

apiVersion: v1
date:
  键1: “值1”
  键2: “值2”
  键N: “值N”
kind:ConfigMap
metadata:
  name: ConfigMap名称

如:通过YAML文件创建ConfigMap

1)编写YAML文件
在这里插入图片描述
2)调用create命令生成ConfigMap,并验证
在这里插入图片描述

变量传递键的值

通过valueFrom字段可将ConfigMap的键对应值传递给指定变量

1)位于spec.containers.env字段;

2)若引用不存在的ConfigMap,容器无法启动;

//后续创建该ConfigMap,容器会自动启动

3)若Pod内的容器调用该变量只需通过 $(变量名) 的即可;


如:将ConfigMap键的对应值传递给指定变量
在这里插入图片描述


创建含有ConfigMap的Pod格式(其他部分省略),单个传递:

spec:
  containers:
   - image: 容器基于的镜像
     env:
      - name: 变量名1
        valueFrom:
          configMapKeyRef:
          name: CM名称
          key: CM包含的键1
      - name: 变量名N
          valueFrom:
          configMapKeyRef:
          name: CM名称N
          key: CM包含的键N

(1)设置字段optional为:optional:ture,

1)则无论是否引用的ConfigMap是否存在,容器都启动;

2)位于configMapKeyRef字段下


可一次性将ConfigMap的所有键的值传递给变量

1)默认变量名为键的名称,可通过prefix字段指定前缀;

2)若键的名称非法,则该键被忽略(Kubernetes不会自动转换键的名称)


创建含有ConfigMap的Pod格式(其他部分省略),全部传递:

spec:
  containers:
   - image: 容器基于的镜像
     envFrom:
      - prefix: 变量名前缀
        configMapRef:
          name: CM名称

文档传递键的值

ConfigMap卷将所有键包装成单个文档,并挂载到容器中

1)容器中的进程可通过读取对应的文档,获取相应的值;

2)容器内被挂载的目录,该目录下的所有文件将会被隐藏;

//可通过sbuPath(位于volumeMount字段下)指定卷中单个文件挂载至指定目录下,则该目录下的其他文件不会被隐藏

3)常用于传递配置文件


通过在线更新ConfigMap,实现Pod内容器的热更新

1)通过edit命令在线编辑ConfigMap,实现ConfigMap的更新;

2)仅适用于挂载整个CM卷,而不是挂载单个文档;

3)在ConfigMap更新时,Kubernetes通过链接文件将挂载的所有文件都更新;

//无论是该文件是否更新,只要属于CM的挂载均被更新

4)ConfigMap更新后,其他Pod的容器并不是同步更新的(延迟);


创建含有CM卷的Pod格式(其他部分省略),全部内部挂载:

volumes:
 - name: 卷的名称
   configMap:
     name: CM的名称
     defaultMode: “数字权限”

(1)被挂载的文档默认权限配置为644,可通过defaultMode字段修改;


如:创建含有CM配置文件的Pod

1)指定目录下编写nginx配置文件;
在这里插入图片描述
2)指定目录下编写其他配置文件;
在这里插入图片描述
3)调用create命令生成CM,并验证
在这里插入图片描述
4)编写Pod的YAML文件
在这里插入图片描述

可传递卷中指定的文档挂载到容器中

创建含有CM卷的Pod格式(其他部分省略),部分内部挂载:

volumes:
  -	name: 卷名称
    configMap:
    name:  CM的名称
    items:
     - key: 卷中的键
       path: 容器内文档路径

(1)指定卷中键的值将会被存储到指定容器内的文档中;

Secret

Secret:Kubernetes的一种资源,实现隐私数据的安全传递

1)本质就是键和值的映射;

2)值可以是字符串,也可以是完整的文件;

3)Secret的数据只存储在节点的内存中,且以加密的形式保存在主节点中;


Kubernetes集群中默认含有一个Secret

1)集群中每个Pod在创建时,默认挂载该Secret卷;

//挂载目录默为:/var/run/secrets/kubernetes.io/serviceaccount

2)确保Pod从内部安全访问Kubernetes API服务器;


如:查看默认Secret的相关信息

1)列出所有Secret资源信息
在这里插入图片描述
2)查看默认Secret的详细信息
在这里插入图片描述
3)随机查看Pod,均有挂载默认Secret
在这里插入图片描述

创建Secret

创建Secret可通过两种方式:create命令和YAML文件

1)YAML文件创建很少用,类似于ConfigMap创建;


(1)create命令创建Secret格式:

kubectl create secret generic secret名称 --from-literal=键=值

1)若包含多个键,则需通过多个–from-literal选项单独指定;

2)键的命名仅包含数字、字母、破折号和下划线;

3)除指定值外,还可引用文档格式:

kubectl create secret generic secret名称 --from-file=文档路径

4)默认以文件名作为键;

//若不使用文件名作为键,可通过“–form-file=键=文件名”的形式修改;

5)若为目录,则引用该目录下的所有文件当作该键的值;

6)若包含多个键,则需通过多个–from-file选项单独指定;

7)可混合使用–from-literal选项和–from-file选项


如:创建含有私钥和证书Secret

1)创建私钥和证书
在这里插入图片描述
2)调用create命令生成Secret
在这里插入图片描述
3)查看Secret详细信息
在这里插入图片描述
//Secret中键的值是以Base64格式编码保存的(ConfigMap是以纯文本)


可创建用于从Docker Hub仓库拉取镜像的Secret,格式:

kubectl create secret docker-registry Secret名称 --docker-username=Docker Hub的用户名 --docker-password=对应用户的密码


使用格式(其他Pod部分省略):

spec:
  imagePullSecrets:
    name: Secret名称

文档传递键的值

Secret卷将所有键包装成单个文档,并挂载到容器中

1)容器中的进程可通过读取对应的文档,获取相应的值;

2)容器内被挂载的目录,该目录下的所有文件将会被隐藏;

//可通过sbuPath(位于volumeMount字段下)指定卷中单个文件挂载至指定目录下,则该目录下的其他文件不会被隐藏

3)为确保安全性,始终采用文件传递键的值(也可采用变量传递键的值);

4)常用于用户认证文件


创建含有CM卷的Pod格式(其他部分省略),全部内部挂载:

volumes:
 - name: 卷的名称
   secret:
     secretName: Secret的名称
     defaultMode: “数字权限”

(1)挂载的文档默认权限配置为644,可通过defaultMode字段修改;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值