Kubernetes配置管理
以下是对提供的Kubernetes配置文件的详细解析,涵盖核心配置管理特性:
1. ConfigMap挂载方式
基础挂载 (
dapi-test1-pod.yaml
)volumes:- name: config-volumeconfigMap:name: spec-config02 # 整个ConfigMap挂载到/etc/conf
所有键值对作为文件挂载到目录,文件名=键名
指定键挂载 (
dapi-test2-pod.yaml
items:- key: app1.confpath: app1.cfg # 重命名文件- key: app2.confpath: app2.cfg
选择性挂载特定键并自定义文件名
权限控制 (
dapi-test3-pod.yaml
)items:- key: app1.confpath: app1.cfgmode: 0644 # 文件权限 defaultMode: 0666 # 卷默认权限
单文件挂载 (
dapi-test4-pod.yaml
)volumeMounts:- name: nginx-configmountPath: /etc/nginx/nginx.confsubPath: nginx.conf # 关键:避免覆盖目录
2. Secret管理
Secret定义 (
db-user-secret.yaml
)data:username: YWRtaW4= # admin (base64)password: bXlwYXNzd29yZA== # mypassword
Secret挂载 (
secret-pod.yaml
)volumes:- name: foosecret:secretName: mysecret # 自动生成username/password文件
3. 环境变量注入
批量注入 (
env-envfrom.yaml
)envFrom:- configMapRef:name: spec-config-2 # 整个ConfigMap转为环境变量
选择性注入 (
env-valuefrom.yaml
)env:- name: my-name01valueFrom:configMapKeyRef:key: name1 # 仅注入特定键name: spec-config-2
4. 高级应用示例 (zabbix-mysql.yaml
)
核心组件:
命名空间隔离
apiVersion: v1 kind: Namespace metadata:name: zabbix
ConfigMap配置
configMap:name: mysql-config # MySQL配置挂载
存储管理
persistentVolumeClaim:claimName: mysql-pvc # 持久化存储
健康检查
livenessProbe:exec:command: ["mysqladmin", "-uroot", "-p${MYSQL_ROOT_PASSWORD}", "ping"]
服务暴露
ports:- nodePort: 30336 # NodePort访问
5. 辅助脚本
镜像导出 (
exp_docker_img.sh
)docker save $IMAGE -o ${DIR}/${SAVE_NAME}.tar
将镜像转换为
<仓库>_<标签>.tar
格式
镜像导入 (
imp_docker_img.sh
)docker load -i ${IMAGE_DIR}/${IMAGE}
关键配置技巧总结
ConfigMap/Secret挂载
使用
subPath
避免覆盖目录通过
items
精细化控制文件生成设置
mode
控制文件权限
环境变量注入
envFrom
批量注入整个配置集valueFrom
按需注入特定配置项
生产级部署要素
命名空间隔离环境
ConfigMap管理服务配置
PersistentVolume持久化数据
Liveness/Readiness探针保障可用性
Secret管理敏感凭证
镜像迁移
使用脚本批量导出/导入镜像
适应离线环境部署需求