kubernetes-yaml/examples/mysql/mysql-8-single.yaml

221 lines
5.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# 创建 Namespace
apiVersion: v1
kind: Namespace
metadata:
name: hty1024-db
---
# 创建 StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: storage-local-mysql
labels:
app.k8s.hty1024.com/env: prod
app.k8s.hty1024.com/type: db
app.k8s.hty1024.com/name: mysql
app.k8s.hty1024.com/version: 8.0.37
app.k8s.hty1024.com/resources: storageClass
provisioner: kubernetes.io/no-provisioner
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
---
# 创建 PersistentVolume
apiVersion: v1
kind: PersistentVolume
metadata:
name: hty1024-db-mysql-pv
labels:
app.k8s.hty1024.com/env: prod
app.k8s.hty1024.com/type: db
app.k8s.hty1024.com/name: mysql
app.k8s.hty1024.com/version: 8.0.37
app.k8s.hty1024.com/resources: persistentVolume
spec:
capacity:
storage: 100Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: storage-local-mysql
local:
path: /app/mysql/data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: node.k8s.hty1024.com/type
operator: In
values:
- app
---
# 创建 PersistentVolumeClaim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: hty1024-db-mysql-pvc
namespace: hty1024-db
labels:
app.k8s.hty1024.com/env: prod
app.k8s.hty1024.com/type: db
app.k8s.hty1024.com/name: mysql
app.k8s.hty1024.com/version: 8.0.37
app.k8s.hty1024.com/resources: persistentVolumeClaim
spec:
resources:
requests:
storage: 100Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
storageClassName: storage-local-mysql
---
# 创建 ConfigMap自定义 my.cnf 文件)
apiVersion: v1
kind: ConfigMap
metadata:
name: hty1024-db-mysql-cm
namespace: hty1024-db
labels:
app.k8s.hty1024.com/env: prod
app.k8s.hty1024.com/type: db
app.k8s.hty1024.com/name: mysql
app.k8s.hty1024.com/version: 8.0.37
app.k8s.hty1024.com/resources: configMap
data:
my.cnf: |
[mysqld]
max_connections = 1000
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
---
# 创建 Secret自定义 MySQL 用户密码)
apiVersion: v1
kind: Secret
metadata:
name: hty1024-db-mysql-secret
namespace: hty1024-db
labels:
app.k8s.hty1024.com/env: prod
app.k8s.hty1024.com/type: db
app.k8s.hty1024.com/name: mysql
app.k8s.hty1024.com/version: 8.0.37
app.k8s.hty1024.com/resources: secret
type: Opaque
stringData:
root.key: |
12345678
immutable: true
---
# 创建 Service
apiVersion: v1
kind: Service
metadata:
name: hty1024-db-mysql-service
namespace: hty1024-db
labels:
app.k8s.hty1024.com/env: prod
app.k8s.hty1024.com/type: db
app.k8s.hty1024.com/name: mysql
app.k8s.hty1024.com/version: 8.0.37
app.k8s.hty1024.com/resources: service
spec:
type: ClusterIP
ports:
- port: 3306
targetPort: 3306
selector:
app.k8s.hty1024.com/env: prod
app.k8s.hty1024.com/type: db
app.k8s.hty1024.com/name: mysql
app.k8s.hty1024.com/version: 8.0.37
app.k8s.hty1024.com/resources: pod
---
# 创建 StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: hty1024-db-mysql-statefulset
namespace: hty1024-db
labels:
app.k8s.hty1024.com/env: prod
app.k8s.hty1024.com/type: db
app.k8s.hty1024.com/name: mysql
app.k8s.hty1024.com/version: 8.0.37
app.k8s.hty1024.com/resources: statefulSet
spec:
replicas: 1
minReadySeconds: 30
selector:
matchLabels:
app.k8s.hty1024.com/env: prod
app.k8s.hty1024.com/type: db
app.k8s.hty1024.com/name: mysql
app.k8s.hty1024.com/version: 8.0.37
app.k8s.hty1024.com/resources: pod
template:
metadata:
labels:
app.k8s.hty1024.com/env: prod
app.k8s.hty1024.com/type: db
app.k8s.hty1024.com/name: mysql
app.k8s.hty1024.com/version: 8.0.37
app.k8s.hty1024.com/resources: pod
spec:
terminationGracePeriodSeconds: 60
volumes:
- name: localtime
hostPath:
path: /etc/localtime
- name: hty1024-db-mysql-data
persistentVolumeClaim:
claimName: hty1024-db-mysql-pvc
- name: hty1024-db-mysql-conf
configMap:
name: hty1024-db-mysql-cm
items:
- key: my.cnf
path: my.cnf
- name: hty1024-db-mysql-pwd
secret:
secretName: hty1024-db-mysql-secret
containers:
- name: mysql
image: mysql:8.0.37
ports:
- name: tcp
containerPort: 3306
volumeMounts:
- name: localtime
mountPath: /etc/localtime
readOnly: true
- name: hty1024-db-mysql-data
mountPath: /var/lib/mysql
- name: hty1024-db-mysql-conf
mountPath: /etc/mysql/conf.d/
- name: hty1024-db-mysql-pwd
mountPath: /tmp/secret-volume
readOnly: true
env:
- name: MYSQL_ROOT_PASSWORD_FILE
value: "/tmp/secret-volume/root.key"
nodeSelector:
node.k8s.hty1024.com/type: app