Kubernetes ConfigMap配置管理详解
创作时间:
作者:
@小白创作中心
Kubernetes ConfigMap配置管理详解
引用
CSDN
1.
https://m.blog.csdn.net/m0_71163619/article/details/140474512
Kubernetes中的ConfigMap是用于存储配置数据的重要组件,它允许将配置数据以键值对的形式保存,并可以将其应用到Pod中。本文将详细介绍ConfigMap的创建方式和使用方法,帮助读者更好地理解和使用这一功能。
一、ConfigMap配置中心简介
1. 官方文档
ConfigMap是API对象,用于存放明文(非机密性)数据保存到键值对中,可以使用环境变量、命令行参数或者存储卷方式应用到Pod中,ConfigMap相当于Pod中程序的配置文件,通过修改ConfigMap内容来修改程序的配置。
2. ConfigMap局限性
ConfigMap在设计上不是用来存储大量数据的,所以在ConfigMap中保存的数据不能超过1MiB。
二、创建ConfigMap的四种方式
1. 第一种:通过命令行创建ConfigMap
创建名为my.cnf
的configmap:
kubectl create configmap my.cnf --from-literal=datadir=/var/lib/mysql --from-literal=socket=/var/lib/mysql/myqsl.sock
查看configmap详细信息:
kubectl describe cm my.cnf
2. 第二种:通过指定文件创建ConfigMap
首先创建nginx.conf
文件:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
创建名为nginx.conf
的configmap:
kubectl create configmap nginx.conf --from-file=www=./nginx.conf
查看详细信息:
kubectl describe cm nginx.conf
3. 第三种:通过指定目录创建ConfigMap
首先创建config
目录,目录中创建my.cnf
配置文件:
mkdir config && cd config
vim my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d
指定config
目录创建configmap:
kubectl create cm config --from-file=/root/config/
查看详细信息:
kubectl describe cm config
4. 第四种:通过YAML资源清单创建ConfigMap
创建my.cnf
configmap:
apiVersion: v1
kind: ConfigMap
metadata:
name: my.cnf
labels:
app: db
data:
master.cnf: |
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
server-id=1
slave.cnf: |
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
server-id=2
执行YAML文件:
kubectl apply -f my.cnf.yaml
查看my.cnf
configmap详细信息:
kubectl describe cm my.cnf
三、ConfigMap三种使用方式
1. 第一种:使用环境变量引入-configMapKeyRef方式
创建名为nginx-config
的configmap:
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
labels:
app: nginx
env: uat
data:
nginx.conf: |
user nginx;
worker_processes auto;
error_log /var/log/nginx/nginx-error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
创建deployment资源:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-nginx
labels:
app: nginx
env: uat
spec:
replicas: 1
selector:
matchLabels:
app: nginx
env: uat
strategy:
rollingUpdate:
maxSurge: 2
maxUnavailable: 0
template:
metadata:
labels:
app: nginx
env: uat
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
env:
- name: nginxConfig
valueFrom:
configMapKeyRef:
name: nginx-config
key: nginx.conf
执行YAML文件:
kubectl apply -f nginx-config.yaml
kubectl apply -f web-nginx.yaml
查看创建出来的资源信息:
kubectl get pods -l app=nginx
kubectl get configmap nginx-config
进入被创建Pod中容器,查看变量信息:
kubectl exec -it web-nginx-855f8db6c5-q978b -- /bin/bash
root@web-nginx-855f8db6c5-q978b:/# printenv
2. 第二种:使用环境变量-envfrom方式
创建名为my.cnf
的configmap:
apiVersion: v1
kind: ConfigMap
metadata:
name: my.cnf
data:
master.cnf: |
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
server-id=1
slave.cnf: |
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
server-id=2
创建Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: envfrom-demo
namespace: default
spec:
replicas: 1
selector:
matchLabels:
name: envfrom-demo
template:
metadata:
labels:
name: envfrom-demo
spec:
containers:
- name: envfrom-demo
image: busybox:1.28.0
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c", "sleep 360000"]
envFrom:
- configMapRef:
name: my.cnf
执行YAML文件:
kubectl apply -f my.cnf.yaml
kubectl apply -f envfrom_demo.yaml
查看创建出来的资源信息:
kubectl get pods -l name=envfrom-demo
kubectl get configmap my.cnf
进入容器查看变量信息:
kubectl exec -it envfrom-demo-6ddc9dc44-tph42 -- /bin/sh
/ # printenv
3. 第三种:使用volume卷挂载
创建名为web
的configmap:
apiVersion: v1
kind: ConfigMap
metadata:
name: web
data:
nginx_8080.conf: |
server {
listen 8080;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
nginx_9090.conf: |
server {
listen 9090;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
使用nginx镜像,创建Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-nginx
spec:
replicas: 1
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
volumes:
- name: web-config
configMap:
name: web
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
volumeMounts:
- name: web-config
mountPath: /etc/nginx/conf.d/nginx_9090.conf
subPath: nginx_9090.conf
执行YAML资源清单:
kubectl apply -f web-config.yaml
kubectl apply -f web.yaml
配置文件端口改为9090,请求Nginx的9090端口:
kubectl get pod -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web-nginx-596bdbd7bd-4z8tm 1/1 Running 0 109m 10.244.1.43 k8s-node2 <none> <none>
curl 10.244.1.43:9090
通过9090端口访问到nginx。
热门推荐
因纽特人玩具多样性助力生存,挪威人玩具僵化致消失
微信隐私保护这样做:官方政策+实用技巧详解
从个人到企业:全方位保护微信聊天记录安全
阑尾麦氏点的位置在哪里
昆明美食与景点完美结合,打卡网红地
清华大学校训校徽解读:从梁启超演讲到文化符号

大同至新疆自驾攻略:草原丹崖、丝路古迹全览
上海治疗甲状腺结节:三家医院多科室专家推荐
济南厨房清洁省钱小妙招,主妇们必看!
雷内·格鲁瓦:定义时尚与动漫插画的传奇艺术家
插画让书籍设计更吸睛
借记卡管理不当会伤信用,5个实用建议助你规避风险
从存取到理财:借记卡的四大理财优势与实用技巧
团队拓展训练,让你的团队更强大!
健康生活加疫苗接种,双重防护远离带状疱疹
五种关键营养素助力,饮食调理预防带状疱疹
Shingrix疫苗长期保护力超79%,专家推荐50岁以上人群接种
昆明冬季打卡胜地:翠湖&老街银杏巴士
昆明市区必打卡三大网红景点揭秘
昆明四大历史文化景点:翠湖、金马碧鸡坊、大观楼、圆通寺
昆明最佳旅游季节揭秘:春夏秋冬各有精彩
GPS导航:现代人出行不可或缺的智能助手
科学家破解蝗虫跳跃之谜,开发出仿生跳跃机器人
参松养心胶囊 vs 射频消融术:房颤治疗的两大利器
湖南省第二人民医院推荐:心律失常患者的心理调适指南
早餐面包这样选,远离呕吐风险!
早餐吃面包后呕吐?可能是焦虑惹的祸
北碚军用铸钢井盖:提升城市基础设施的安全与可靠性
水利工程的施工技术与方法
一个万能炖肉方子,酸甜鲜香巨下饭!0门槛,谁做都好吃!