- 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
- 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
- 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 # 如果是固定服務器磁盤需要固定節點
- 部署步驟
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
>**關鍵調整說明
存儲配置:
必須使用 持久化存儲(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 環境(如存儲類名稱、網絡插件等)調整配置。生產部署前務必在測試環境驗證。