ConfigMap:k8s标准资源,将配置文件做成k8s资源,使其它资源可加载其中配置

Secret:实现加密功能的安全配置文件。由多个key:val中组成

创建configmap资源,可直接使用kubectl创建并且传值

kubectl create configmap filebeat-cfg -n config --from-literal=redis_host="redis.default.svc.cluster.local" --from-literal=log_level="Info"

--from-literal=log_level="Info" 此字段表示为创建一个key为log_level并且为这个可以赋值为info

而后创建pod,并引用configmap资源中的key

apiVersion: v1
kind: Pod
metadata:
name: pod-cfg-demo
namespace : config
spec:
containers:
name: filebeat
image: ikubernetes/filebeat:5.6.5-alp ine
env:#引用环境变量值
- name: REDIS_ HOST #名称,REDIS_HOST为容器内部的变量名称
valueFrom:#引用其他资源传递变量,
configMapKeyRef :#表示引用configmap资源
name: filebeat-cfg #configmap名称,为刚才创建的configmap资源
key: redis_host#key名称
- name: LOG_LEUEL #同上也为容器内的变量名称
valueFrom:
configMapKeyRef :
name: filebeat-cfg
key: log_level

连接至容器内部查看环境变量传递成功了,但是我们修改configmap中key 的值不会生效,除非重建pod

基于存储卷引用configmap

创建2个配置文件为存储卷提供配置



定义好configmap

kubectl create configmap nginx-cfg --from-file=./server1.conf --from-file=server-2./server2.conf -n config

--from-file=./server1.conf #利用文件来传递参数,没有给key名称默认为文件名称为key,文件内容为value

--from-file=server-2./server2.conf -n config#也可以手动添加key名。并指定文件内容为value,且目录为相对路径不能为绝对路径

apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
namespace: config
spec:
containers:
- name: myapp
image: ikubernetes/ myapp:v1
volumeMounts : #定义容器使用存储卷挂载
- name: config#使用存储卷的名称
mountPath: /etc/nginx/conf.d/
volumes:#定义存储卷
- name: config#存储卷名称
configMap:#存储卷类型:这里为configmap而不是nfs其他的文件系统,可以指定configmap资源为存储卷
name: nginx-cfg#configmap名称,这里为我们刚才创建的cm名称
items :#使用cm中的key
- key: server1.conf #key名称
path: server-first.conf #表示映射为文件时文件名是什么
- key: server-2
path: server-second.conf

kubectl edit cm nginx-cfg -n config#在线修改时会自动同步至容器内部



secret资源。经过base64编码后的配置中心,用于传递敏感信息的值

secret类型:

tls类型:专用ssl。tls格式的证书和私钥打包进secret中。不管原来文件叫什么,通通进行统一,证书一定会映射为叫tls.crt。私钥为tls.key

generic:非证书认证时使用的普通的敏感信息类型

docker-registry:用于连接dockerhub中时使用的账户认证信息类型

kubectl create secret generic mysql-root-password -n config --from-literal=password=centos #创建通用型secret资源

创建pod使用secret中的key传递给容器

apiVersion: v1
kind: Pod
metadata:
name: mysql
namespace: config
spec:
containers:
- name: mysql
image: mysql:5.6
env: #容器内部定义的变量
- name: MYSQL_ROOT_PASSWORD#此名称为容器内部定义的变量名,不是随便给的。需要传递参数才能启动mysql容器
valueFrom: #定义值
secretKeyRef: #值类型为secret
key: password #key名称
name: mysql-root-password #secret的名称



交互式连接mysql可直接使用传递的参数登陆mysql

kubectl create secret tls mysql-cert --cert=./myapp.crt --key=./myapp.key -n config#创证书类型secret配置,是其他pod能将此secret当作证书认证

apiVersion: v1
kind: Pod
metadata:
name: myapp-pod-tls
namespace: config
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
volumeMounts:
- name: config
mountPath: /etc/nginx/conf.d/
- name: tls
mountPath: /etc/nginx/certs/#容器内部的挂载路径
volumes:#定义存储卷类型
- name: config 存储卷名称
configMap: #存储卷类型configmap
name: nginx-cfg
items:
- key: server1.conf
path: server-first.conf
- key: server-2
path: server-second.conf
- name: tls
secret: #此存储卷类型为secret
secretName: mysql-cert #secret的名称,刚才我创建为mysql-cert
items: #定义key
- key: tls.crt #注意原key和crt为什么名称。在secret中定义都为tls.key,tls,crt
path: myapp.crt #在容器中名称相对路径为mountPath: /etc/nginx/conf.d/
- key: tls.key
path: myapp.key
mode: 0600 #定义权限

StatefulSet:管理有状态应用,但对于扩缩容需要自己写代码操作,statefulset只负责提供给pod一个单一的标识,存储设备。

operator:使用不同应用程序,对不同的应用程序有程序的所有运维管理操作,不同的应用程序有不同的operator,operator运行为k8s集群中的pod,用于控制有状态的集群应用

定义statefulset:

先创建好几个pv,使用静态创建
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs-v0
labels:
storage: nfs
spec:
accessModes: ["ReadWriteOnce ","ReadwriteMany","ReadOnlyMany"]
capacity:
storage: 1Gi
volumeMode: Filesystem
persistentvolumeReclaimPolicy: Retain
nfs:
server: 192 .168.1.199
path: /vols/v0
--- apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs-v1
labels:
storage: nfs
spec:
accessModes: ["ReadWriteOnce ","ReadwriteMany","ReadOnlyMany"]
capacity:
storage: 5Gi
volumeMode: Filesystem
persistentvolumeReclaimPolicy: Retain
nfs:
server: 192 .168.1.199
path: /vols/v1
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs-v2
labels:
storage: nfs
spec:
accessModes: ["ReadWriteOnce ","ReadwriteMany","ReadOnlyMany"]
capacity:
storage: 5Gi
volumeMode: Filesystem
persistentvolumeReclaimPolicy: Retain
nfs:
server: 192 .168.1.199
path: /vols/v2
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs-v3
labels:
storage: nfs
spec:
accessModes: ["ReadWriteOnce ","ReadwriteMany","ReadOnlyMany"]
capacity:
storage: 5Gi
volumeMode: Filesystem
persistentvolumeReclaimPolicy: Retain
nfs:
server: 192 .168.1.199
path: /vols/v3
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs-v4
labels:
storage: nfs
spec:
accessModes: ["ReadWriteOnce ","ReadwriteMany","ReadOnlyMany"]
capacity:
storage: 5Gi
volumeMode: Filesystem
persistentvolumeReclaimPolicy: Retain
nfs:
server: 192 .168.1.199
path: /vols/v4
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs-v5
labels:
storage: nfs
spec:
accessModes: ["ReadWriteOnce ","ReadwriteMany","ReadOnlyMany"]
capacity:
storage: 5Gi
volumeMode: Filesystem
persistentvolumeReclaimPolicy: Retain
nfs:
server: 192 .168.1.199
path: /vols/v5
#而后创建statefulset资源,绑定使用pv

定义好statefulset

apiVersion: v1
kind: Service #定义好前端service
metadata:
name: myapp-sts-svc
namespace: sts
labels:
app: myapp
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: myapp-pod
containers: sts
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: statefulset-demo
namespace: sts
spec:
selector:
matchLabels:
app: myapp-pod
containers: sts
serviceName: "myapp-sts-svc"
replicas: 2 #pod副本数量
template:#pod模板
metadata:
labels:
app: myapp-pod
containers: sts
spec:
terminationGracePeriodSeconds: 10#删除pod时长
containers:
- name: myapp
image: ikubernetes/myapp:v1
ports:
- containerPort: 80
name: web
volumeMounts:
- name: myapp-pvc
mountPath: /usr/share/nginx/html
volumeClaimTemplates:#定义好pvc资源模板
- metadata:
name: myapp-pvc #pvc名称
namespace: sts #所属名称空间
spec:
accessModes: [ "ReadWriteOnce" ] #访问模型为单路读写
resources: #请求占用多少资源
requests:
storage: 2Gi

k8s之Configmap与Secret的更多相关文章

  1. k8s之configmap和secret

    1.configmap configmap和secret是两种特殊的存储卷,它们不是给pod提供存储空间用的,而是给管理员或者用户提供了从外部向pod内部注入信息的方式. configmap:把配置文 ...

  2. 容器编排系统K8s之ConfigMap、Secret资源

    前文我们了解了k8s上的pv/pvc/sc资源的使用和相关说明,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14188621.html:今天我们主要来聊一下 ...

  3. k8s env、configmap、secret外部数据加载配置

    K8s提供了多种外部数据注入容器的方式,今天我们主要学习环境变量.ConfigMap以及Secret的使用和配置. 环境变量 在docker项目中,对一个容器添加环境变量可以在容器创建时通过-e EN ...

  4. kubernetes系列12—二个特色的存储卷configmap和secret

    本文收录在容器技术学习系列文章总目录 1.configmap 1.1 认识configmap ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件.ConfigMa ...

  5. kubernetes ConfigMap和Secret:配置应用程序

    7.1.配置容器化应用程序 7.2.向容器传递命令行参数 7.2.1.待Docker中定义命令与参数 1.了解ENTRYPOINT与CMD ENTRYPOINT定义容器启动时被调用的可以执行程序 CM ...

  6. 九,configMap及secret的基本使用

    目录 制定容器配置的方式 configMap(存储数据为明文,敏感数据慎用) 创建configMap的几种方式 命令行创建和测试configMap实例 创建一个Pod 挂载测试 通过指定文件创建con ...

  7. spring-cloud-kubernetes与k8s的configmap

    本文是<spring-cloud-kubernetes实战系列>的第六篇,主要内容是在kubernetes上部署一个java web应用,该应用使用了spring-cloud-kubern ...

  8. 使用kubeseal加密和管理k8s集群的secret

    使用kubeseal加密和管理k8s集群的secret 在k8s的管理过程中,像secret这种资源并不好维护,kubeseal提供了一种相对简单的方式来对原始secret资源进行加密,并通过控制器进 ...

  9. 3.k8s存储之ConfigMap、Secret

    1.ConfigMap ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件.命令行参数或环境变量中读取配置信息.ConfigMap API 给我们提供了向容器 ...

随机推荐

  1. Session覆盖测试(要验证码提交到后续页面操作的 绕过去的场景)

    测试原理和方法 找回密码逻辑漏洞测试中也会遇到参数不可控的情况,比如要修改的用户名或者绑定 的手机号无法在提交参数时修改,服务端通过读取当前session会话来判断要修改密码的账 号,这种情况下能否对 ...

  2. (原)关于使用zoompad滤镜生成一个转场效果

    之前在 http://bbs.chinaffmpeg.com/forum.php?mod=viewthread&tid=1294&extra=page%3D1 上分享过一个转场效果,今 ...

  3. .NET ftp文件上传和下载

    文章参考来源地址:https://blog.csdn.net/wybshyy/article/details/52095542 本次对代码进行了一点扩展:将文件上传到ftp指定目录下,若目录不存在则创 ...

  4. python入门和杂识

    1需要理解的一些概念 1.C语言编译完就是机器码,机器码可以直接在处理器上执行. 2.CPU可以直接读取机器码. 3.Python是用C写的. 4.Python解释器会把代码内容读到内存里,通过Pyt ...

  5. mysql批量更新数据,循环select记录然后更新某一字段

    -- 处理IEMI重复的历史数据,建档日期(只有年月日)倒序,档案ID倒序,根据IMEI查档案,查询的结果,相同IMEI下的第一条记录的IEMI不处理,其他的记录的imei 改为空. -- USE ` ...

  6. 使用Qt画出直方图和分位数图

    https://blog.csdn.net/gudanai/article/details/72136420

  7. netcore 步骤

    1.创建工程目录 d:\project 2.进入目录,创建解决方案 dotnet new sln 3.确定开发版本 dotnet --list-sdks //列出sdk版本 dotnet new gl ...

  8. vue 在发送axios请求时数据渲染问题

    这是我请求的json格式的数据 一开始在vue用普通的数据渲染,更改为vue后使用v-for 发现没办法渲染上去了. obj.data就是以上数据. 必须加上这三行给this随意赋个值,神奇的事情就会 ...

  9. js确定取消—js确定取消判断

    国瑞前端: js确定取消,在html界面中,有css模拟的模态框,这样显示的就会更好看一些,那么javascript有没有自带的弹框呢,当然是有的,接下来我就来给大家介绍一下把: js确定取消-警告框 ...

  10. 山峰和山谷 Ridges and Valleys

    题目描述 思路 一开始看这道题目,也不是很会,谁会把统计之类的问题和bfs联系在一起,没有开始的状态,没有结束的状态,题目中连一个最短之类的词也没有出现. 然后统计嘛,题目中说了方格高度都相同,就把周 ...