7.1 k8s使用configmapg 给pod内的程序提供配置文件
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内的程序提供配置文件的更多相关文章
- kubeadm搭建K8s集群及Pod初体验
基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我 ...
- k8s之深入解剖Pod(一)
上文说了一下k8s的简单使用,接下来就让我们来具体深入了解一下Pod.为了避免篇幅太长,所以会分成几篇. 目录: Pod定义详解 静态Pod Pod容器共享Volume 一.Pod定义详解 先看一个简 ...
- k8s之深入解剖Pod(二)
目录: Pod配置管理:ConfigMap 容器内获取Pod信息:Downward API Pod生命周期和重启策略 Pod健康检查 一.ConfigMap 将应用所需的配置信息与程序进行分离,可以使 ...
- k8s之深入解剖Pod(三)
目录: Pod的调度 Pod的扩容和缩容 Pod的滚动升级 一.Pod的调度 Pod只是容器的载体,通常需要通过RC.Deployment.DaemonSet.Job等对象来完成Pod的调度和自动控制 ...
- Windows下Rancher复制Pod内文件到本地
Rancher 未提供直接获取 Pod 内文件的工具(如果有请评论告知下,蟹蟹),但提供了 Rancher 的 CLI 客户端,通过 CLI 可以调用 k8s 的 CLI (kubectl) 命令来操 ...
- 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 控制 ...
- k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方?
k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方? 面试官:"计数性Job默认完成模式是什么?Indexed模式如何发布自定义索引呢?& ...
- k8s运维之pod排错
k8s运维之pod排错 K8S是一个开源的,用于管理云平台中多个主机上的容器化应用,Kubernetes的目标是让部署容器化变得简单并且高效 K8S的核心优势: 1,基于yaml文件实现容器的自动创建 ...
- k8s中yaml文件pod的语法(转)
kubernetes yaml格式的Pod配置文件 # yaml格式的pod定义文件完整内容: apiVersion: v1 #必选,版本号,例如v1 kind: Pod #必选,Pod metada ...
随机推荐
- Flask 易错点
1.With上下文管理器 常用: with open("file_name","wb") as f: f.write("hello flask&quo ...
- 微信小程序中路由跳转
一.是什么 微信小程序拥有web网页和Application共同的特征,我们的页面都不是孤立存在的,而是通过和其他页面进行交互,来共同完成系统的功能 在微信小程序中,每个页面可以看成是一个pageMo ...
- 爬虫逆向基础,理解 JavaScript 模块化编程 webpack
关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 简介 在分析一些站点的 JavaScript 代码时,比较简单的代码,函数通常都是一个一个的,例 ...
- 【UE4 C++】解析与构建 XML 数据,XmlParser 与 tinyxml
XmlParser 简单读取 XmlParser 为引擎自带模块 XML 文件 <?xml version="1.0" encoding="UTF-8"? ...
- BUAA 2020 软件工程 个人博客作业
BUAA 2020 软件工程 个人博客作业 Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 ...
- Noip模拟75 2021.10.12
T1 如何优雅的送分 他说是送分题,我就刚,没刚出来,想到莫比乌斯容斥后就都没推出来 好吧还是不能被恶心的题目,挑衅的语言打乱做题节奏 于是这一场也就没了.... $F(i)$表示$i$的不同质因子集 ...
- 2021.9.18考试总结[NOIP模拟56]
T1 爆零 贪心地想,肯定要先走完整个子树再走下一个,且要尽量晚地走深度大的叶子.所以对每个点的儿子以子树树高为关键字排序$DFS$即可. 也可$DP$. $code:$ T1 #include< ...
- 数据治理之元数据管理的利器——Atlas入门宝典
随着数字化转型的工作推进,数据治理的工作已经被越来越多的公司提上了日程.作为Hadoop生态最紧密的元数据管理与发现工具,Atlas在其中扮演着重要的位置.但是其官方文档不是很丰富,也不够详细.所以整 ...
- dhcpd:bad subnet number/mask combination. subnet
今天在调试wifi热点启动hdcpd服务时出现报错"bad subnet number/mask combination. subnet 192.168.1.1", Interne ...
- Python import Queue ImportError: No module named 'Queue'
python3 中引入Queue 会报出这个问题 python3 中这样引入 import queue python2 中这样引入 import Queue 为了兼容 可以这样 import sys ...