k8s mysql 单点部署

参考官网:https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/

20-nproc.conf

*          soft    nproc     unlimited
root       soft    nproc     unlimited


limits.conf

# End of file
*    soft    core    0
*    hard    core    0
*    soft    nofile        655360
*    hard    nofile        655360

 

senyint.conf

[root@harbor mysql5.7.20]# cat  senyint.cnf
[mysqld]
server-id = 11 
port = 3306
user = mysql
autocommit = 1
character_set_server=utf8mb4
skip_name_resolve = 1
max_connections = 3000
max_connect_errors = 1000
transaction_isolation = READ-COMMITTED
join_buffer_size = 128M
tmp_table_size = 64M
tmpdir = /tmp
max_allowed_packet = 64M
interactive_timeout = 1200
wait_timeout = 600
read_buffer_size = 16M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
explicit_defaults_for_timestamp=true

 

Dockerfile

[root@harbor mysql5.7.20]# cat Dockerfile 
FROM docker.io/mysql:5.7.20

MAINTAINER fengjian <fengjian@senyint.com>
ENV TZ "Asia/Shanghai"
ENV TERM xterm
ENV MALLOC_ARENA_MAX=1

ADD localtime  /etc/
ADD 20-nproc.conf /etc/security/limits.d/
ADD limits.conf /etc/security/
ADD senyint.cnf /etc/mysql/mysql.conf.d/
ADD senyint.cnf /etc/mysql/conf.d/
#RUN rm /var/lib/mysql/lost+found -rf

 

 docker build -t 192.168.200.10/source/mysql:5.7.20 .
 docker push 192.168.200.10/source/mysql:5.7.20

部署到k8s中

[root@master1 mysql]# cat mysql-secret.yaml 
apiVersion: v1
kind: Secret
metadata:
  name: mysql-secrets
  namespace: prodpay
#type: Opaque
data:
  root-password: QWJjZCwxMj222M0



[root@master1 mysql]# cat mysql_pvc.yaml 
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  namespace: prodpay
  name: mysql-pvc
spec:
  storageClassName: ceph-rbd-dalianpay
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi

 

[root@master1 mysql]# cat mysql.yaml 
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: mysql
  namespace: prodpay
spec:
  selector:
    matchLabels:
      app: mysql
  replicas: 1
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: 192.168.200.10/source/mysql:5.7.20
        imagePullPolicy: Always
        name: mysql
        #command: ["rm","-rf","/var/lib/mysql/lost+found"]
        ports:
        - containerPort: 3306
        resources:
          requests:
            cpu: 4
            memory: 4Gi
          limits:
            cpu: 8
            memory: 8Gi
        env:
          - name: MYSQL_ROOT_PASSWORD
            valueFrom:
              secretKeyRef:
                name: mysql-secrets
                key: root-password
        volumeMounts:
        - mountPath: /var/lib/mysql
          subPath: mysql   #如果不加subpath,那么就会报[ERROR] --initialize specified but the data directory has files in it. Aborting.目录不为空,使用subpath基础表信息会记录在/var/lib/mysql/mysql下
          name: data
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: mysql-pvc

---
apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: prodpay
spec:
  ports:
  - name: mqsql
    port: 3306
    targetPort: 3306
  selector:
    app: mysq

 



 

posted @ 2018-10-25 18:06  fengjian1585  阅读(957)  评论(0编辑  收藏  举报