kubernetes部署mysql8
虽然很多文章说不建议将数据库部署在容器中,因为有性能问题。但我觉得这事还是要看具体使用场景来决定,而不是全盘否定。开发的过程中并不只有性能是最重要的,还有效率,易用性等也很重要。
对于测试环境来说,数据库部署在容器中肯定是可以的。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mysql
name: mysql
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: mysql
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
labels:
app: mysql
spec:
containers:
- env:
- name: MYSQL_ROOT_PASSWORD
value: xxx
image: mysql:8.0.33
imagePullPolicy: IfNotPresent
name: mysql
ports:
- containerPort: 3306
name: mysql
protocol: TCP
resources:
limits:
cpu: "4"
memory: 8Gi
volumeMounts:
- mountPath: /var/lib/mysql
name: data
- mountPath: /etc/mysql/conf.d/
name: mysql-config
volumes:
- name: data
persistentVolumeClaim:
claimName: mysql
- configMap:
defaultMode: 420
name: mysql-config
name: mysql-config
---
apiVersion: v1
kind: ConfigMap
data:
my.cnf: |-
[client]
default-character-set = utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation_server=utf8mb4_unicode_ci
gtid_mode=ON
enforce_gtid_consistency=ON
lower_case_table_names=1
open_files_limit=65535
slow_query_log = ON
long_query_time = 2
max_heap_table_size = 32M
tmp_table_size = 2M
log-bin = mysql-bin
binlog_cache_size = 32K
max_binlog_cache_size = 1G
max_binlog_size = 1G
binlog-format = ROW
sync_binlog = 1
log-slave-updates = 1
expire_logs_days = 7
default-time_zone = +8:00
max_connect_errors = 65535
max_allowed_packet = 536870912
max_connections = 5120
innodb_buffer_pool_instances = 1
innodb_buffer_pool_size = 6442450944
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:15G
server_id = 100
metadata:
name: mysql-config