install polardb-x by k8s (minikube)
好习惯,附上之前 8 篇
CentOS 7.9 环境安装 PolarDB-X 数据库: https://developer.aliyun.com/article/1704678
银河麒麟V10操作系统安装 Polardb-X 数据库: https://developer.aliyun.com/article/1704731
欧拉 openEuler 20.03 操作系统安装 Polardb-X 数据库: https://developer.aliyun.com/article/1704866
PolarDB-X 集中式三节点高可用集群部署 & Java 场景 CRUD 应用: https://developer.aliyun.com/article/1705878
Ubuntu 18.04.6 操作系统安装 Polardb-X 数据库: https://developer.aliyun.com/article/1706016
ARM 欧拉 openEuler 20.03 操作系统安装 Polardb-X 数据库: https://developer.aliyun.com/article/1706028
Debian 10 操作系统安装 Polardb-X 数据库: https://developer.aliyun.com/article/1706119
Docker 安装 Polardb-X 数据库 容器 教程: https://developer.aliyun.com/article/1706151
参考
K8S 部署 PolarDB-X 集群(官方文档 1)
https://www.polardbx.com/document?spm=a2c6h.12873639.article-detail.6.72975cdePGFi9p&type=PolarDB-X通过 Kubernetes 部署 PolarDB-X 数据库(官方文档 2)
https://doc.polardbx.com/zh/deployment/topics/deploy-by-k8s.html
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,当然了,又会有人说,云原生数据库,那就另当别论咯。
我们下期见!拜拜!