K8s MySQL实现数据持久化

K8s MySQL实现数据持久化

K8S(四)——部署master节点服务

在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的状态。

img

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

img

5、进入数据库,添加数据

kubectl exec -it mysql-74b7b6d8cc-r5kq5 -- /bin/bash

img

6、手动删除节点,验证容器中的数据是否存在。

在node1上的删除容器,由于deployment保证副本数量。所以会重新调度到node2上。

img

img

可以看到数据存在

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









学会放弃比坚持容易的多,但还没听过放弃也有收获。年轻人加油!!!

posted @   三里清风18  阅读(804)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示