ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。

以下以nginx镜像提供配置文件为例镜像演示,是将ConfigMap 以卷的形式挂载到Pod中

1.编写congfigmap, serice,Deployment yaml文件

root@k8-deploy:~/k8s-yaml/volume# vim configmap.yml
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
data:
default: |
server {
listen 80;
server_name www.yanql.com;
index index.html; location / {
root /data/nginx/html;
if (!-e $request_filename) {
rewrite ^/(.*) /index.html last;
}
}
} ---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: ng-deploy-80
template:
metadata:
labels:
app: ng-deploy-80
spec:
containers:
- name: ng-deploy-80
image: nginx:1.17.10
ports:
- containerPort: 80
volumeMounts:
- mountPath: /data/nginx/html
name: nginx-static-dir
- name: nginx-config
mountPath: /etc/nginx/conf.d
volumes:
- name: nginx-static-dir
hostPath:
path: /data/nginx/html
- name: nginx-config
configMap:
name: nginx-config
items:
- key: default
path: www.yanql.com.conf ---
apiVersion: v1
kind: Service
metadata:
name: ng-deploy-80
spec:
ports:
- name: http
port: 81
targetPort: 80
nodePort: 30080
protocol: TCP
type: NodePort
selector:
app: ng-deploy-80

2.使用yaml文件创建资源

root@k8-deploy:~/k8s-yaml/volume# kubectl apply -f configmap.yml
configmap/nginx-config created
deployment.apps/nginx-deployment created
service/ng-deploy-80 created

3.查看资源是否创建完成

root@k8-deploy:~/k8s-yaml/volume# kubectl get configmap
NAME DATA AGE
kube-root-ca.crt 1 26d
nginx-config 1 89s root@k8-deploy:~/k8s-yaml/volume# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 26d
ng-deploy-80 NodePort 10.0.41.43 <none> 81:30080/TCP 97s root@k8-deploy:~/k8s-yaml/volume# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 1/1 1 1 105s

4.验证配置文件在pod中是否挂载了configmap提供的配置文件

root@k8-deploy:~/k8s-yaml/volume# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-55cb7cdfff-gkdcf 1/1 Running 0 14m root@k8-deploy:~/k8s-yaml/volume# kubectl exec nginx-deployment-55cb7cdfff-gkdcf -it -- bash root@nginx-deployment-55cb7cdfff-gkdcf:/# cat /etc/nginx/conf.d/www.yanql.com.conf
server {
listen 80;
server_name www.yanql.com;
index index.html; location / {
root /data/nginx/html;
if (!-e $request_filename) {
rewrite ^/(.*) /index.html last;
}
}
}

5.通过访问serice的nodePort端口验证nginx服务是否正常()

# 3个node节点
root@k8-deploy:~/k8s-yaml/volume# curl 192.168.2.17:30080
www.yanql.com Mon Oct 11 03:31:35 UTC 2021 root@k8-deploy:~/k8s-yaml/volume# curl 192.168.2.18:30080
www.yanql.com Mon Oct 11 03:31:35 UTC 2021 root@k8-deploy:~/k8s-yaml/volume# curl 192.168.2.19:30080
www.yanql.com Mon Oct 11 03:31:35 UTC 2021

6.动态修改configmap中配置文件,pod中挂载的配置文件会同步修改。

# 找到需要修改的configmap
root@k8-deploy:~/k8s-yaml/volume# kubectl get configmap
NAME DATA AGE
kube-root-ca.crt 1 26d
nginx-config 1 31m # 修改configmap
root@k8-deploy:~/k8s-yaml/volume# kubectl edit configmap nginx-config

configmap也可以使用create创建,使用--from-file指定配置文件的内容。

详情参考官网文档:https://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-pod-configmap/

可以以使用 kubectl create configmap 命令基于 目录、文件 或者字面值来创建 ConfigMap

kubectl create configmap <map-name> <data-source>

基于目录创建 ConfigMap

# 创建本地目录
mkdir -p configure-pod-container/configmap/ # 将实例文件下载到 `configure-pod-container/configmap/` 目录
wget https://kubernetes.io/examples/configmap/game.properties -O configure-pod-container/configmap/game.properties
wget https://kubernetes.io/examples/configmap/ui.properties -O configure-pod-container/configmap/ui.properties # 创建 configmap
kubectl create configmap game-config --from-file=configure-pod-container/configmap/

可以使用下面的命令显示 ConfigMap 的详细信息

kubectl describe configmaps game-config

基于单个文件或多个文件创建 ConfigMap

kubectl create configmap game-config-2 --from-file=configure-pod-container/configmap/game.properties

kubectl create configmap game-config-2 --from-file=configure-pod-container/configmap/game.properties --from-file=configure-pod-container/configmap/ui.properties

将configmap导出到yaml

kubectl get configmap config-multi-env-files -o yaml

定义从文件创建 ConfigMap 时要使用的键

kubectl create configmap game-config-3 --from-file=<my-key-name>=<path-to-file>

7.1 k8s使用configmapg 给pod内的程序提供配置文件的更多相关文章

  1. kubeadm搭建K8s集群及Pod初体验

    基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我 ...

  2. k8s之深入解剖Pod(一)

    上文说了一下k8s的简单使用,接下来就让我们来具体深入了解一下Pod.为了避免篇幅太长,所以会分成几篇. 目录: Pod定义详解 静态Pod Pod容器共享Volume 一.Pod定义详解 先看一个简 ...

  3. k8s之深入解剖Pod(二)

    目录: Pod配置管理:ConfigMap 容器内获取Pod信息:Downward API Pod生命周期和重启策略 Pod健康检查 一.ConfigMap 将应用所需的配置信息与程序进行分离,可以使 ...

  4. k8s之深入解剖Pod(三)

    目录: Pod的调度 Pod的扩容和缩容 Pod的滚动升级 一.Pod的调度 Pod只是容器的载体,通常需要通过RC.Deployment.DaemonSet.Job等对象来完成Pod的调度和自动控制 ...

  5. Windows下Rancher复制Pod内文件到本地

    Rancher 未提供直接获取 Pod 内文件的工具(如果有请评论告知下,蟹蟹),但提供了 Rancher 的 CLI 客户端,通过 CLI 可以调用 k8s 的 CLI (kubectl) 命令来操 ...

  6. k8s核心资源之Pod概念&入门使用讲解(三)

    目录 1. k8s核心资源之Pod 1.1 什么是Pod? 1.2 Pod如何管理多个容器? 1.3 Pod网络 1.4 Pod存储 1.5 Pod工作方式 1.5.1 自主式Pod 1.5.2 控制 ...

  7. k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方?

    k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方? 面试官:"计数性Job默认完成模式是什么?Indexed模式如何发布自定义索引呢?& ...

  8. k8s运维之pod排错

    k8s运维之pod排错 K8S是一个开源的,用于管理云平台中多个主机上的容器化应用,Kubernetes的目标是让部署容器化变得简单并且高效 K8S的核心优势: 1,基于yaml文件实现容器的自动创建 ...

  9. k8s中yaml文件pod的语法(转)

    kubernetes yaml格式的Pod配置文件 # yaml格式的pod定义文件完整内容: apiVersion: v1 #必选,版本号,例如v1 kind: Pod #必选,Pod metada ...

随机推荐

  1. Golang通脉之方法

    方法和接收者 Go语言中的方法(Method)是一种作用于特定类型变量的函数.这种特定类型变量叫做接收者(Receiver).接收者的概念就类似于其他语言中的this或者 self. Go 语言中同时 ...

  2. Hadoop MapReduce 保姆级吐血宝典,学习与面试必读此文!

    Hadoop 涉及的知识点如下图所示,本文将逐一讲解: 本文档参考了关于 Hadoop 的官网及其他众多资料整理而成,为了整洁的排版及舒适的阅读,对于模糊不清晰的图片及黑白图片进行重新绘制成了高清彩图 ...

  3. airtest常用指令

    airtest 操作adb命令   常用adb 1)对特定设备执行adb指令 dev = connect_device("Android:///device1") dev.shel ...

  4. [软软软]技术博客-Commitizen优化git commit

    工具介绍 commitizen/cz-cli是一个规范git commit的工具,使用它代替git commit能够方便有效地写好提交的log,使得团队项目的版本信息更清晰. 安装 (全局安装) np ...

  5. [对对子队]会议记录4.11(Scrum Meeting 2)

    今天已完成的工作 何瑞 ​ 工作内容:完成指令的衔接:完成合成指南界面的制作:初步实现成本系统 ​ 相关issue:实现用户指令编辑系统的逻辑 马嘉 ​ 工作内容:完成游戏内暂停界面 ​ 相关issu ...

  6. 【二食堂】Alpha - Scrum Meeting 3

    Scrum Meeting 3 例会时间:4.13 12:00 - 12:30 进度情况 组员 昨日进度 今日任务 李健 1. 继续学习前端知识,寻找一些可用的框架.issue 1. 搭建主页html ...

  7. 【二食堂】Alpha - Scrum Meeting 7

    Scrum Meeting 7 例会时间:4.17 11:40 - 12:00 进度情况 组员 昨日进度 今日任务 李健 1. 继续文本区域的开发,先完成目前简陋的添加方式,再区实现勾选功能issue ...

  8. 关于QGIS的插件开发(C++)

    关于C++插件的开发材料较少,根据网上的指导,我采用了早期版本的插件模板生成的方法来创建QGIS的插件,其方法是从以前版本(2.18.25)里面拷贝插件模板的方法进行,具体的执行步骤为 1.拷贝文件 ...

  9. POJ 1274 The Perfect Stall(二分图最大匹配)

    题意: N头牛M个牛棚,每只牛都有它自己指定的若干个它愿意呆的牛棚. 每个牛棚最多呆一头牛. 问最多可以满足多少头牛的愿望. 思路: 裸二分图最大匹配. 代码: int n,m; vector< ...

  10. nodejs:使用puppeteer在服务器中构建一个获取电影电视剧剧集的接口

    首先我们看下数据来源: 来源于这个网站:https://z1.m1907.cn/ 可以说这个网站上能找到很多你想看的很多电影或电视剧,最重要的是很多电影电视剧在别的网站是收费的,但是在这里看是免费的, ...