K8s MySQL实现数据持久化
K8s MySQL实现数据持久化
在master执行
yum -y install nfs-utils rpcbind
mkdir /nfsdata/mysql -p
echo /nfsdata *(rw,no_root_squash,sync) > /etc/exports
systemctl restart nfs-server rpcbind
systemctl enable rpcbind && systemctl enable nfs-server
showmount -e
Export list for master:
/nfsdata *
在node节点执行
yum -y install nfs-utils rpcbind
systemctl restart nfs-server rpcbind
1、搭建nfs实现mysql数据持久化
在master执行
yum -y install nfs-utils rpcbind
mkdir /nfsdata/mysql -p
echo /nfsdata *(rw,no_root_squash,sync) > /etc/exports
systemctl restart nfs-server rpcbind
systemctl enable rpcbind && systemctl enable nfs-server
showmount -e
Export list for master:
/nfsdata *
在node节点执行
yum -y install nfs-utils rpcbind
systemctl restart nfs-server rpcbind
2、创建pv
server: IP为master的Ip
vim mysql-pv-yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mypv1
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Recycle #Retain 手动删除
storageClassName: nfs
nfs:
path: /nfsdata/mysql
server: 192.168.3.36
#kubectl apply -f mysql-pv-yaml
3、创建pvc
vim mysql-pvc-yaml
[](javascript:void(0)😉
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc1
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 4Gi
storageClassName: nfs
#kubectl apply -f mysql-pv-yaml
[](javascript:void(0)😉
查看pv、pvc的状态。
4、创建mysql-pod+svc
vim mysql-deploy.yaml
[](javascript:void(0)😉
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
env: #配置变量,设置mysql的密码
- name: MYSQL_ROOT_PASSWORD
value: 123.com
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql #MySQL容器的数据都是存在这个目录的,要对这个目录做数据持久化
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mypvc1 #指定pvc名称
---
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
selector:
app: mysql
type: NodePort
ports:
- port: 3306
targetPort: 33333
#kubectl apply -f mysql-deploy.yaml
[](javascript:void(0)😉
查看pod状态
kubectl get pod -o wide -w
5、进入数据库,添加数据
kubectl exec -it mysql-74b7b6d8cc-r5kq5 -- /bin/bash
6、手动删除节点,验证容器中的数据是否存在。
在node1上的删除容器,由于deployment保证副本数量。所以会重新调度到node2上。
可以看到数据存在
Kubernetes 修改默认的端口范围
【学习笔记 - Kubernetes(k8s)】Kubernetes 修改默认的端口范围
Kubernetes 服务的 NodePort 默认端口范围是 30000-32767,在某些场合下,这个限制不太适用,我们可以自定义它的端口范围,操作步骤如下:
编辑 vi /etc/kubernetes/manifests/kube-apiserver.yaml 配置文件,增加配置 --service-node-port-range=2-65535
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
component: kube-apiserver
tier: control-plane
name: kube-apiserver
namespace: kube-system
spec:
containers:
- command:
- kube-apiserver
# 在这里增加配置即可
- --service-node-port-range=2-65535
- --advertise-address=192.168.141.150
- --allow-privileged=true
- --authorization-mode=Node,RBAC
- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --enable-admission-plugins=NodeRestriction
- --enable-bootstrap-token-auth=true
- --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
- --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt
// 以下配置省略...
使用 docker ps 命令找到 kube-apiserver 容器,再使用 docker restart 即可生效。
原文链接:https://blog.csdn.net/qq1445654576/article/details/104581296/
https://cloud.tencent.com/developer/article/1443520
Port 29876 is not within the port range 30000-32767; please recreate service
Port 29876 is not allocated; repairing
docker可视化工具Portainer部署与汉化
如果需要汉化,可以下载汉化包(提取码:6vjr),之后解压,并将解压后的public文件夹上传到centos系统的根目录下,如下图所示:
D:\noteMe\spark_shell\k8s\portainer汉化包
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --name prtainer-test portainer/portainer
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --name my-prtainer portainer/portainer
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /public:/public --name prtainer-test portainer/portainer(如果已部署,需要将之前的容器删除)
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /public:/public --name prtainer-test portainer/portainer
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /public:/public --name prtainer-UI portainer/portainer
参数说明:
-d:容器在后台运行;
-p 9000:9000 :宿主机9000端口映射容器中的9000端口
–restart 标志会检查容器的退出代码,并据此来决定是否要重启容器,默认是不会重启。
–restart=always:自动重启该容器
-v /var/run/docker.sock:/var/run/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中
-v portainer_data:/data :把宿主机portainer_data数据卷挂载到容器/data目录
–name prtainer-test : 给容器起名为portainer-test
学会放弃比坚持容易的多,但还没听过放弃也有收获。年轻人加油!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!