一.简单说明

我们在运行一个mysql服务时,mysql服务有两类重要的数据,一个是存储的数据、另一个是存储的配置文件。存储数据这里我们可以使用挂载PVC来实现持久化存储,配置文件这里我们如果实现和容器的解耦,可以采用configmap来实现。

二.ConfigMap介绍

2.1 ConfigMap作用和使用场景

  • ConfigMap用于保存配置数据,以键值对的形式存储
  • ConfigMap资源提供了向Pod注入配置数据的方法
  • ConfigMap旨在让镜像与配置文件解耦,以实现镜像的可移植性和可复用性。
  • 填充环境变量的值
  • 填充卷的配置文件

2.2 ConfigMap的创建

这里有以下几种创建方式:

  • 使用字面值创建
    kubectl create configmap my-configmap --from-literal=key1=1 --from-literal=key2=2
    [root@k8s001 ~]# kubectl get cm my-configmap -o yaml
    apiVersion: v1
    data:
    key1: "1"
    key2: "2"
    kind: ConfigMap
    metadata:
    creationTimestamp: "2020-08-11T03:54:00Z"
    name: my-configmap
    namespace: default
    resourceVersion: "4745970"
    selfLink: /api/v1/namespaces/default/configmaps/my-configmap
    uid: 4a277575-db86-11ea-bb5f-6c4b9005d934
  • 使用文件创建
    [root@k8s001 ~]# cat configmap-file
    10.10.2.2 k8s001
    [root@k8s001 ~]# kubectl create cm my-configmap-file --from-file=configmap-file
    configmap/my-configmap-file created
    [root@k8s001 ~]# kubectl get cm my-configmap-file -o yaml
    apiVersion: v1
    data:
    configmap-file: |
    10.10.2.2 k8s001
    kind: ConfigMap
    metadata:
    creationTimestamp: "2020-08-11T03:58:23Z"
    name: my-configmap-file
    namespace: default
    resourceVersion: "4747102"
    selfLink: /api/v1/namespaces/default/configmaps/my-configmap-file
    uid: e6c966b8-db86-11ea-bb5f-6c4b9005d934
  • 使用目录创建
    [root@k8s001 ~]# mkdir configmap-dir
    [root@k8s001 ~]# cp configmap-file ./configmap-dir/
    [root@k8s001 ~]# kubectl create cm myconfigmap-dir --from-file=configmap-dir
    configmap/myconfigmap-dir created
    [root@k8s001 ~]# kubectl get cm myconfigmap-dir -o yaml
    apiVersion: v1
    data:
    configmap-file: |
    10.10.2.2 k8s001
    kind: ConfigMap
    metadata:
    creationTimestamp: "2020-08-11T04:01:51Z"
    name: myconfigmap-dir
    namespace: default
    resourceVersion: "4748006"
    selfLink: /api/v1/namespaces/default/configmaps/myconfigmap-dir
    uid: 62fde3bb-db87-11ea-ab20-6c4b9005ca34
  • 编写ConfigMap的yaml文件来创建
    [root@k8s001 ~]# cat configmap_mysql.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
    name: mysql-config
    namespace: business
    data:
    mysqld.cnf: |-
    [mysqld]
    pid-file = /var/run/mysqld/mysqld.pid
    socket = /var/run/mysqld/mysqld.sock
    datadir = /var/lib/mysql
    symbolic-links = 0
    max_allowed_packet = 50M
    character_set_server = utf8
    collation_server = utf8_general_ci
    group_concat_max_len = 102400
    [client]
    default_character_set = utf8

2.3 如何使用ConfigMap

  • 可以通过环境变量的形式直接传递给Pod
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: wf-mysql
spec:
containers:
- image: mysql:5.7
imagePullPolicy: IfNotPresent
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
configMapKeyRef:
name: mysql-credentials
key: rootpw
- name: MYSQL_USER
valueFrom:
configMapKeyRef:
name: mysql-credentials
key: user
- name: MYSQL_PASSWORD
valueFrom:
configMapKeyRef:
name: mysql-credentials
key: password
  • 通过在Pod的命令行下运行命令方式
[k8s001 ~]# cat busybox.yaml
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: wf-mysql
spec:
containers:
- image: busybox
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c", "echo ${test_env}"]
name: busybox
envFrom:
- configMapRef:
name: configmap-test
restartPolicy: Always
  • 作为volume的方式挂载到Pod内
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: wf-mysql
spec:
containers:
- image: mysql:5.7
imagePullPolicy: IfNotPresent
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-credentials
key: rootpw
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: mysql-credentials
key: user
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-credentials
key: password ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: config-volume
mountPath: /etc/mysql/mysql.conf.d
volumes:
- name: config-volume
configMap:
name: mysql-config

kubernetes之配置mysql的configmap的更多相关文章

  1. Kubernetes(k8s)配置文件管理:ConfigMap

    目录 一.系统环境 二.前言 三.ConfigMap概览 四.创建ConfigMap 五.ConfigMap的使用 5.1 以环境变量的方式使用ConfigMap 5.2 以卷的方式使用ConfigM ...

  2. Kubernetes 实战——配置应用(ConfigMap、Secret)

    配置容器化应用的方式:①命令行参数:②环境变量:③文件化配置 一.向容器传递命令行参数或环境变量 这两种方式在 Pod 创建后不可被修改 1. 在Docker中定义命令与参数 ENTRYPOINT:容 ...

  3. (转)Kubernetes部署WordPress+MySQL

    转:http://www.showerlee.com/archives/2336 这部分我们结合之前的k8s知识点给大家展示如何使用kubernetes部署wordpress+MySQL, 并利用NF ...

  4. kubernetes实战-配置中心(二)交付apollo配置中心到k8s

    apollo官网:官方地址 apollo架构图: apollo需要使用数据库,这里使用mysql,注意版本需要在5.6以上: 本次环境mysql部署在10.4.7.11上,使用mariadb:10.1 ...

  5. Ubuntu安装Wildfly(原JBoss)并为其配置MySQL分布式数据源

    注:JBoss在8.0版本后改名为WildFly,以JBoss命名的版本最高为7.1.1.Final,但JBoss7.1.1.Final不支持jdk1.8以上版本,如果在jdk1.8情况下安装JBos ...

  6. windows下安装并配置mysql

    前言:前面三篇文章将django的环境搭建完后,还只能编写静态网页,如果要用到数据库编写动态网页,那么还需要数据库 本章讲解mysql5.6数据库的安装和配置,对于其他版本仅供参考,不一定试用!推荐使 ...

  7. CentOS 7.2 安装配置mysql主从服务器

    MySQL官方压缩包安装: 1:下载mysql官方版本,此处以目前最新版本5.7.14为例,下载的64位版本文件为: mysql-5.7.14-linux-glibc2.5-x86_64.tar 2: ...

  8. OS 系统下安装MySql 配置MySql环境变量

    学习Hive需要,闲话不说 本文的内容: 下载Mysql for Mac 下载Mysql Workbench 安装 Mysql 和 Mysql Workbench 配置Mysql在OS 系统上的环境变 ...

  9. 配置MySQL数据库

    一.配置MySQL数据库 1.解压绿色版mysql,如下图 二.安装服务 1.运行cmd(管理员版本,否则没有权限),如下图 2.运行命令mysqld –install安装服务,如下图: 如果不需要m ...

  10. linux下配置mysql默认编码utf8

    linux下配置mysql默认编码utf8 下面是需要在对应地方加入的配置 [client] default-character-set=utf8 [mysqld] character-set-ser ...

随机推荐

  1. vue watch监听路由变化

    vue watch监听路由变化 // 监听 this.$route.path // watch监听非DOM元素的改变 watch:{ '$route.path':function(to,from){ ...

  2. mysql查询指定表所有的字段信息 columns

    show columns from 表名: desc 表名;(全写:describe 表名) show create table 表名;

  3. MFC非模态对话框的关闭

    如果要在点击按钮的情况下,销毁非模态对话框,只需要把按钮的事件映射到OnCancel函数, 里面调用DestroyWindow(), 然后重写PostNCDestroy(), delete 指针. 另 ...

  4. PLSQL定时任务创建 Oracle数据库dbms_job

    创建一个job job创建 begin sys.dbms_job.submit(job => 1, --代表的是号码,第几个定时任务 what => 'sys_mailing_list_j ...

  5. Delphi 判断当前系统是否64位

    uses Winapi.Windows; function IsWin64: Boolean; var IsWow64Process: function(Handle: THandle; var Re ...

  6. 一文彻底拿下HarmonyOS NEXT开发实战调试技巧

    > 程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java.嵌入式.鸿蒙.人工智能等,专注于程序员成长那点儿事,希望在成长的路上有你相伴!君志所向,一往无前! --- # 1. ...

  7. Hack The Box-Chemistry靶机渗透

    通过信息收集访问5000端口,cif历史cve漏洞反弹shell,获取数据库,利用低权限用户登录,监听端口,开放8080端口,aihttp服务漏洞文件包含,获取root密码hash值,ssh指定登录 ...

  8. Wolfram常用计算

    1.方程与方程组 例1:求解方程 参考表达式: solve x^3 + 2x^2 - 6x + 5 = 0 real 求解所有根 例2:求解方程: 参考表达式: solve ax^2+bx+c=0 注 ...

  9. Go操作MySQL总结

    1.下载驱动包 打开GoLand->Terminal,输入:go get github.com/go-sql-driver/mysql 2.编写代码 package mainimport ( & ...

  10. MySQL 的 Doublewrite Buffer 是什么?它有什么作用?

    MySQL 的 Doublewrite Buffer 是什么?它有什么作用? Doublewrite Buffer 是 InnoDB 存储引擎的一种机制,旨在提高数据的安全性,防止在写入磁盘时发生崩溃 ...