K8S 部署 阿里云 PolarDB-X 集群(企业版、标准版)minikube 教程

简介: 本文介绍在 Minikube Kubernetes 环境中部署 PolarDB-X 数据库的完整实践,涵盖环境准备、Operator 安装、企业版与标准版集群部署。通过 Helm 快速部署 Operator,并分别搭建分布式与三节点高可用架构,验证核心功能。虽 K8S 部署便捷,但生产环境建议谨慎使用,尤其对有状态数据库系统。附系列前8篇安装指南供参考。

install polardb-x by k8s (minikube)

好习惯,附上之前 8 篇


参考


0. env

  • os
qc@ubuntu ~ $ cat /etc/issue
Ubuntu 25.10 \n \l

qc@ubuntu ~ $ lscpu |grep "^CPU(s):"
CPU(s):                                  20
qc@ubuntu ~ $ free -h
               total        used        free      shared  buff/cache   available
Mem:            61Gi        24Gi        10Gi       2.2Gi        29Gi        36Gi
Swap:             0B          0B          0B
qc@ubuntu ~ $
  • docker
qc@ubuntu ~ $ docker version 
Client: Docker Engine - Community
 Version:           29.1.3
 API version:       1.52
 Go version:        go1.25.5
 Git commit:        f52814d
 Built:             Fri Dec 12 14:49:48 2025
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          29.1.3
  API version:      1.52 (minimum version 1.44)
  Go version:       go1.25.5
  Git commit:       fbf3ed2
  Built:            Fri Dec 12 14:49:48 2025
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v2.2.1
  GitCommit:        dea7da592f5d1d2b7755e3a161be07f43fad8f75
 runc:
  Version:          1.3.4
  GitCommit:        v1.3.4-0-gd6d73eb8
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
qc@ubuntu ~ $
  • minikube
qc@ubuntu ~ $ minikube version
minikube version: v1.37.0
commit: 65318f4cfff9c12cc87ec9eb8f4cdd57b25047f3
qc@ubuntu ~ $
  • helm
qc@ubuntu ~ $ helm version
version.BuildInfo{Version:"v3.19.4", GitCommit:"7cfb6e486dac026202556836bb910c37d847793e", GitTreeState:"clean", GoVersion:"go1.24.11"}
qc@ubuntu ~ $

1. 部署 PolarDB-X Operator

qc@ubuntu ~ $ kubectl create namespace polardbx-operator-system
qc@ubuntu ~ $ 
qc@ubuntu ~ $ kubectl get namespace
NAME                       STATUS   AGE
default                    Active   15d
kube-node-lease            Active   15d
kube-public                Active   15d
kube-system                Active   15d
polardbx-operator-system   Active   18m
qc@ubuntu ~ $ 
qc@ubuntu ~ $ helm repo add polardbx https://polardbx-charts.oss-cn-beijing.aliyuncs.com
"polardbx" has been added to your repositories
qc@ubuntu ~ $ 
qc@ubuntu ~ $ helm repo list 
NAME        URL                                                
polardbx    https://polardbx-charts.oss-cn-beijing.aliyuncs.com
qc@ubuntu ~ $ 
qc@ubuntu ~ $ helm install --namespace polardbx-operator-system polardbx-operator polardbx/polardbx-operator
I0115 10:43:36.250088 3424153 warnings.go:110] "Warning: unrecognized format \"int64\""
I0115 10:43:36.268138 3424153 warnings.go:110] "Warning: unrecognized format \"int64\""
I0115 10:43:36.268154 3424153 warnings.go:110] "Warning: unrecognized format \"int32\""
I0115 10:43:36.279496 3424153 warnings.go:110] "Warning: unrecognized format \"int64\""
I0115 10:43:36.279510 3424153 warnings.go:110] "Warning: unrecognized format \"int32\""
I0115 10:43:36.312095 3424153 warnings.go:110] "Warning: unrecognized format \"int64\""
I0115 10:43:36.312113 3424153 warnings.go:110] "Warning: unrecognized format \"int32\""
I0115 10:43:36.324141 3424153 warnings.go:110] "Warning: unrecognized format \"int32\""
I0115 10:43:36.347783 3424153 warnings.go:110] "Warning: unrecognized format \"int64\""
I0115 10:43:36.359055 3424153 warnings.go:110] "Warning: unrecognized format \"int64\""
I0115 10:43:36.379821 3424153 warnings.go:110] "Warning: unrecognized format \"int64\""
I0115 10:43:36.379854 3424153 warnings.go:110] "Warning: unrecognized format \"int32\""
I0115 10:43:36.391641 3424153 warnings.go:110] "Warning: unrecognized format \"int64\""
I0115 10:43:36.426913 3424153 warnings.go:110] "Warning: unrecognized format \"int64\""
I0115 10:43:36.426947 3424153 warnings.go:110] "Warning: unrecognized format \"int32\""
NAME: polardbx-operator
LAST DEPLOYED: Thu Jan 15 10:43:38 2026
NAMESPACE: polardbx-operator-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
polardbx-operator is installed. Please check the status of components:

    kubectl get pods --namespace polardbx-operator-system

Now have fun with your first PolarDB-X cluster.

Here's the manifest for quick start:

#
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
  name: quick-start
  annotations:
    polardbx/topology-mode-guide: quick-start
#
qc@ubuntu ~ $

qc@ubuntu ~ $ kubectl get pods --namespace polardbx-operator-system
NAME                                           READY   STATUS              RESTARTS   AGE
polardbx-clinic-5bd8884b5f-kb224               0/1     ContainerCreating   0          31s
polardbx-controller-manager-84bd69c857-pz59h   0/1     ContainerCreating   0          31s
polardbx-hpfs-cffv2                            0/1     ContainerCreating   0          31s
polardbx-tools-updater-fkqkj                   0/1     ContainerCreating   0          31s
qc@ubuntu ~ $ 
qc@ubuntu ~ $ kubectl get pods --namespace polardbx-operator-system
NAME                                           READY   STATUS              RESTARTS   AGE
polardbx-clinic-5bd8884b5f-kb224               0/1     ContainerCreating   0          46s
polardbx-controller-manager-84bd69c857-pz59h   0/1     ContainerCreating   0          46s
polardbx-hpfs-cffv2                            0/1     ContainerCreating   0          46s
polardbx-tools-updater-fkqkj                   0/1     ContainerCreating   0          46s
qc@ubuntu ~ $ 
qc@ubuntu ~ $ kubectl get pods --namespace polardbx-operator-system
NAME                                           READY   STATUS    RESTARTS   AGE
polardbx-clinic-5bd8884b5f-kb224               1/1     Running   0          2m14s
polardbx-controller-manager-84bd69c857-pz59h   1/1     Running   0          2m14s
polardbx-hpfs-cffv2                            1/1     Running   0          2m14s
polardbx-tools-updater-fkqkj                   1/1     Running   0          2m14s
qc@ubuntu ~ $
qc@ubuntu ~ $ kubectl get pods -n polardbx-operator-system
NAME                                           READY   STATUS    RESTARTS   AGE
polardbx-clinic-5bd8884b5f-kb224               1/1     Running   0          21m
polardbx-controller-manager-84bd69c857-pz59h   1/1     Running   0          21m
polardbx-hpfs-cffv2                            1/1     Running   0          21m
polardbx-tools-updater-fkqkj                   1/1     Running   0          21m
qc@ubuntu ~ $ 
qc@ubuntu ~ $ kubectl get pods -n polardbx-operator-system -o wide
NAME                                           READY   STATUS    RESTARTS   AGE   IP            NODE       NOMINATED NODE   READINESS GATES
polardbx-clinic-5bd8884b5f-kb224               1/1     Running   0          21m   10.244.0.21   minikube   <none>           <none>
polardbx-controller-manager-84bd69c857-pz59h   1/1     Running   0          21m   10.244.0.22   minikube   <none>           <none>
polardbx-hpfs-cffv2                            1/1     Running   0          21m   10.244.0.20   minikube   <none>           <none>
polardbx-tools-updater-fkqkj                   1/1     Running   0          21m   10.244.0.19   minikube   <none>           <none>
qc@ubuntu ~ $
qc@ubuntu ~ $ kubectl get svc -n polardbx-operator-system 
NAME                         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
polardbx-admission-webhook   ClusterIP   10.107.99.60    <none>        443/TCP             22m
polardbx-hpfs                ClusterIP   10.99.187.214   <none>        6543/TCP,6643/TCP   22m
qc@ubuntu ~ $
qc@ubuntu ~ $ minikube service list
┌──────────────────────────┬────────────────────────────┬──────────────┬───────────────────────────┐
│        NAMESPACE         │            NAME            │ TARGET PORT  │            URL            │
├──────────────────────────┼────────────────────────────┼──────────────┼───────────────────────────┤
│ default                  │ kubernetes                 │ No node port │                           │
│ kube-system              │ kube-dns                   │ No node port │                           │
│ polardbx-operator-system │ polardbx-admission-webhook │ No node port │                           │
│ polardbx-operator-system │ polardbx-hpfs              │ No node port │                           │
└──────────────────────────┴────────────────────────────┴──────────────┴───────────────────────────┘
qc@ubuntu ~ $

2. 部署 PolarDB-X 集群

2.1 部署 PolarDB-X 企业版集群

PolarDB-X 企业版是分布式架构集群,支持更大数据量,面向具备企业级超高并发、大规模数据复杂查询、加速分析的业务场景。 快速部署一个 PolarDB-X 企业版集群,它包含 1 个 GMS 节点、1 个 CN 节点、1 个 DN 节点和 1 个 CDC 节点。

  • 获取 PolarDB-X 各个组件的最新镜像版本(需要填入YAML文件)
qc@ubuntu ~/db/polardb/k8s $ vim get-version.sh 
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ cat get-version.sh 
#!/bin/bash

components=(
"CN" "DN" "CDC" "COLUMNAR"
)

image_prefixes=(
"polardbx-sql" "polardbx-engine" "polardbx-cdc" "polardbx-columnar"
)

IMAGE_LIST_URL=https://polardbx-opensource.oss-cn-hangzhou.aliyuncs.com/k8s-images/images.list

FILE=images.list

curl -s $IMAGE_LIST_URL -o $FILE

for i in "${!components[@]}"; do
  component=${components[$i]}
  image_prefix=${image_prefixes[$i]}
  latest_image=$(grep "$image_prefix" $FILE | sort -V | tail -n 1)
  echo "$component $latest_image"
done
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ bash get-version.sh 
CN polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.2_5.4.19
DN polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19
CDC polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.2_5.4.19
COLUMNAR polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-columnar:v2.4.2_5.4.19
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ vim pull-polardbx-images.sh 
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ cat pull-polardbx-images.sh 
docker pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.2_5.4.19
docker pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19
docker pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.2_5.4.19
docker pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-columnar:v2.4.2_5.4.19
qc@ubuntu ~/db/polardb/k8s $ 

qc@ubuntu ~/db/polardb/k8s $ sh pull-polardbx-images.sh 
v2.4.2_5.4.19: Pulling from polardbx/polardbx-sql
1b99c7908382: Pull complete 
51c473a0e13f: Pull complete 
bbe17eb2658d: Pull complete 
c571d6a66764: Pull complete 
f95fbb720c85: Pull complete 
0e8f1d46da94: Pull complete 
51ace89df3a6: Pull complete 
7042c6e2c813: Pull complete 
a731ba094e73: Pull complete 
0240da629030: Pull complete 
e0b816546a65: Pull complete 
4f4fb700ef54: Pull complete 
62505b4a53c1: Pull complete 
Digest: sha256:d26456b4404a768fbd894652f2215c601d37825658316b755ec5648ca21f6d3a
Status: Downloaded newer image for polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.2_5.4.19
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.2_5.4.19
v2.4.2_8.4.19: Pulling from polardbx/polardbx-engine
4f4fb700ef54: Pull complete 
8b0741783c48: Pull complete 
eda12639ac70: Pull complete 
67ea6e227649: Pull complete 
262982ed831a: Pull complete 
b6cb58d2cc52: Pull complete 
ba9e50ca9731: Pull complete 
5266f5ed342c: Pull complete 
952b2f29b985: Pull complete 
d6467fcefa02: Pull complete 
bfd2d210c0e8: Pull complete 
Digest: sha256:ec0c8df5a017e7074929e31e185dad7d5aa31c5b2073fe38473ee29ec690c04a
Status: Downloaded newer image for polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19
v2.4.2_5.4.19: Pulling from polardbx/polardbx-cdc
095a75859683: Pull complete 
66809ac4fd42: Pull complete 
d8ad1e07310a: Pull complete 
8ca16f2216ce: Pull complete 
747f5f366602: Pull complete 
e7890e90bfce: Pull complete 
938d1b30f159: Pull complete 
e4d1958f09ea: Pull complete 
35bf251d4dd9: Pull complete 
e3172cab5c41: Pull complete 
fa8de3bc14bd: Pull complete 
07557459d38a: Pull complete 
4f4fb700ef54: Pull complete 
3acdada65a9f: Pull complete 
18eb4fe0e36e: Pull complete 
Digest: sha256:a137cec08150c7f6920abdcaa739b923cfdac0d7f274d96ef99d3e4cafcba7cd
Status: Downloaded newer image for polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.2_5.4.19
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.2_5.4.19
v2.4.2_5.4.19: Pulling from polardbx/polardbx-columnar
85ef84e6460a: Pull complete 
c0e847973489: Pull complete 
40b9b7e882cb: Pull complete 
56e5f7fbc39f: Pull complete 
283e3677afda: Pull complete 
afb44ea5c16d: Pull complete 
dd4ef254bc87: Pull complete 
670680846657: Pull complete 
b740f97550c5: Pull complete 
631b789e7a19: Pull complete 
6dba9a458048: Pull complete 
88b613357eff: Pull complete 
16f48df7cd05: Pull complete 
00e086aecc37: Pull complete 
1a6c912d944e: Pull complete 
e7304396b806: Pull complete 
Digest: sha256:6dae48560121178f40d2a04efe950d6161c84cecf618d3192c61af85380922bb
Status: Downloaded newer image for polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-columnar:v2.4.2_5.4.19
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-columnar:v2.4.2_5.4.19
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ docker images|grep polardbx
WARNING: This output is designed for human readability. For machine-readable output, please use --format.
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.2_5.4.19        a137cec08150       1.89GB          595MB        
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-columnar:v2.4.2_5.4.19   6dae48560121       4.01GB         1.48GB        
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19     ec0c8df5a017        4.9GB         1.18GB        
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.2_5.4.19        d26456b4404a       2.55GB          973MB        
qc@ubuntu ~/db/polardb/k8s $
qc@ubuntu ~/db/polardb/k8s $ vim tag.sh 
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ cat tag.sh 
docker tag polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.2_5.4.19      polardbx/polardbx-cdc:v2.4.2_5.4.19      
docker tag polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-columnar:v2.4.2_5.4.19 polardbx/polardbx-columnar:v2.4.2_5.4.19 
docker tag polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19   polardbx/polardbx-engine:v2.4.2_8.4.19   
docker tag polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.2_5.4.19      polardbx/polardbx-sql:v2.4.2_5.4.19      

docker rmi polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.2_5.4.19
docker rmi polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-columnar:v2.4.2_5.4.19
docker rmi polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19
docker rmi polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.2_5.4.19
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ sh tag.sh 
Untagged: polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.2_5.4.19
Untagged: polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-columnar:v2.4.2_5.4.19
Untagged: polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19
Untagged: polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.2_5.4.19
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ docker images|grep polardbx
WARNING: This output is designed for human readability. For machine-readable output, please use --format.
polardbx/polardbx-cdc:v2.4.2_5.4.19                                   a137cec08150       1.89GB          595MB        
polardbx/polardbx-columnar:v2.4.2_5.4.19                              6dae48560121       4.01GB         1.48GB        
polardbx/polardbx-engine:v2.4.2_8.4.19                                ec0c8df5a017        4.9GB         1.18GB        
polardbx/polardbx-sql:v2.4.2_5.4.19                                   d26456b4404a       2.55GB          973MB        
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ vim minikube_load.sh 
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ cat minikube_load.sh 
minikube image load polardbx/polardbx-cdc:v2.4.2_5.4.19
minikube image load polardbx/polardbx-columnar:v2.4.2_5.4.19
minikube image load polardbx/polardbx-engine:v2.4.2_8.4.19
minikube image load polardbx/polardbx-sql:v2.4.2_5.4.19
qc@ubuntu ~/db/polardb/k8s $ 

qc@ubuntu ~/db/polardb/k8s $ minikube image ls
registry.k8s.io/pause:3.10.1
registry.k8s.io/kube-scheduler:v1.34.0
registry.k8s.io/kube-proxy:v1.34.0
registry.k8s.io/kube-controller-manager:v1.34.0
registry.k8s.io/kube-apiserver:v1.34.0
registry.k8s.io/etcd:3.6.4-0
registry.k8s.io/coredns/coredns:v1.12.1
registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.10.1
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.34.0
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.34.0
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.34.0
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.34.0
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.6.4-0
registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.12.1
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/xstore-tools:v1.7.0
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-operator:v1.7.0
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-hpfs:v1.7.0
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-clinic:v1.7.0
gcr.io/k8s-minikube/storage-provisioner:v5
docker.io/library/nginx:1.29-alpine
qc@ubuntu ~/db/polardb/k8s $ 

qc@ubuntu ~/db/polardb/k8s $ sh minikube_load.sh 
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ minikube image ls
registry.k8s.io/pause:3.10.1
registry.k8s.io/kube-scheduler:v1.34.0
registry.k8s.io/kube-proxy:v1.34.0
registry.k8s.io/kube-controller-manager:v1.34.0
registry.k8s.io/kube-apiserver:v1.34.0
registry.k8s.io/etcd:3.6.4-0
registry.k8s.io/coredns/coredns:v1.12.1
registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.10.1
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.34.0
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.34.0
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.34.0
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.34.0
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.6.4-0
registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.12.1
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/xstore-tools:v1.7.0
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-operator:v1.7.0
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-hpfs:v1.7.0
polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-clinic:v1.7.0
gcr.io/k8s-minikube/storage-provisioner:v5
docker.io/polardbx/polardbx-sql:v2.4.2_5.4.19
docker.io/polardbx/polardbx-engine:v2.4.2_8.4.19
docker.io/polardbx/polardbx-columnar:v2.4.2_5.4.19
docker.io/polardbx/polardbx-cdc:v2.4.2_5.4.19
docker.io/library/nginx:1.29-alpine
qc@ubuntu ~/db/polardb/k8s $
  • 准备一个 quick-start.yaml 文件,将如下内容粘贴到文件中,并根据上述命令的结果更新 YAML 文件各个组件的image字段。
qc@ubuntu ~/db/polardb/k8s $ vim quick-start_polardbx-on-k8s.yaml
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ cat quick-start_polardbx-on-k8s.yaml 
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
  name: quick-start
spec:
  topology:
    nodes:
      gms:
        template:
          image: polardbx/polardbx-engine:v2.4.2_8.4.19
          resources:
            requests:
              cpu: 100m
              memory: 500Mi
            limits:
              cpu: 1
              memory: 1Gi
      cn:
        replicas: 1
        template:
          image: polardbx/polardbx-sql:v2.4.2_5.4.19
          resources:
            requests:
              cpu: 100m
              memory: 1Gi
            limits:
              cpu: 1
              memory: 2Gi
      dn:
        replicas: 1
        template:
          image: polardbx/polardbx-engine:v2.4.2_8.4.19
          resources:
            requests:
              cpu: 100m
              memory: 500Mi
            limits:
              cpu: 1
              memory: 1Gi
      cdc:
        replicas: 1
        template:
          image: polardbx/polardbx-cdc:v2.4.2_5.4.19
          resources:
            requests:
              cpu: 100m
              memory: 500Mi
            limits:
              cpu: 1
              memory: 1Gi
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ kubectl apply -f quick-start_polardbx-on-k8s.yaml 
polardbxcluster.polardbx.aliyun.com/quick-start created
qc@ubuntu ~/db/polardb/k8s $

遇到一点小问题,cdc节点拉不起来

qc@ubuntu ~/db/polardb/k8s $ kubectl get po
NAME                                            READY   STATUS             RESTARTS        AGE
quick-start-nd4j-cdc-default-58f87889d7-5l7vg   2/3     CrashLoopBackOff   9 (4m59s ago)   40m
quick-start-nd4j-cn-default-6d6dc885d9-t4g92    3/3     Running            0               40m
quick-start-nd4j-dn-0-cand-0                    3/3     Running            0               41m
quick-start-nd4j-dn-0-cand-1                    3/3     Running            0               41m
quick-start-nd4j-dn-0-log-0                     3/3     Running            0               41m
quick-start-nd4j-gms-cand-0                     3/3     Running            0               41m
quick-start-nd4j-gms-cand-1                     3/3     Running            0               41m
quick-start-nd4j-gms-log-0                      3/3     Running            0               41m
qc@ubuntu ~/db/polardb/k8s $
qc@ubuntu ~/db/polardb/k8s $ kubectl logs -f quick-start-nd4j-cdc-default-58f87889d7-5l7vg
Defaulted container "engine" out of: engine, prober, exporter
su: failed to execute /bin/bash: Resource temporarily unavailable
qc@ubuntu ~/db/polardb/k8s $
qc@ubuntu ~/db/polardb/k8s $ kubectl describe po quick-start-nd4j-cdc-default-58f87889d7-5l7vg
...

Events:
  Type     Reason     Age                   From               Message
  ----     ------     ----                  ----               -------
  Normal   Pulled     56m                   kubelet            Container image "polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/probe-proxy:v1.7.0" already present on machine
  Normal   Scheduled  56m                   default-scheduler  Successfully assigned default/quick-start-nd4j-cdc-default-58f87889d7-5l7vg to minikube
  Normal   Created    56m                   kubelet            Created container: prober
  Normal   Started    56m                   kubelet            Started container exporter
  Normal   Started    56m                   kubelet            Started container prober
  Normal   Pulled     56m                   kubelet            Container image "polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-exporter:v1.7.0" already present on machine
  Normal   Created    56m                   kubelet            Created container: exporter
  Normal   Created    44m (x5 over 56m)     kubelet            Created container: engine
  Normal   Started    41m (x6 over 56m)     kubelet            Started container engine
  Normal   Killing    9m53s (x12 over 53m)  kubelet            Container engine failed startup probe, will be restarted
  Warning  BackOff    5m59s (x69 over 32m)  kubelet            Back-off restarting failed container engine in pod quick-start-nd4j-cdc-default-58f87889d7-5l7vg_default(d1791b94-b6d6-4781-89e6-374a83e08d7a)
  Normal   Pulled     4m43s (x13 over 56m)  kubelet            Container image "polardbx/polardbx-cdc:v2.4.0_5.4.19" already present on machine
  Warning  Unhealthy  63s (x238 over 56m)   kubelet            Startup probe failed: dial tcp 10.244.0.55:3007: connect: connection refused
qc@ubuntu ~/db/polardb/k8s $ kubectl get pod quick-start-nd4j-cdc-default-58f87889d7-5l7vg -o yaml | grep -A 10 "startupProbe"
    startupProbe:
      failureThreshold: 18
      initialDelaySeconds: 10
      periodSeconds: 10
      successThreshold: 1
      tcpSocket:
        port: 3007
      timeoutSeconds: 10
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ kubectl logs quick-start-nd4j-cdc-default-58f87889d7-5l7vg -c engine --previous
su: failed to execute /bin/bash: Resource temporarily unavailable
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ kubectl exec -it quick-start-nd4j-cdc-default-58f87889d7-5l7vg -c engine -- netstat -tuln
error: Internal error occurred: unable to upgrade connection: container not found ("engine")
qc@ubuntu ~/db/polardb/k8s $ 
qc@ubuntu ~/db/polardb/k8s $ kubectl patch pod quick-start-nd4j-cdc-default-58f87889d7-5l7vg -p '{"spec":{"containers":[{"name":"engine","startupProbe":null}]}}'
The Pod "quick-start-nd4j-cdc-default-58f87889d7-5l7vg" is invalid: spec: Forbidden: pod updates may not change fields other than `spec.containers[*].image`,`spec.initContainers[*].image`,`spec.activeDeadlineSeconds`,`spec.tolerations` (only additions to existing tolerations),`spec.terminationGracePeriodSeconds` (allow it to be set to 1 if it was previously negative)
@@ -695,21 +695,7 @@
     "TerminationGracePeriodSeconds": null
    },
    "ReadinessProbe": null,
-   "StartupProbe": {
-    "Exec": null,
-    "HTTPGet": null,
-    "TCPSocket": {
-     "Port": 3007,
-     "Host": ""
-    },
-    "GRPC": null,
-    "InitialDelaySeconds": 10,
-    "TimeoutSeconds": 10,
-    "PeriodSeconds": 10,
-    "SuccessThreshold": 1,
-    "FailureThreshold": 18,
-    "TerminationGracePeriodSeconds": null
-   },
+   "StartupProbe": null,
    "Lifecycle": {
     "PostStart": {
      "Exec": {

qc@ubuntu ~/db/polardb/k8s $

暂时就先到这,不再浪费过多时间

已联系 dz 大佬,这周末(2026.1.17-18)他再验证下看看怎么解决

后续再更新这

顺便一提,虽然 cdc 没啦起来,可是 cn、dn、gms 节点都起来了,都是正常的,那就意味着 1 主 多从 是可以正常的,那我们去搞标准版吧


更新更新更新(上午发的,现在是下午更新,不过分吧)
后续来了,大佬说他无法复现,估计我这是特例
又回想起上午 p8 大神给我的指导提示:“是不是内存泄露, 为什么内存一直增长?”

索性,一不做二不休,杀掉全部进程,reboot 重启

没想到又神奇般的正常了,这说明了什么,玩这个需要要干净的环境搞,或者是内存足够大,我这 ubuntu desktop 开了很多进程,很拉了

现在直接上结果吧

  • 重启机器后,先拉起 minikube 吧
qc@ubuntu ~ $ minikube status
minikube
type: Control Plane
host: Stopped
kubelet: Stopped
apiserver: Stopped
kubeconfig: Stopped

qc@ubuntu ~ $ 

qc@ubuntu ~ $ cd k8s/
qc@ubuntu ~/k8s $ cat start.sh
#!/bin/sh

minikube start \
    --cpus=10 \
    --memory=20gb \
    --driver=docker \
    --image-mirror-country='cn' \
    --base-image='registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.48' \
    --kubernetes-version=v1.34.0

qc@ubuntu ~/k8s $ 
qc@ubuntu ~/k8s $ sh start.sh 
😄  minikube v1.37.0 on Ubuntu 25.10
✨  Using the docker driver based on existing profile
👍  Starting "minikube" primary control-plane node in "minikube" cluster
🚜  Pulling base image v0.0.48 ...
🔄  Restarting existing docker container for "minikube" ...
🌐  Found network options:
    ▪ NO_PROXY=localhost,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,172.17.0.0/12,192.168.0.0/16
🐳  Preparing Kubernetes v1.34.0 on Docker 28.4.0 ...
    ▪ env NO_PROXY=localhost,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,172.17.0.0/12,192.168.0.0/16
🔎  Verifying Kubernetes components...
    ▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
🌟  Enabled addons: default-storageclass, storage-provisioner
💡  kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
qc@ubuntu ~/k8s $ 
qc@ubuntu ~/k8s $ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

qc@ubuntu ~/k8s $ 
qc@ubuntu ~/k8s $ kubectl get po -A
NAMESPACE                  NAME                                           READY   STATUS             RESTARTS      AGE
kube-system                coredns-7ddb67b59b-9l4vs                       0/1     Running            1 (10m ago)   22h
kube-system                coredns-7ddb67b59b-m5kfn                       0/1     Running            1 (10m ago)   22h
kube-system                etcd-minikube                                  0/1     Running            1 (10m ago)   22h
kube-system                kube-apiserver-minikube                        0/1     Running            1 (17s ago)   22h
kube-system                kube-controller-manager-minikube               0/1     Running            1 (10m ago)   22h
kube-system                kube-proxy-tzqj8                               1/1     Running            1 (10m ago)   22h
kube-system                kube-scheduler-minikube                        0/1     Running            1 (10m ago)   22h
kube-system                storage-provisioner                            0/1     Error              2 (10m ago)   22h
polardbx-operator-system   polardbx-clinic-5bd8884b5f-p2spx               1/1     Running            1 (17s ago)   22h
polardbx-operator-system   polardbx-controller-manager-84bd69c857-l6hwd   1/1     Running            1 (10m ago)   22h
polardbx-operator-system   polardbx-hpfs-7w294                            0/1     CrashLoopBackOff   1 (7s ago)    22h
polardbx-operator-system   polardbx-tools-updater-pr6rn                   1/1     Running            1 (17s ago)   22h
qc@ubuntu ~/k8s $
  • 接下来,拉起分布式集群
qc@ubuntu ~/k8s $ cd ~/db/polardb/k8s/company/
qc@ubuntu ~/db/polardb/k8s/company $ cat quick-start_polardbx-on-k8s_2.4.2.yaml 
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
  name: quick-start
spec:
  topology:
    nodes:
      gms:
        template:
          image: polardbx/polardbx-engine:v2.4.2_8.4.19
          resources:
            requests:
              cpu: 1
              memory: 2Gi
            limits:
              cpu: 2
              memory: 4Gi
      cn:
        replicas: 1
        template:
          image: polardbx/polardbx-sql:v2.4.2_5.4.19
          resources:
            requests:
              cpu: 1
              memory: 2Gi
            limits:
              cpu: 2
              memory: 4Gi
      dn:
        replicas: 1
        template:
          image: polardbx/polardbx-engine:v2.4.2_8.4.19
          resources:
            requests:
              cpu: 1
              memory: 2Gi
            limits:
              cpu: 2
              memory: 4Gi
      cdc:
        replicas: 1
        template:
          image: polardbx/polardbx-cdc:v2.4.2_5.4.19
          resources:
            requests:
              cpu: 1
              memory: 2Gi
            limits:
              cpu: 2
              memory: 4Gi
qc@ubuntu ~/db/polardb/k8s/company $ 

qc@ubuntu ~/db/polardb/k8s/company $ kubectl apply -f quick-start_polardbx-on-k8s_2.4.2.yaml 
polardbxcluster.polardbx.aliyun.com/quick-start created
qc@ubuntu ~/db/polardb/k8s/company $ 

qc@ubuntu ~/db/polardb/k8s/company $ kubectl get polardbxcluster
NAME          GMS   CN    DN    CDC   COLUMNAR   PHASE      DISK   AGE
quick-start   0/1   0/1   0/1   0/1    -         Creating          35s
qc@ubuntu ~/db/polardb/k8s/company $ 
qc@ubuntu ~/db/polardb/k8s/company $ kubectl get polardbxcluster -w
NAME          GMS   CN    DN    CDC   COLUMNAR   PHASE      DISK   AGE
quick-start   0/1   0/1   0/1   0/1    -         Creating          38s

quick-start   0/1   0/1   1/1   0/1    -         Creating          43s
quick-start   0/1   0/1   0/1   0/1    -         Creating          45s
quick-start   0/1   0/1   1/1   0/1    -         Creating          48s
quick-start   1/1   0/1   1/1   0/1    -         Creating          63s
quick-start   0/1   0/1   1/1   0/1    -         Creating          65s
quick-start   1/1   0/1   1/1   0/1    -         Creating          67s
quick-start   1/1   0/1   1/1   1/1    -         Creating          84s
quick-start   1/1   1/1   1/1   1/1    -         Creating   7.4 GiB   114s
quick-start   1/1   1/1   1/1   1/1    -         Running    7.4 GiB   114s
quick-start   1/1   1/1   1/1   1/1    -         Running    7.5 GiB   2m55s
quick-start   1/1   1/1   1/1   1/1    -         Running    7.5 GiB   3m55s
^C
qc@ubuntu ~/db/polardb/k8s/company $ 

qc@ubuntu ~/db/polardb/k8s/company $ kubectl get po
NAME                                            READY   STATUS    RESTARTS   AGE
quick-start-d5h5-cdc-default-6bb656bd5b-d6k6z   3/3     Running   0          3m41s
quick-start-d5h5-cn-default-5d888c9d69-nrwn8    3/3     Running   0          3m41s
quick-start-d5h5-dn-0-cand-0                    3/3     Running   0          4m44s
quick-start-d5h5-dn-0-cand-1                    3/3     Running   0          4m44s
quick-start-d5h5-dn-0-log-0                     3/3     Running   0          4m44s
quick-start-d5h5-gms-cand-0                     3/3     Running   0          4m44s
quick-start-d5h5-gms-cand-1                     3/3     Running   0          4m44s
quick-start-d5h5-gms-log-0                      3/3     Running   0          4m44s
qc@ubuntu ~/db/polardb/k8s/company $ 
qc@ubuntu ~/db/polardb/k8s/company $ kubectl get svc
NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)              AGE
kubernetes                      ClusterIP   10.96.0.1       <none>        443/TCP              22h
quick-start                     ClusterIP   10.110.159.7    <none>        3306/TCP,8081/TCP    4m50s
quick-start-cdc-metrics         NodePort    10.104.0.250    <none>        8081:31307/TCP       4m50s
quick-start-d5h5-dn-0           ClusterIP   10.104.64.146   <none>        3306/TCP,31306/TCP   4m50s
quick-start-d5h5-dn-0-metrics   ClusterIP   10.102.20.117   <none>        8081/TCP             4m50s
quick-start-d5h5-dn-0-ro        ClusterIP   10.107.120.18   <none>        3306/TCP,31306/TCP   4m50s
quick-start-d5h5-gms            ClusterIP   10.107.0.158    <none>        3306/TCP,31306/TCP   4m50s
quick-start-d5h5-gms-metrics    ClusterIP   10.99.31.215    <none>        8081/TCP             4m50s
quick-start-d5h5-gms-ro         ClusterIP   10.101.66.107   <none>        3306/TCP,31306/TCP   4m50s
qc@ubuntu ~/db/polardb/k8s/company $ 
qc@ubuntu ~/db/polardb/k8s/company $ kubectl get po -o wide
NAME                                            READY   STATUS    RESTARTS   AGE     IP            NODE       NOMINATED NODE   READINESS GATES
quick-start-d5h5-cdc-default-6bb656bd5b-d6k6z   3/3     Running   0          3m56s   10.244.0.78   minikube   <none>           <none>
quick-start-d5h5-cn-default-5d888c9d69-nrwn8    3/3     Running   0          3m56s   10.244.0.77   minikube   <none>           <none>
quick-start-d5h5-dn-0-cand-0                    3/3     Running   0          4m59s   10.244.0.72   minikube   <none>           <none>
quick-start-d5h5-dn-0-cand-1                    3/3     Running   0          4m59s   10.244.0.76   minikube   <none>           <none>
quick-start-d5h5-dn-0-log-0                     3/3     Running   0          4m59s   10.244.0.74   minikube   <none>           <none>
quick-start-d5h5-gms-cand-0                     3/3     Running   0          4m59s   10.244.0.71   minikube   <none>           <none>
quick-start-d5h5-gms-cand-1                     3/3     Running   0          4m59s   10.244.0.73   minikube   <none>           <none>
quick-start-d5h5-gms-log-0                      3/3     Running   0          4m59s   10.244.0.75   minikube   <none>           <none>
qc@ubuntu ~/db/polardb/k8s/company $ 
qc@ubuntu ~/db/polardb/k8s/company $ kubectl get polardbxcluster
NAME          GMS   CN    DN    CDC   COLUMNAR   PHASE     DISK      AGE
quick-start   1/1   1/1   1/1   1/1    -         Running   7.5 GiB   8m58s
qc@ubuntu ~/db/polardb/k8s/company $ 

qc@ubuntu ~/db/polardb/k8s/company $ kubectl get polardbxcluster -o wide
NAME          PROTOCOL   GMS   CN    DN    CDC   COLUMNAR   PHASE     DISK      STAGE   REBALANCE   VERSION                                                      AGE
quick-start   8.0        1/1   1/1   1/1   1/1    -         Running   7.6 GiB                       8.0.3-PXC-5.4.19-20250825/8.0.32-X-Cluster-8.4.19-20250825   19m
qc@ubuntu ~/db/polardb/k8s/company $
  • 接下来我们连接验证
qc@ubuntu ~/db/polardb/k8s/company $ kubectl get svc quick-start
NAME          TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)             AGE
quick-start   ClusterIP   10.110.159.7   <none>        3306/TCP,8081/TCP   23m
qc@ubuntu ~/db/polardb/k8s/company $

使用 kubectl 提供的 port-forward 命名将服务的 3306 端口转发到本地,并且保持转发进程存活,使用 Ctrl-C 中断。

qc@ubuntu ~/db/polardb/k8s/company $ kubectl port-forward svc/quick-start 3306
Forwarding from 127.0.0.1:3306 -> 3306
Forwarding from [::1]:3306 -> 3306
Handling connection for 3306
Handling connection for 3306
Handling connection for 3306
Handling connection for 3306

确认端口是否真的转发

qc@ubuntu ~ $ netstat -antp|grep 3306
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      94410/kubectl       
tcp6       0      0 ::1:3306                :::*                    LISTEN      94410/kubectl       
qc@ubuntu ~ $ 
qc@ubuntu ~ $

查看默认帐号密码

qc@ubuntu ~ $ eval pxc=quick-start;eval user=$(kubectl get secret $pxc -o jsonpath={.data} | jq 'keys[0]'); echo "User: $user"; kubectl get secret $pxc -o jsonpath="{.data['$user']}" | base64 -d - | xargs echo "Password:"
User: polardbx_root
Password: fz5qtgts
qc@ubuntu ~ $

连接信息
IP: 127.0.0.1
Port: 3306
User: polardbx_root
Password: fz5qtgts

客户端连上以后测试

select version();
# 8.0.3-PXC-5.4.19-20250825
create database db1;
use db1;
create table tb1 (id int);
insert into db1.tb1 values (0),(1),(2);
select * from db1.tb1;

id
0
1
2

此时,我们中断 端口转发 Ctrl-C

qc@ubuntu ~/db/polardb/k8s/company $ kubectl port-forward svc/quick-start 3306
Forwarding from 127.0.0.1:3306 -> 3306
Forwarding from [::1]:3306 -> 3306
Handling connection for 3306
Handling connection for 3306
Handling connection for 3306
Handling connection for 3306
Handling connection for 3306
Handling connection for 3306
Handling connection for 3306
Handling connection for 3306
^C
qc@ubuntu ~/db/polardb/k8s/company $ 
qc@ubuntu ~/db/polardb/k8s/company $ netstat -antp|grep 3306
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:3306          127.0.0.1:42004         FIN_WAIT2   -                   
tcp6       1      0 127.0.0.1:42004         127.0.0.1:3306          CLOSE_WAIT  98440/java          
qc@ubuntu ~/db/polardb/k8s/company $

  • 销毁 polardbx 分布式集群
qc@ubuntu ~/db/polardb/k8s/company $ kubectl delete quick-start_polardbx-on-k8s.yaml



2.2 部署 PolarDB-X 标准版集群

PolarDB-X 标准版采用一主一备一日志的三节点架构,性价比高,通过多副本同步复制,确保数据的强一致性。面向具备超高并发、复杂查询及轻量分析的在线业务场景。 快速部署一个 PolarDB-X 标准版集群,它仅包含 1 个由三副本组成的DN节点。

  • 准备一个 quick-start.yaml 文件,将如下内容粘贴到文件中,并根据上述命令的结果更新 YAML 文件各个组件的image字段。
qc@ubuntu ~/db/polardb/k8s $ cd standard/
qc@ubuntu ~/db/polardb/k8s/standard $ cat quick-start_polardbx-on-k8s_2.4.2.yaml 
apiVersion: polardbx.aliyun.com/v1
kind: XStore
metadata:
  name: quick-start
spec:
  config:
    controller:
      RPCProtocolVersion: 1
  topology:
    nodeSets:
    - name: cand
      replicas: 2
      role: Candidate
      template:
        spec:
          image: polardbx/polardbx-engine:v2.4.2_8.4.19
          resources:
            limits:
              cpu: 2
              memory: 4Gi
    - name: log
      replicas: 1
      role: Voter
      template:
        spec:
          image: polardbx/polardbx-engine:v2.4.2_8.4.19
          resources:
            limits:
              cpu: 1
              memory: 2Gi
qc@ubuntu ~/db/polardb/k8s/standard $
  • 启动标准版集群
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl apply -f quick-start_polardbx-on-k8s_2.4.2.yaml 
xstore.polardbx.aliyun.com/quick-start created
qc@ubuntu ~/db/polardb/k8s/standard $ 
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get po
NAME                      READY   STATUS    RESTARTS   AGE
quick-start-v2sv-cand-0   1/3     Running   0          3s
quick-start-v2sv-cand-1   1/3     Running   0          3s
quick-start-v2sv-log-0    1/3     Running   0          3s
qc@ubuntu ~/db/polardb/k8s/standard $ 
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get xstore -w
NAME          LEADER   READY   PHASE      DISK   VERSION   AGE
quick-start            0/3     Creating   0 B              24s
quick-start            1/3     Creating   0 B              31s
quick-start            2/3     Creating   0 B              31s
quick-start   quick-start-v2sv-cand-1   3/3     Running    0 B    8.0.32-X-Cluster-8.4.19-20250825   33s
quick-start   quick-start-v2sv-cand-1   3/3     Running    3.7 GiB   8.0.32-X-Cluster-8.4.19-20250825   35s
^C
qc@ubuntu ~/db/polardb/k8s/standard $ 
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get po 
NAME                      READY   STATUS    RESTARTS   AGE
quick-start-v2sv-cand-0   3/3     Running   0          61s
quick-start-v2sv-cand-1   3/3     Running   0          61s
quick-start-v2sv-log-0    3/3     Running   0          61s
qc@ubuntu ~/db/polardb/k8s/standard $ 
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get po -o wide
NAME                      READY   STATUS    RESTARTS   AGE   IP            NODE       NOMINATED NODE   READINESS GATES
quick-start-v2sv-cand-0   3/3     Running   0          65s   10.244.0.63   minikube   <none>           <none>
quick-start-v2sv-cand-1   3/3     Running   0          65s   10.244.0.62   minikube   <none>           <none>
quick-start-v2sv-log-0    3/3     Running   0          65s   10.244.0.64   minikube   <none>           <none>
qc@ubuntu ~/db/polardb/k8s/standard $ 
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get svc
NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                          AGE
kubernetes            ClusterIP   10.96.0.1        <none>        443/TCP                          18h
quick-start           NodePort    10.99.252.110    <none>        3306:32028/TCP,31306:31525/TCP   75s
quick-start-metrics   ClusterIP   10.111.120.136   <none>        8081/TCP                         75s
quick-start-ro        NodePort    10.99.118.9      <none>        3306:32045/TCP,31306:30886/TCP   75s
qc@ubuntu ~/db/polardb/k8s/standard $
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get xstore
NAME          LEADER                    READY   PHASE     DISK      VERSION                            AGE
quick-start   quick-start-v2sv-cand-1   3/3     Running   3.7 GiB   8.0.32-X-Cluster-8.4.19-20250825   23m
qc@ubuntu ~/db/polardb/k8s/standard $ 
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get po
NAME                      READY   STATUS    RESTARTS   AGE
quick-start-v2sv-cand-0   3/3     Running   0          24m
quick-start-v2sv-cand-1   3/3     Running   0          24m
quick-start-v2sv-log-0    3/3     Running   0          24m
qc@ubuntu ~/db/polardb/k8s/standard $ 
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get po -o wide
NAME                      READY   STATUS    RESTARTS   AGE   IP            NODE       NOMINATED NODE   READINESS GATES
quick-start-v2sv-cand-0   3/3     Running   0          24m   10.244.0.63   minikube   <none>           <none>
quick-start-v2sv-cand-1   3/3     Running   0          24m   10.244.0.62   minikube   <none>           <none>
quick-start-v2sv-log-0    3/3     Running   0          24m   10.244.0.64   minikube   <none>           <none>
qc@ubuntu ~/db/polardb/k8s/standard $ 
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get svc
NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                          AGE
kubernetes            ClusterIP   10.96.0.1        <none>        443/TCP                          18h
quick-start           NodePort    10.99.252.110    <none>        3306:32028/TCP,31306:31525/TCP   24m
quick-start-metrics   ClusterIP   10.111.120.136   <none>        8081/TCP                         24m
quick-start-ro        NodePort    10.99.118.9      <none>        3306:32045/TCP,31306:30886/TCP   24m
qc@ubuntu ~/db/polardb/k8s/standard $
  • 获取基本连接信息
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get svc quick-start
NAME          TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                          AGE
quick-start   NodePort   10.99.252.110   <none>        3306:32028/TCP,31306:31525/TCP   4m43s
qc@ubuntu ~/db/polardb/k8s/standard $ 

qc@ubuntu ~/db/polardb/k8s/standard $ minikube ip 
192.168.49.2
qc@ubuntu ~/db/polardb/k8s/standard $ 

qc@ubuntu ~/db/polardb/k8s/standard $ telnet 192.168.49.2 32028
Trying 192.168.49.2...
Connected to 192.168.49.2.
Escape character is '^]'.
d
?XPmysql_native_password20250825\/WK

!#08S01Got packets out of orderConnection closed by foreign host.
qc@ubuntu ~/db/polardb/k8s/standard $ 

qc@ubuntu ~/db/polardb/k8s/standard $ eval pxc=quick-start;eval user=$(kubectl get secret $pxc -o jsonpath={.data} | jq 'keys[0]'); echo "User: $user"; kubectl get secret $pxc -o jsonpath="{.data['$user']}" | base64 -d - | xargs echo "Password:"
User: admin
Password: cctlrgjj
qc@ubuntu ~/db/polardb/k8s/standard $
  • 使用客户端连接工具

IP: 192.168.49.2
Port: 32028
User: admin
Password: cctlrgjj

select version();
-- 8.0.32-X-Cluster-8.4.19-20250825

select host,user from mysql.user;
-- host,user
-- %,admin
-- localhost,mysql.infoschema
-- localhost,mysql.session
-- localhost,mysql.sys
-- localhost,root

create database db1;

use db1;

create table tb1 (id int);

insert into db1.tb1 values (0),(1),(2);

select * from db1.tb1;
-- id
-- 0
-- 1
-- 2
  • 销毁 polardb-x 集群
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl delete -f quick-start_polardbx-on-k8s_2.4.2.yaml 
xstore.polardbx.aliyun.com "quick-start" deleted from default namespace
qc@ubuntu ~/db/polardb/k8s/standard $ 
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get po
No resources found in default namespace.
qc@ubuntu ~/db/polardb/k8s/standard $ 
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get xstore
No resources found in default namespace.
qc@ubuntu ~/db/polardb/k8s/standard $ 
qc@ubuntu ~/db/polardb/k8s/standard $ kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   18h
qc@ubuntu ~/db/polardb/k8s/standard $

好了,到这基本就结束了,完结撒花!

总的来说,k8s 玩法也不是很复杂,不推荐这种方式上生产,当然非得上生产的那就另当别论了。

以下是来自 ali 某 p8 数据库技术专家个人的观点
专家说:“数据库是拿来用的不是拿来折腾的.”。
专家还说:“我从来不用分布式,给自己找麻烦”


另外,吐嘈一下 k8s,前些年刚被炒作出来的时候,一时风靡全网,云原生、devops、降本增效,其实就是一个噱头。
这位在微服务无状态的情况下可以使用,本质还是 Dcokerfile 打镜像,然后流水线灰度发布,CI/CD,结合 Gitlab + Jenkis 很方便,对于 Java 开发人员来说。
数据库、大数据、AI等应用,生产环境强烈不推荐上 k8s,当然大厂除外,因为有专业技术团队(研发、运维)支撑。
曾经2024年4月在深圳某设计研究院(甲方)搞过所谓的“AI 大模型”,某外司搞得底层就是依赖 k8s,当然该院是离线环境咯,离线场景下玩 k8s,你品你细品,美其名曰:训练模型,实际上就是搞得 pod 容器 调用 CPU、内存、GPU 这些资源,容器里面跑 python,某外司拿着 开源 jupyter notbook 嵌套了一层,加个页面,说这是模型,108个模型(不知从哪里搜罗来的 python 代码),真是无稽之谈,本身单机单卡做训练就很拉了,做成 k8s 容器化 虚拟化 性能更弱,使用起来更卡,而且甲方几十号人使用,更卡了,啥也不是,玩个锤子,不过甲方需要啊,课题啊论文啊,甲方不需要研究出来什么东西,都是付费模式了,你糊弄我,我糊弄你。
特别是数据库这种有状态的底层基座,非常不建议上 k8s,当然了,又会有人说,云原生数据库,那就另当别论咯。


我们下期见!拜拜!

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
22天前
|
Ubuntu Linux 数据库
Linux 环境 Docker 安装 Polardb-X 数据库 容器 教程
本文介绍如何通过 Docker 快速部署 Polardb-X 数据库容器,实现一键启动。涵盖镜像拉取、容器运行、登录验证等步骤,操作简便,适用于快速开发与测试环境。附往期7篇主流系统安装教程。
212 5
|
28天前
|
Linux 数据库
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
本文介绍在CentOS 7.9环境下安装PolarDB-X单机版数据库的完整流程,涵盖系统环境准备、本地Yum源配置、RPM包安装、用户与目录初始化、依赖库解决、数据库启动及客户端连接等步骤,助您快速部署运行PolarDB-X。
523 1
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
|
23天前
|
Java Linux 数据库连接
PolarDB-X 集中式三节点高可用集群部署 & Java 场景 CRUD 应用
本文介绍在CentOS 7.9、openEuler 20.03及银河麒麟V10上部署PolarDB-X三节点高可用集群的完整过程,涵盖环境准备、配置文件设置、集群初始化与启动,并通过Java应用实现CRUD操作验证。集群支持自动主备切换,确保服务高可用,适用于生产环境数据库架构搭建与学习参考。
311 0
|
22天前
|
Ubuntu Java Linux
ARM Linux 环境 国产 华为 欧拉 openEuler 20.03 操作系统安装 Polardb-X 数据库 单机版 rpm 包 教程
本文介绍在ARM64架构的openEuler 20.03系统上,通过RPM包安装部署PolarDB-X单节点数据库的完整过程,涵盖环境准备、RPM安装、用户配置、数据库初始化及启动连接等步骤,助力用户在国产化软硬件平台上快速搭建PolarDB-X运行环境。
265 1
|
28天前
|
Linux 数据库
Linux 环境 国产银河麒麟V10操作系统安装 Polardb-X 数据库 单机版 rpm 包 教程
本文介绍在国产银河麒麟V10操作系统上安装Polardb-X单机版数据库的完整过程。基于RPM包方式部署,步骤与CentOS 7.9类似,涵盖系统环境确认、依赖安装、用户配置、初始化数据目录及启动服务等关键环节,并通过命令验证运行状态,助力国产化平台数据库搭建。
388 0
|
28天前
|
Linux 数据库
Linux 环境 国产 华为 欧拉 openEuler 20.03 操作系统安装 Polardb-X 数据库 单机版 rpm 包 教程
本文为华为欧拉openEuler 20.03操作系统下Polardb-X单机版RPM包安装教程,继CentOS 7.9与银河麒麟V10后,延续相似步骤,详述环境准备、依赖安装、配置初始化及服务启动全过程,助力国产化平台数据库部署。作者张阳,资深从业者,欢迎交流。
252 5
|
SQL Kubernetes 关系型数据库
如何一键安装部署PolarDB-X
《PolarDB-X 动手实践》系列第一期,体验如何一键安装部署PolarDB-X。
|
4月前
|
SQL 关系型数据库 MySQL
开源新发布|PolarDB-X v2.4.2开源生态适配升级
PolarDB-X v2.4.2开源发布,重点完善生态能力:新增客户端驱动、开源polardbx-proxy组件,支持读写分离与高可用;强化DDL变更、扩缩容等运维能力,并兼容MySQL主备复制及MCP AI生态。
开源新发布|PolarDB-X v2.4.2开源生态适配升级
|
2月前
|
监控 安全 Unix
iOS 崩溃排查不再靠猜!这份分层捕获指南请收好
从 Mach 内核异常到 NSException,从堆栈遍历到僵尸对象检测,阿里云 RUM iOS SDK 基于 KSCrash 构建了一套完整、异步安全、生产可用的崩溃捕获体系,让每一个线上崩溃都能被精准定位。
616 71

热门文章

最新文章