k8s配置与存储

1:Secret

Secret 类似于 ConfigMap 但专门用于保存机密数据。

1.1:Secret 的类型

创建 Secret 时,你可以使用 Secret 资源的 type 字段,或者与其等价的 kubectl 命令行参数(如果有的话)为其设置类型。 Secret 类型有助于对 Secret 数据进行编程处理。

Kubernetes 提供若干种内置的类型,用于一些常见的使用场景。 针对这些类型,Kubernetes 所执行的合法性检查操作以及对其所实施的限制各不相同。

内置类型

用法

Opaque

用户定义的任意数据

kubernetes.io/service-account-token

服务账号令牌

kubernetes.io/dockercfg

~/.dockercfg 文件的序列化形式

kubernetes.io/dockerconfigjson

~/.docker/config.json 文件的序列化形式

kubernetes.io/basic-auth

用于基本身份认证的凭据

kubernetes.io/ssh-auth

用于 SSH 身份认证的凭据

kubernetes.io/tls

用于 TLS 客户端或者服务器端的数据

bootstrap.kubernetes.io/token

启动引导令牌数据

通过为 Secret 对象的 type 字段设置一个非空的字符串值,你也可以定义并使用自己 Secret 类型(如果 type 值为空字符串,则被视为 Opaque 类型)。

1.1.1:generic 类型

1:使用基本字符串 命令行创建

特殊字符(例如 KaTeX parse error: Undefined control sequence: \、 at position 2: 、\̲、̲*、= 和 !)会被你的 Sh...zDsb=' --dry-run=client -oyaml

等同于 yaml

apiVersion: v1

data:

password: YWJjZEAxMjMh

username: cm9vdA==

kind: Secret

metadata:

creationTimestamp: null

name: db-secret

解码

echo "cm9vdA==" | base64 -d

2:使用文件来创建secret

默认密钥名称是文件名

kubectl create secret generic db-user-pass

--from-file=./username.txt

--from-file=./password.txt

使用 --from-file=[key=]source 来设置密钥名称

kubectl create secret generic db-user-pass-02

--from-file=uname=./username.txt

--from-file=pwd=./password.txt3:在pod中使用,并以环境变量的形式使用

修改secret pod环境变量引用的方式不会被自动更新

secret保存在集群的etcd里面

apiVersion: v1

kind: Pod

metadata:

name: "pod-secret"

namespace: default

labels:

app: "pod-secret"

spec:

containers:

  • name: pod-secret
    image: "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/e2e-test-images/busybox:1.29-4"
    command: ["/bin/sh","-c","sleep 3600"] ## echo $My_USR
    resources:
    limits:
    cpu: 10m ### 1核代表1000m
    requests:
    cpu: 5m
    env:
    • name: MY_USR ### 容器里的环境变量名字
      valueFrom:
      secretKeyRef: ## secret的内容
      name: db-secret #指定secret名字
      key: username ### 自动base64解码
    • name: POD_NAME
      valueFrom:
      fieldRef: ## 属性引用
      fieldPath: metadata.name ## 取出资源对象信息
    • name: POD_LIMIT_MEM
      valueFrom:
      resourceFieldRef:
      containerName: pod-secret ## 取出指定容器的相关资源值
      resource: limits.cpu4:secret用卷挂载 (改文件,里面信息会更新)

secret保存在集群的etcd里面

apiVersion: v1

kind: Pod

metadata:

name: "pod-secret"

namespace: default

labels:

app: "pod-secret"

spec:

containers:

  1. configmap
    apiVersion: v1
    kind: Pod
    metadata:
    name: configmap-demo-pod
    spec:
    containers:

    • name: demo
      image: alpine
      command: ["sleep", "3600"]
      env:

      定义环境变量

      • name: PLAYER_INITIAL_LIVES # 请注意这里和 ConfigMap 中的键名是不一样的
        valueFrom:
        configMapKeyRef:
        name: game-demo # 这个值来自 ConfigMap
        key: player_initial_lives # 需要取值的键
      • name: UI_PROPERTIES_FILE_NAME
        valueFrom:
        configMapKeyRef:
        name: game-demo
        key: ui_properties_file_name
        volumeMounts:
      • name: config
        mountPath: "/config"
        readOnly: true
        volumes:

    你可以在 Pod 级别设置卷,然后将其挂载到 Pod 内的容器中

    • name: config
      configMap:

      提供你想要挂载的 ConfigMap 的名字

      name: game-demo

      来自 ConfigMap 的一组键,将被创建为文件

      items:

      • key: "game.properties"
        path: "game.properties"
      • key: "user-interface.properties"
        path: "user-interface.properties"
相关推荐
J_liaty2 小时前
OpenFeign微服务实战指南
微服务·云原生·架构·openfeign
七夜zippoe3 小时前
服务注册发现核心揭秘 Eureka、Nacos、Consul全方位对比
spring cloud·云原生·eureka·nacos·consul·cap
开发者联盟league4 小时前
k8s 创建token
云原生·容器·kubernetes
扑火的小飞蛾5 小时前
RHEL 7 安装 Docker 过程总结
运维·docker·容器
web小白成长日记6 小时前
Node.js 编程实战:部署 Node.js 应用 —— Docker 容器化部署
docker·容器·node.js
柠檬汁Dev6 小时前
已有 K8s 集群如何加装 Sealos 桌面
云原生·容器·kubernetes
ProgrammerPulse7 小时前
企业云原生转型选型参考:VM / 容器混合负载场景青云云易捷容器版与 SmartX 技术适配解析
云原生·超融合
飞翔沫沫情8 小时前
kubeadm部署 Kubernetes(k8s) 高可用集群 V1.32
云原生·容器·kubernetes
江畔何人初8 小时前
理解容器挂载点
linux·运维·云原生
晚霞的不甘10 小时前
Flutter for OpenHarmony 引力弹球游戏开发全解析:从零构建一个交互式物理小游戏
前端·flutter·云原生·前端框架·游戏引擎·harmonyos·骨骼绑定