目录
1、部署openebs(Elastic Block Store)
1.下载镜像(针对k8s1.19)
2.加载镜像(所有节点包括master)
3.下载yaml文件并部署
4.设置默认storageclass
2、编写相关yaml文件
1.编写secret
2.编写statefulset文件
3.编写service文件
3、修改数据库配置
1.远程连接问题
2.测试连接
3.问题
1、部署openebs(Elastic Block Store)
1.下载镜像(针对k8s1.19)
链接:https://pan.baidu.com/s/1bKtBKwDkULWfxw_ulKqR3A?pwd=8888
提取码:8888
2.加载镜像(所有节点包括master)
[root@k8s01 ~]# for i in 192.168.248.{20..22}; do ssh root@${i} "docker load -i openebs.tar"; done
3.下载yaml文件并部署
链接:https://pan.baidu.com/s/11P2a4890xTWqbe3nFPGyKA?pwd=8888
提取码:8888
[root@k8s01 ~]# k apply -f openebs-operator.yaml
[root@k8s01 ~]# k get pods -A | grep openebs
openebs openebs-localpv-provisioner-6994cf5dd9-d57xg 1/1 Running 1 2d13h
openebs openebs-ndm-2b2tl 1/1 Running 0 2d13h
openebs openebs-ndm-bxlw8 1/1 Running 0 2d13h
openebs openebs-ndm-cluster-exporter-84bb5fc764-dzpdz 1/1 Running 0 2d13h
openebs openebs-ndm-node-exporter-2f8dg 1/1 Running 0 2d13h
openebs openebs-ndm-node-exporter-wpzt2 1/1 Running 0 2d13h
openebs openebs-ndm-operator-5f8578c994-pt4pq 1/1 Running 0 2d13h
4.设置默认storageclass
kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
#此格式只能用json
2、编写相关yaml文件
1.编写secret
[root@k8s01 ~]# echo -n "huafeirenmo" | base64
aHVhZmVpcmVubW8=
[root@k8s01 ~]# vim secret_mysql.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysql-password
namespace: default
data:
password: "aHVhZmVpcmVubW8="
[root@k8s01 ~]# k apply -f secret_mysql.yaml
2.编写statefulset文件
[root@k8s01 ~]# vim statefulset_mysql_opaque_passwd.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: mysql
name: mysql
spec:
replicas: 3
selector:
matchLabels:
app: mysql
serviceName: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:latest
name: mysql
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef: #使用secret方式
name: mysql-password
key: password
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql
volumeClaimTemplates:
- metadata:
name: mysql-data
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: openebs-hostpath
resources:
requests:
storage: 1Gi
[root@k8s01 ~]# k apply -f statefulset_mysql_opaque_passwd.yaml
3.编写service文件
[root@k8s01 ~]# vim service_mysql.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
selector:
app: mysql
ports:
- protocol: TCP
port: 3306
targetPort: 3306
nodePort: 30007
type: NodePort
[root@k8s01 ~]# k apply -f service_mysql.yaml
3、修改数据库配置
1.远程连接问题
MySQL 8.0 引入了一些更加严格的安全策略,其中包括不允许创建一个新的
'root'@'%'
用户。这是出于安全考虑的限制,因为允许从任何 IP 地址使用'root'
用户连接到数据库是不安全的。在 MySQL 8.0 中创建一个具有管理权限的用户,可以创建一个具有
GRANT OPTION
权限的普通用户,然后使用该用户进行授权操作。以下是示例步骤:[root@k8s01 ~]# k get pods #获取pod名称 NAME READY STATUS RESTARTS AGE mysql-0 1/1 Running 0 5h4m mysql-1 1/1 Running 0 5h3m mysql-2 1/1 Running 0 5h3m [root@k8s01 ~]# k exec -it mysql-0 -- /bin/bash #登录进pod root@mysql-0:/# mysql -uroot -phuafeirenmo
以 root 用户登录到 MySQL:
使用 root 用户(或具有管理员权限的用户)登录到 MySQL 服务器:
mysql -u root -p
创建新的普通用户:
创建一个新的普通用户,例如
myadmin
,并设置密码。替换<password>
为您想要设置的密码:CREATE USER 'myadmin'@'%' IDENTIFIED BY '<password>';
授予用户权限:
授予
myadmin
用户所需的权限,包括GRANT OPTION
,以便该用户能够授权其他用户。例如:GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'%' WITH GRANT OPTION;
上述语句将授予
myadmin
用户对所有数据库的所有权限,并允许他授权其他用户。刷新权限:
刷新 MySQL 的权限以使更改生效:
FLUSH PRIVILEGES;
2.测试连接
[root@k8s01 ~]# mysql -h 192.168.248.20 -P 30007 -umyadmin -phuafeiremmo
3.问题
在部署一个具有多个 MySQL StatefulSet 副本的情况下,每个副本将拥有自己独立的数据卷(Persistent Volume),这些数据卷通常由独立的 Persistent Volume Claim (PVC) 绑定。
每个 StatefulSet 副本都会启动一个独立的 MySQL 实例,这些实例的数据在各自的数据卷上进行存储,因此默认情况下,它们的数据是相互隔离的,不会共享数据。文章来源:https://www.toymoban.com/news/detail-666856.html
如果想要在这些 MySQL 实例之间共享数据,您需要使用 MySQL 数据库复制或者 MySQL 数据库集群技术文章来源地址https://www.toymoban.com/news/detail-666856.html
到了这里,关于k8s-statefulset部署myql-Nodeport方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!