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"
相关推荐
不爱笑的良田18 分钟前
从零开始的云原生之旅(十三):Ingress 深度剖析——从 Service 到统一入口
云原生
n***i9524 分钟前
云原生数据库使用体验,与传统数据库差异
数据库·云原生
像风一样自由20204 小时前
告别“在我电脑上能跑”:Docker入门与核心概念解析
docker·容器·k8s
炸裂狸花猫10 小时前
开源监控体系Prometheus & Thanos & Grafana & Alertmanager
云原生·开源·prometheus·监控·thanos
qq_2813174710 小时前
kubernetes(k8s)-pod生命周期
java·容器·kubernetes
终端行者11 小时前
K8s常用排障调试工具 入侵排查 kubectl debug 命令详解
云原生·容器·kubernetes
fie888911 小时前
Kubernetes(k8s)高可用性集群的构建详细步骤
云原生·容器·kubernetes
qq_3168377511 小时前
华为CCE k8s 使用nfs-subdir-external-provisioner 创建pvc时自动创建pv
windows·华为·kubernetes
KevinPedri11 小时前
API创建指定版本k8s集群
容器·云计算
奋斗的蛋黄11 小时前
K8s Ingress 与 Ingress API 全解析:外部访问集群的统一入口
云原生·容器·kubernetes