rancher 部署statefulset mariadb 10.5

部分摘自元宝

  • StatefulSet(稳定 Pod 名)
  • PVC(Longhorn / 任意 CSI)
  • ConfigMap(放开远程访问)
  • Secret(root 密码)
  • Service(ClusterIP + NodePort 可选)
  • 适合 kubectl port-forward / HeidiSQL

一、命名空间(可选)

lua 复制代码
kubectl create ns db

二、Secret(root 密码)

yaml 复制代码
apiVersion: v1
kind: Secret
metadata:
  name: mariadb-secret
  namespace: db
type: Opaque
stringData:
  MARIADB_ROOT_PASSWORD: StrongRootPassword123
复制代码
kubectl apply -f mariadb-secret.yaml

三、ConfigMap(放开远程访问)

yaml 复制代码
apiVersion: v1
kind: ConfigMap
metadata:
  name: mariadb-config
  namespace: db
data:
  my.cnf: |
    [mysqld]
    bind-address=0.0.0.0
    skip-name-resolve
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
复制代码
kubectl apply -f mariadb-configmap.yaml

四、PVC(Longhorn / 通用)

yaml 复制代码
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mariadb-data
  namespace: db
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  # storageClassName: longhorn  # 如需要可取消注释
复制代码
kubectl apply -f mariadb-pvc.yaml

五、StatefulSet(核心)

yaml 复制代码
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mariadb
  namespace: db
spec:
  serviceName: mariadb
  replicas: 1
  selector:
    matchLabels:
      app: mariadb
  template:
    metadata:
      labels:
        app: mariadb
    spec:
      containers:
      - name: mariadb
        image: mariadb:10.5
        ports:
        - containerPort: 3306
          name: mysql
        env:
        - name: MARIADB_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mariadb-secret
              key: MARIADB_ROOT_PASSWORD
        volumeMounts:
        - name: data
          mountPath: /var/lib/mysql
        - name: config
          mountPath: /etc/mysql/conf.d
        resources:
          requests:
            cpu: 250m
            memory: 512Mi
          limits:
            cpu: 1000m
            memory: 2Gi
      volumes:
      - name: config
        configMap:
          name: mariadb-config
  volumeClaimTemplates: []

⚠️ 这里 显式声明 volumes ,而不是 volumeClaimTemplates,方便你直接用前面创建的 PVC。

更新 volumes 部分:

yaml 复制代码
volumes:
      - name: data
        persistentVolumeClaim:
          claimName: mariadb-data
      - name: config
        configMap:
          name: mariadb-config
复制代码
kubectl apply -f mariadb-sts.yaml

六、Service(两种方式)

✅ 方式 1:ClusterIP(推荐 + port-forward)

yaml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: mariadb
  namespace: db
spec:
  clusterIP: None   # Headless(StatefulSet 推荐)
  selector:
    app: mariadb
  ports:
  - port: 3306
    targetPort: 3306

✅ 方式 2:NodePort(局域网访问)

yaml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: mariadb-nodeport
  namespace: db
spec:
  type: NodePort
  selector:
    app: mariadb
  ports:
  - port: 3306
    targetPort: 3306
    nodePort: 30306
复制代码
kubectl apply -f mariadb-svc.yaml

七、验证部署

ini 复制代码
kubectl get pods,svc,pvc -n db
kubectl logs mariadb-0 -n db --tail=50

进入数据库:

sql 复制代码
kubectl exec -it mariadb-0 -n db -- mariadb -u root -p

port-forward to 3307

js 复制代码
kubectl port-forward svc/mariadb 3307:3306 -n db

注意不要关闭进程

宿主机hedissql 远程访问

enjoy!

相关推荐
易番番ERP4 小时前
以销定采模式下,ERP如何帮助贸易企业管住订单真实利润
大数据·低代码·微服务·云原生·成本核算·易番番erp·以销定采
人间凡尔赛5 小时前
2026 后端架构三驾马车:Wasm 容器上 K8s、存算分离与 AI 原生
后端·云原生·架构
天蓝不会忘记027 小时前
k8s集群部署的方法原理
云原生·容器·kubernetes
红球yyds8 小时前
用anisble搭建k8s集群及原理
云原生·容器·kubernetes
分布式存储与RustFS11 小时前
从 MinIO 到 RustFS:不只是换语言,更是换一份协议自由
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
易番番ERP1 天前
品牌代理商SKU繁多,ERP如何高效处理新旧规格替换?
数据库·微服务·云原生·sku·易番番erp
对象存储与RustFS1 天前
给 Kubernetes 找一个对象存储后端:RustFS Helm 部署 + 应用接入实录
后端·云原生·kubernetes
分布式存储与RustFS1 天前
给 Kubernetes 找一个对象存储后端:RustFS Helm 部署 + 应用接入实录
云原生·kubernetes·开源·对象存储·分布式存储·s3·rustfs
阿里云云原生2 天前
还在给 AI “喂冷饭”?8.28 上海沙龙:带你跨越 AI 实时上下文鸿沟
云原生·kafka
有脚就行2 天前
第33篇-KServe推理平台-标准化的K8s推理服务管理
人工智能·云原生·容器·kubernetes