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"
相关推荐
..Move...9 小时前
Docker镜像制作
运维·docker·容器
行思理15 小时前
Docker 应该如何学习 分四个阶段
学习·docker·容器
Dobby_0519 小时前
【Linux】安装 Rocky Linux 9 并配置 Kubernetes 集群基础环境 | VMware | Win11
linux·云原生·kubernetes
java_logo19 小时前
Docker 部署 Debian 全流程教程
linux·运维·docker·容器·debian
❀͜͡傀儡师20 小时前
基于 docker compose 进行部署PandaWiki
运维·docker·容器
阿里云云原生20 小时前
阿里巴巴 AI Coding 分享会 Qoder Together 杭州站来啦!
云原生
老年DBA20 小时前
Kubernetes 上的 GitLab + ArgoCD 实践(二):使用自建 GitLab Runner 完善 CI 流程
kubernetes·gitlab·argocd
阿里云云原生21 小时前
告别手动埋点!Android 无侵入式数据采集方案深度解析
android·云原生
老朋友此林21 小时前
一文速通k8s基础概念原理Kubernetes
云原生·容器·kubernetes