前言

导引

Pod需要解决如下问题

  • 不可变基础设施(容器)的可变配置
  • 敏感信息的存储和使用(eg: 密码、token等)
  • 集群中Pod的字我身份验证
  • 容器运行资源的配置管理
  • 容器的运行安全管控
  • 容器启动前置条件校验等

对应的解决办法

  • ConfigMap
  • Secret
  • ServiceAccount
  • Spec.Containers[].resources.limits/requests
  • Spec.Containers[].SecurityContext
  • Spec.InitContainers
ComfigMap

主要管理容器运行所需的配置文件、环境变量、命令行参数等可变配置;用于解耦容器镜像和可变配置,从而保障工作负载(Pod)的可移植性

示例

在这里插入图片描述

创建

在这里插入图片描述

使用

在这里插入图片描述

使用要点
  • ConfigMap文件大小限制: 1Mb (ETCD的要求)
  • Pod只能引用相同Namespace中的ConfigMap
  • Pod引用的ConfigMap不存在时,Pod无法创建启动,即Pod创建前,需配置好ConfigMap
  • 使用envFrom从ConfigMap来配置环境变量时,如果ConfigMap中的某些Key被认为无效(比如key名称中带有数字),该环境变量将不会被注入容器,但是Pod可以正常创建
  • 只有通过k8s api创建的Pod才能使用ConfigMap,其它方式创建的Pod(如manifes创建的static pod)不能使用ConfigMap
secret

在集群中存储密码、token等敏感信息用的资源对象,其中的敏感数据采用base-64编码保存,相比存储在明文的ConfigMap中,更规范、更安全

  • 示例
apiVersion: v1
kind: Secret
#--------Secret元数据--------
metadata:
  name: mysecret
  namespace: kube-system
#--------Sercet类型--------
type: Opaque
data: 
#--------Sercet存储的数据-------
  username: xxx
  password: xxx  
  • Secret主要有如下类型
    1.Opaque
    2.kubernetes.io/service-account-token
    3.kubernetes.io/dockerconfigjson
    4.bootstrap.kubernetes.io/token

  • 创建
    在这里插入图片描述

  • 使用
    在这里插入图片描述

  • 配置docker pull
    在这里插入图片描述

使用要点
  • Secret文件大小限制: 1Mb
ServiceAccount

用于解决Pod在集群中的身份认证问题,其中认证使用的授权信息,则是Secret(type=kubernetes.io/service-account-token)进行管理

语法

在这里插入图片描述

示例

在这里插入图片描述

容器资源配置管理(Spec.Containers[].resources.limits/requests)

在这里插入图片描述

在这里插入图片描述

Security Context

在这里插入图片描述

InitContainer

在这里插入图片描述

结语

… …

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐