项目实战篇【kubernetes】八 kubernetes ConfigMap


接着上一篇的内容,我们已经部署了mysql服务,思考一个问题,当我们想修改配置文件如何修改?本节引入ConfigMap,ConfigMap顾名思义,是用于保存配置数据的键值对,可以用来保存单个属性,也可以保存配置文件。Secret可以为Pod提供密码、Token、私钥等敏感数据;对于一些非敏感数据,比如应用的配置信息,则可以使用ConfigMap。

1、使用ConfigMap配置mysql

创建mysql-svc.yml配置文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-open-config
data: 
  #这里是键值对数据
  mysqld.cnf: |
    [client]
    port=3306
    [mysql]
    no-auto-rehash
    [mysqld]
    skip-host-cache
    skip-name-resolve
    default-authentication-plugin=mysql_native_password
    character-set-server=utf8mb4
    collation-server=utf8mb4_general_ci
    explicit_defaults_for_timestamp=true
    lower_case_table_names=1
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mysql-open
spec:
  replicas: 1
  template:
    metadata:
      labels: 
        name: mysql-open
    spec:
      containers: 
        - name: mysql-open
          image: mysql:8.0.18
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 3306
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "root"
		  #容器中的挂载目录
          volumeMounts:
            - name: cm-vol-open
              mountPath: /etc/mysql/conf.d
            - name: nfs-vol-open
              mountPath: /var/lib/mysql
      volumes: 
	   #挂载到数据卷
        - name: cm-vol-open
          configMap:
            name: mysql-open-config
            items:
		    #configmap中的key
              - key: mysqld.cnf
            #configmap key中匹配的value 写入名为mysqld.cnf 的文件中
                path: mysqld.cnf
        - name: nfs-vol-open
          persistentVolumeClaim:
            claimName: nfs-pvc-mysql-open
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-open
spec: 
  ports:
    - port: 3306
	  targetPort: 3306
  type: LoadBalancer
  selector:
    name: mysql-open

如果之前部署了mysql数据卷挂载,需要删除之前的数据文件,然后启动mysql服务

[root@yn100-22 service]# kubectl get cm
NAME                DATA   AGE
mysql-open-config   1      3m8s
[root@yn100-22 service]# kubectl describe  cm mysql-open-config

使用数据库连接工具连接mysql,使用命令kubectl get svc查看mysql的端口,此时mysql已能正常使用。

posted @ 2020-07-14 16:55  kevin_ying  阅读(418)  评论(0编辑  收藏  举报
//系列教程