Kubernetes (K8s) 部署资源的完整配置OceanBase

  1. Kubernetes Deployment 配置(oceanbase-deployment.yaml)
bash 复制代码
# oceanbase-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: oceanbase-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: oceanbase
  template:
    metadata:
      labels:
        app: oceanbase
    spec:
      nodeSelector:  # 确保调度到有PV的节点
        kubernetes.io/hostname: node1  # 如果是固定服务器磁盘需要固定节点
      containers:
      - name: oceanbase
        image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/oceanbase-ce:latest
        env:
        - name: OB_MEMORY_LIMIT
          value: "12G"
        - name: OB_SYSTEM_MEMORY
          value: "3G"
        - name: OB_CLUSTER_NAME
          value: "OB_PROD_CLUSTER"
        - name: OB_ROOT_PASSWORD
          value: "6LuEpJaMudHd5yRc"
        volumeMounts:
        - mountPath: /root/ob/data
          name: ob-data
        - mountPath: /root/ob/clog
          name: ob-clog
        - mountPath: /etc/oceanbase
          name: ob-config
      volumes:
      - name: ob-data
        persistentVolumeClaim:
          claimName: ob-data-pvc
      - name: ob-clog
        persistentVolumeClaim:
          claimName: ob-clog-pvc
      - name: ob-config
        persistentVolumeClaim:
          claimName: ob-config-pvc
  1. Kubernetes Service 配置(oceanbase-service.yaml)
bash 复制代码
apiVersion: v1
kind: Service
metadata:
  name: oceanbase-service
spec:
  selector:
    app: oceanbase
  ports:
  - name: sql
    port: 2881
    targetPort: 2881
    nodePort: 32681  # NodePort方式暴露
  - name: metrics
    port: 2882
    targetPort: 2882
  - name: rpc
    port: 3881
    targetPort: 3881
  type: NodePort  # 生产环境建议使用LoadBalancer
  1. PersistentVolumeClaim (oceanbase-pvc.yaml)
bash 复制代码
# oceanbase-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ob-data-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi
  storageClassName: local-storage
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ob-clog-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 200Gi
  storageClassName: local-storage
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ob-config-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  storageClassName: local-storage

4.手动创建 PV(适合无 StorageClass 的环境)oceanbase-pv.yaml

bash 复制代码
# oceanbase-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: ob-data-pv
spec:
  capacity:
    storage: 100Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /data/oceanbase/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - node1  # 替换为实际节点名  # 如果是固定服务器磁盘需要固定节点
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: ob-clog-pv
spec:
  capacity:
    storage: 200Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /data/oceanbase/clog
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - node1   # 如果是固定服务器磁盘需要固定节点
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: ob-config-pv
spec:
  capacity:
    storage: 20Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /data/oceanbase/config
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - node1 # 如果是固定服务器磁盘需要固定节点
  1. 部署步骤
bash 复制代码
mkdir /data/oceanbase/{data,clog,config} -p
chmod 777 /data/oceanbase/{data,clog,config} 

# 1. 创建PV和PVC
kubectl apply -f oceanbase-pv.yaml
kubectl apply -f oceanbase-pvc.yaml

# 2. 验证存储
kubectl get pv
kubectl get pvc  # 应全部显示Bound状态

# 3. 部署OceanBase
kubectl apply -f oceanbase-deployment.yaml
kubectl apply -f oceanbase-service.yaml

# 4. 检查状态
kubectl get pods -w
或者
kubectl get pods -n dev -o wide -A
查看日志
kubectl logs -f <pod-name> -c oceanbase --tail=100

5.进入容器执行
docker exec -it <pod-name> /bin/bash
obclient -h127.0.0.1 -P2881 -uroot@sys -A
修改用户名
ALTER USER root IDENTIFIED BY '6LuEpJaMudHd5yRc';

此时此刻就连接成功啦

获取访问IP(根据实际环境调整)

kubectl get svc oceanbase

复制代码
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/be16386056a2493180659663dd1428d4.png)

>**关键调整说明
存储配置:
必须使用 持久化存储(PV/PVC),推荐 SSD/NVMe
多节点部署时需要共享存储(如 Ceph RBD、NFS)
高可用改进:

# 在Deployment中增加
```yaml
spec:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchLabels:
            app: oceanbase
        topologyKey: "kubernetes.io/hostname"

生产环境建议:

使用 StatefulSet 替代 Deployment(稳定网络标识)

通过 ConfigMap 管理配置文件:

yaml 复制代码
volumes:
- name: ob-config
  configMap:
    name: oceanbase-config

网络优化:

若需跨节点通信,使用 Headless Service

监控端口建议通过 Ingress 或 ServiceMesh 暴露

故障排查命令

bash 复制代码
# 检查资源限制
kubectl describe pod <pod-name> | grep -A 10 "Limits"
# 进入容器调试
kubectl exec -it <pod-name> -- bash
obd cluster list
# 查看事件日志
kubectl get events --sort-by=.metadata.creationTimestamp

请根据您的实际 Kubernetes 环境(如存储类名称、网络插件等)调整配置。生产部署前务必在测试环境验证。

相关推荐
武子康7 小时前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
2601_961875243 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
java_cj3 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
程序员老赵3 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
正经教主3 天前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器
kiros_wang3 天前
Docker 使用完整指南
运维·docker·容器
OceanBase数据库官方博客3 天前
OceanBase + Flink 数据集成(第二部分):通过 JDBC 协议实现实时数据同步
大数据·flink·oceanbase
正经教主3 天前
【docker基础】第九周:Docker安全与镜像优化
运维·docker·容器
qq_452396233 天前
第十三篇:《K8s 安全基础:RBAC、ServiceAccount、Pod Security》
java·安全·kubernetes
睡不醒男孩0308234 天前
云原生运维实战:高并发架构下的云原生可观测性、韧性降级与自动化干预体系
数据库·kubernetes·高并发·prometheus·devops·sre·缓存调优