当前位置: 首页 > news >正文

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

  1. Kubernetes Deployment 配置(oceanbase-deployment.yaml)
# oceanbase-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: oceanbase-deployment
spec:replicas: 1selector:matchLabels:app: oceanbasetemplate:metadata:labels:app: oceanbasespec:nodeSelector:  # 确保调度到有PV的节点kubernetes.io/hostname: node1  # 如果是固定服务器磁盘需要固定节点containers:- name: oceanbaseimage: registry.cn-hangzhou.aliyuncs.com/qiluo-images/oceanbase-ce:latestenv:- name: OB_MEMORY_LIMITvalue: "12G"- name: OB_SYSTEM_MEMORYvalue: "3G"- name: OB_CLUSTER_NAMEvalue: "OB_PROD_CLUSTER"- name: OB_ROOT_PASSWORDvalue: "6LuEpJaMudHd5yRc"volumeMounts:- mountPath: /root/ob/dataname: ob-data- mountPath: /root/ob/clogname: ob-clog- mountPath: /etc/oceanbasename: ob-configvolumes:- name: ob-datapersistentVolumeClaim:claimName: ob-data-pvc- name: ob-clogpersistentVolumeClaim:claimName: ob-clog-pvc- name: ob-configpersistentVolumeClaim:claimName: ob-config-pvc
  1. Kubernetes Service 配置(oceanbase-service.yaml)
apiVersion: v1
kind: Service
metadata:name: oceanbase-service
spec:selector:app: oceanbaseports:- name: sqlport: 2881targetPort: 2881nodePort: 32681  # NodePort方式暴露- name: metricsport: 2882targetPort: 2882- name: rpcport: 3881targetPort: 3881type: NodePort  # 生产环境建议使用LoadBalancer
  1. PersistentVolumeClaim (oceanbase-pvc.yaml)
# oceanbase-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: ob-data-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 100GistorageClassName: local-storage
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: ob-clog-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 200GistorageClassName: local-storage
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: ob-config-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 20GistorageClassName: local-storage

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

# oceanbase-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: ob-data-pv
spec:capacity:storage: 100GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:path: /data/oceanbase/datanodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node1  # 替换为实际节点名  # 如果是固定服务器磁盘需要固定节点
---
apiVersion: v1
kind: PersistentVolume
metadata:name: ob-clog-pv
spec:capacity:storage: 200GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:path: /data/oceanbase/clognodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node1   # 如果是固定服务器磁盘需要固定节点
---
apiVersion: v1
kind: PersistentVolume
metadata:name: ob-config-pv
spec:capacity:storage: 20GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:path: /data/oceanbase/confignodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node1 # 如果是固定服务器磁盘需要固定节点
  1. 部署步骤
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=1005.进入容器执行
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: oceanbasetopologyKey: "kubernetes.io/hostname"

生产环境建议:
使用 StatefulSet 替代 Deployment(稳定网络标识)
通过 ConfigMap 管理配置文件:

volumes:
- name: ob-configconfigMap:name: oceanbase-config

网络优化:
若需跨节点通信,使用 Headless Service
监控端口建议通过 Ingress 或 ServiceMesh 暴露
故障排查命令

# 检查资源限制
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 环境(如存储类名称、网络插件等)调整配置。生产部署前务必在测试环境验证。

http://www.dtcms.com/a/307500.html

相关文章:

  • sqli-labs:Less-13关卡详细解析
  • C 语言结构体深度解析:从数据聚合到内存管理的全维度指南
  • 数据库学习------数据库事务的特性
  • ubuntu22.04系统入门 linux入门 简单命令基础复习 实现以及实践
  • Cesium 快速入门(四)相机控制完全指南
  • 【Django】-1- 开发项目搭建
  • Java Matcher对象中find()与matches()的区别
  • sqli-labs:Less-15关卡详细解析
  • 10.C 语言内存划分,static,字符串
  • MFC CChartCtrl编程
  • 逻辑回归的应用
  • 【人工智能】当AI智能体遇上安全与伦理:一场技术与人性的对话
  • 3DXML 转换为 UG 的技术指南及迪威模型网在线转换推荐
  • arm架构系统打包qt程序--麒麟操作系统为例
  • 递归混合架构(MoR)在医疗领域的发展应用能力探析
  • 网络编程(一)TCP编程和UDP编程
  • Kubernetes集群中滚动更新失败与资源配置错误的深度解析及应对策略
  • 机器学习03——数据与算法初步2
  • Git之本地仓库管理
  • 第一篇:【Python-geemap教程(三)上】3D地形渲染与Landsat NDVI计算
  • 学习 java web 简单监听器
  • 《能碳宝》AI辅助开发系统方案
  • ES 工业网关:比德国更适配,比美国更易用
  • 编程语言Java——核心技术篇(六)解剖反射:性能的代价还是灵活性的福音?
  • Ubuntu/Debian 搭建 Nginx RTMP 服务器全攻略
  • 使用的IDE没有内置MCP客户端怎么办?
  • [源力觉醒 创作者计划]_文心4.5开源测评:国产大模型的技术突破与多维度能力解析
  • 数据库中使用SQL作分组处理01(简单分组)
  • Web3.0 和 Web2.0 生态系统比较分析:差异在哪里?
  • Web3:在 VSCode 中使用 Vue 前端与已部署的 Solidity 智能合约进行交互