1、部署MySQL,将数据存储在OpenEBS Jiva卷上;
root@k8s-master01:~kubectl apply -f https://openebs.github.io/charts/openebs-operator.yaml
ctr -n k8s.io image import sig-storage.tar
sudo apt-get update
sudo apt-get install open-iscsi
sudo systemctl enable --now iscsid
root@k8s-master01:~kubectl apply -f https://openebs.github.io/charts/jiva-operator.yaml
root@k8s-master01:~/wordpress
apiVersion: openebs.io/v1alpha1
kind: JivaVolumePolicy
metadata:
name: jivavolumepolicy-mysql
namespace: openebs
spec:
replicaSC: openebs-hostpath
target:
replicationFactor: 2
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-jiva-csi-mysql
provisioner: jiva.csi.openebs.io
allowVolumeExpansion: true
parameters:
cas-type: "jiva"
policy: "jivavolumepolicy-mysql"
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: openebs-jiva-csi-pvc-mysql
spec:
storageClassName: openebs-jiva-csi-mysql
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: mysql
name: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: mysql
spec:
containers:
- image: mysql:8.0
name: mysql
volumeMounts:
- mountPath: /var/lib/mysql
name: local-storage
env:
- name: MYSQL_RANDOM_ROOT_PASSWORD
value: '1'
- name: MYSQL_DATABASE
value: 'wordpress'
- name: MYSQL_USER
value: 'wpuser'
- name: MYSQL_PASSWORD
value: '123456'
resources:
requests:
memory: "64Mi"
cpu: "200m"
limits:
memory: "512Mi"
cpu: "1"
volumes:
- name: local-storage
persistentVolumeClaim:
claimName: openebs-jiva-csi-pvc-mysql
status: {}
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
NAME READY STATUS RESTARTS AGE
mysql-jiva-6c7dd7f9dd-kzmjg 1/1 Running 0 138m
2、部署Wordpress,将数据存储在nfs-csi卷上;
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-csi
annotations:
storageclass.kubernetes.io/is-defalut: "true"
provisioner: nfs.csi.k8s.io
parameters:
server: nfs-server.nfs.svc.cluster.local
share: /
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- nfsvers=4.1
root@k8s-master01:~/wordpress
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wordpress-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
storageClassName: nfs-csi
root@k8s-master01:~/wordpress
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: wordpress
name: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: wordpress
spec:
containers:
- image: wordpress:5.7
name: wordpress
volumeMounts:
- name: wordpressdata
mountPath: /var
env:
- name: WORDPRESS_DB_HOST
value: '10.244.1.45'
- name: WORDPRESS_DB_NAME
value: 'wordpress'
- name: WORDPRESS_DB_USER
value: 'wpuser'
- name: WORDPRESS_DB_PASSWORD
value: '123456'
volumes:
- name: wordpressdata
persistentVolumeClaim:
claimName: wordpress-pvc
status: {}
root@k8s-master01:~/wordpress
NAME READY STATUS RESTARTS AGE
mysql-jiva-6c7dd7f9dd-kzmjg 1/1 Running 0 162m
wordpress-nfs-5f4dcd9f7c-j2wvq 1/1 Running 0 46s
3、使用Secret配置MySQL,提供几个敏感数据;同时使用ConfigMap为MySQL提供配置文件,设定使用UTF8字符集,并且每表使用单独表空间;
innodb_file_per_table = ON
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
apiVersion: v1
kind: Pod
metadata:
name: mysql
spec:
containers:
- name: mysql
image: mysql:8.0
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: root.pass
optional: false
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: mysql-secret
key: db.name
optional: false
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: mysql-secret
key: wp.user
optional: false
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: wp.pass
optional: false
- name: CHARACTER
valueFrom:
configMapKeyRef:
name: mysql-cfg
key: character_set_server
optional: false
- name: innodb_file_per_table
valueFrom:
configMapKeyRef:
name: mysql-cfg
key: innodb_file_per_table
optional: false
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: wordpress
name: wordpress-cm
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: wordpress
spec:
containers:
- image: wordpress:5.7
name: wordpress-cm
livenessProbe:
tcpSocket:
port: 80
initialDelaySeconds: 5
periodSeconds: 5
readinessProbe:
httpGet:
path: '/'
port: 80
scheme: HTTP
initialDelaySeconds: 15
timeoutSeconds: 2
periodSeconds: 5
failureThreshold: 3
env:
- name: WORDPRESS_DB_HOST
value: '10.244.3.12'
- name: WORDPRESS_DB_NAME
valueFrom:
secretKeyRef:
name: mysql-secret
key: db.name
optional: false
- name: WORDPRESS_DB_USER
valueFrom:
secretKeyRef:
name: mysql-secret
key: wp.user
optional: false
- name: WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: wp.pass
optional: false
resources:
requests:
memory: "90Mi"
cpu: "1"
limits:
memory: "300Mi"
cpu: "1"
status: {}
root@k8s-master01:~/wordpress
root@k8s-master01:~/wordpress
NAME READY STATUS RESTARTS AGE
mysql 1/1 Running 0 24h
mysql-7c47d655ff-ts44b 1/1 Running 0 3d2h
mysql-jiva-6c7dd7f9dd-kzmjg 1/1 Running 0 4h38m
redis-with-openebs-local-hostpath 1/1 Running 0 4d2h
wordpress-5f4dcd9f7c-6gxw8 1/1 Running 0 2d2h
wordpress-cm-57fc474c87-sqmth 1/1 Running 0 19m
wordpress-nfs-5f4dcd9f7c-j2wvq 1/1 Running 0 116m
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
评论(0)