k8s利用jobs完成對mysql資料庫的修改插入

2021-09-05 13:00:19 字數 1803 閱讀 9935

需要對乙個k8s上mysql資料庫修改插入資料,sql語句經常會變動。

可以建議使用jobs和configmap的方式完成。

from centos7-jdk8

copy init.sh /opt/

copy mysql-community-client-5.7.23-1.el7.x86_64.rpm /opt/

run rpm -ivh /opt/mysql-community-client-5.7.23-1.el7.x86_64.rpm --nodeps --force

run mkdir /opt/sql

run chmod +x /opt

workdir /opt

init.sh指令碼:

#!/bin/bash

#execute all script in specified directory

mydate=`date +%f'-'%t'-'%w`

mysql_path=/opt/sql/common #指定的目錄

mysql -h127.0.0.1 -uroot -p12345#lc < /opt/sql/init.sql

for file in $/*

doif [ -f "$file" ] ; then

postfix=`echo $file | awk -f'.' ''`

if [ $postfix = ".sql" ] ; then

mysql -h127.0.0.1 -uroot -p12345 < $file

fifidone

apiversion: batch/v1

kind: job

metadata:

name: mysqlinit

spec:

template:

metadata:

labels:

job-name: mysqlinit

spec:

containers:

- name: mysqlinit1

image: mysql-init:1.0.0

command: ["sh", "init.sh"]

env:

- name: mysql_root_password

valuefrom:

configmapkeyref:

name: allsmart-config

key: mysql_root_password

volumemounts:

- name: init-config

mountpath: /opt/sql

volumes:

- name: init-config

configmap:

name: allsmart-config

items:

- key: cloud.sql

path: common/cloud.sql

- key: config.sql

path: common/config.sql

restartpolicy: never

執行jobs,即可完成對mysql 的修改插入。

原理:所有的sql檔案,如cloud.sql都是通過configmap掛載的,指令碼會遍歷目錄common下的所有sql檔案執行,後續需要修改的話,直接修改configmap即可。

需要新增sql也只需要修改jobs的yaml檔案。

可以參照此方法完成k8s上資料庫的插入部署。

K8s部署prometheus監控K8s細節

prometheus 一些配置檔案可以再github上找到。部署 root kube prometheus manifests 目錄下所有檔案 部署 root kube prometheus manifests setup 目錄下所有檔案 要注意的是自己要建立乙個工作空間 如果報錯執行下面語句 部署...

k8s 多租戶 k8s 基礎介紹

備註 1 每乙個pod裡執行著乙個特殊的容器 pause容器,其他容器都是業務容器,這些業務容器共享pause容器的網路棧和volume 邏輯卷 掛載卷。因此他們之間的通訊和資料交換更為高效。2 k8s設計了pod物件,將每個服務程序包裝到相應的pod中,使其成為pod中執行的乙個容器 contai...

EFK完成k8s應用日誌收集

方案選擇 kubernetes官方提供了efk的日誌收集解決方案,但是這種方案並不適合所有的業務場景,它本身就有一些侷限性,例如 所有日誌都必須是out前台輸出,真實業務場景中無法保證所有日誌都在前台輸出 只能有乙個日誌輸出檔案,而真實業務場景中往往有多個日誌輸出檔案 fluentd並不是常用的日誌...