k8s-资源存储

ConfigMap

基于命令创建

创建一个名为my-config的configMap,并将key1和key2的值分别设置为value1和value2。

kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2

基于文件创建

1.定义文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  key1: value1
  key2: value2

2.基于文件创建

kubectl apply -f configmap.yaml

查询

1.要查看已创建的configMap,可以使用以下kubectl命令行工具:

kubectl get configmaps

 

这将列出所有已创建的configMap及其基本信息,如名称、命名空间、创建时间等。

2.要查看特定configMap的详细信息,可以使用以下命令:

kubectl describe configmap <configmap-name>

 

这将显示有关指定configMap的详细信息,包括数据键值对和其他元数据。

使用configMap

1.注入环境变量的方式

deployment.yml配置

    spec:
      containers:
      - env:
        - name: CACHE_ADDR #赋值给本地环境变量名字
          valueFrom:
            configMapKeyRef:
              key: cache.addr #config map 里面key
              name: config-common #config map 名字

2.基于数据卷

  volumes:
  - name: db-config  # 数据卷的名称
    configMap:
      name: test-dir-config  # 指定要加载的 ConfigMap 的名称如果不指定,默认会讲configmap中所有key全部转换为一个个同名的文件
      items:  # 对 configMap 中的 key 进行映射
      - key: "db.properties"  # ConfigMap 中的 key 创建configmap可以直接指定key的value为一个yml文件
        path: "db.properties"  # 将该 key 的值转换为文件 

Secret

使用base64存储 安全性不高

针对有特殊字符需要加上单引号

 基于dockerregistry创建

kubectl create secret docker-registry harbor-secret --docker-username=admin --docker-password=wolfcode  --docker-email=lq
查看

kubectl describe secret harbor-secret

编辑

kubectl edit secret harbor-secret

 

 

配合 使用,用于deplomyment 配置私有仓库需要密码授权时用户名密码存储

imagePullSecrets:
- name: harbor-secret
 

SubPath

1.创建一个configMap基于本地文件

kubectl create configmap nginx-conf-cm --from-file=./nginx.conf

2.讲nginxConfig通过configMap挂载起来

apiVersion: v1
kind: Pod
metadata:
  name: app-pod  # 定义Pod的名称
spec:
  containers:
  - name: app-container  # 定义容器的名称
    image: my-app-image  # 指定容器所使用的镜像
    volumeMounts:
    - name: config-volume  # 定义要挂载的Volume的名称
      mountPath: /etc/config  # 指定要挂载到容器中的路径
      subPath: app.properties  # 指定要挂载的文件 这样就不会把整个目录覆盖 只会替换这个文件
  volumes:
  - name: config-volume  # 定义Volume的名称
    configMap:
      name: nginx-config  # 指定要使用的ConfigMap的名称

配置的热更新

针对 subPath 和环境变量形式不会更新

解决方式使用文件挂载的方式,在容器生命周期,将文件替换,或者修改nginx config的config目录文件位置

默认方式会更新,会有个更新周期(更新时间+缓存时间)

如何更新配置

使用edit修改

使用yml替换

1.使用--dry-run不会发送到k8s创建map -o yml输出yml格式
kubectl create cm test-dir-config --from-file=./test/ --dry-run -o yml
2.组合kubectl replace 替换
kubectl create cm test-dir-config --from-file=./test/ -o yml| kubectl replace -f configmap/{name} replaced

不可变的configMap和Secret

禁止别人更改

通过设置 immutable:true

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config  # 定义 ConfigMap 的名称
  immutable: true  # 设置 ConfigMap 为不可变
data:
  app.properties: |-
    key1=value1  # 定义配置文件中的键值对
    key2=value2  # 定义配置文件中的键值对

持久化存储

Volumens

HostPath

节点上的文件或目录挂载到Pod上,此时该目录会变成特久化
存储目录了即使Pod被删除后更启,也可以重新加载到该目录,该目录下的文件不会丢失

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: nginx
    volumeMounts:
    - mountPath: /data  # 容器内挂载路径
      name: data-volume
  volumes:
  - name: data-volume
    hostPath:
      path: /path/to/example  # 本地目录路径

 

EmptyDir

不是为了持久化,仅仅是为了多个pod实现文件共享,当pod被删除 emptDir也会删除

apiVersion: v1
kind: Pod
metadata:
  name: emptydir-pod
spec:
  containers:
  - name: my-container
    image: my-image
    volumeMounts:
    - mountPath: /cache  # 将 EmptyDir 挂载到 /cache 路径
      name: cache-volume
  volumes:
  - name: cache-volume  # 定义名为 cache-volume 的 EmptyDir 卷
    emptyDir: {}  # 使用 EmptyDir 类型的卷

容器之间访问cache实现了共享

NFS挂载

nfs卷能将NFS(网络文件系统挂或到你的Pod中。
不像emptyDir那样会在除Pod的同时也会被除,nfs卷的内容在删除Pod时会被保存,卷只是被即载。这意味着nfs卷可以被先填充数据,并且这些可以在Pod之间共享。

PV与PVC

各种挂载的抽象封装,PV抽象各个挂载的不同, pod根据PVC匹配对于的PV

PV构建

1.静态构建,预先在k8s定义好PV

2.动态构建,当PVC申领没有符合条件的PV则自动创建 需要指定StorageClass

 

PV绑定

根据PVC 绑定符合条件的PV

绑定后的PV不能删除

 

PVC使用

Pod申领PVC

运维定义好PV和PVC 开发Pod申领使用

 

回收策略

1.保留

删除不会自动删除,需要管理员手动删除

2.删除

删除PV对象的同时,所关联数据都会自动移除(默认)

3.回收

已废弃

PV状态

Availabel(空闲未绑定)

Bound(已经被PVC绑定)

Released(PVC被删除,资源已回收,但是PV未被重新使用)

Failed(回收灰白)

StorageClass

传统pod申请pvc 需要提前定义pv 和pvc,有状态服务多了会变得比较麻烦。

 

相关命令

1.获取PV列表

2.获取PVC列表

 

posted @ 2023-12-14 18:23  意犹未尽  阅读(1)  评论(0编辑  收藏  举报