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"
相关推荐
广州中轴线2 小时前
OpenStack on Kubernetes 生产部署实战(十三)
容器·kubernetes·openstack
晚霞的不甘3 小时前
Flutter for OpenHarmony天气卡片应用:用枚举与动画打造沉浸式多城市天气浏览体验
前端·flutter·云原生·前端框架
Tadas-Gao3 小时前
TCP粘包现象的深度解析:从协议本质到工程实践
网络·网络协议·云原生·架构·tcp
礼拜天没时间.4 小时前
深入Docker架构——C/S模式解析
linux·docker·容器·架构·centos
切糕师学AI4 小时前
Helm Chart 是什么?
云原生·kubernetes·helm chart
猫头虎4 小时前
如何使用Docker部署OpenClaw汉化中文版?
运维·人工智能·docker·容器·langchain·开源·aigc
会周易的程序员4 小时前
openplc runtimev4 Docker 部署
运维·c++·物联网·docker·容器·软件工程·iot
陈桴浮海4 小时前
【Linux&Ansible】学习笔记合集三
linux·运维·云原生·ansible
小Pawn爷4 小时前
1.Docker基础
运维·docker·容器
chinesegf4 小时前
清理docker残留镜像images
运维·docker·容器