首页 > 数据库 > > 在 Minikube 集群上部署 TiDB 集群
Minikube 可以让你在个人电脑上的虚拟机中创建一个 Kubernetes 集群,支持 macOS、Linux 和 Windows 系统。本文介绍如何在 Minikube 集群上部署 TiDB 集群。
警告:
对于生产环境,不要使用此方式进行部署。
尽管 Minikube 支持通过
--vm-driver=none选项使用主机 Docker 而不使用虚拟机,但是目前尚没有针对 TiDB Operator 做过全面的测试,可能会无法正常工作。如果你想在不支持虚拟化的系统(例如,VPS)上试用 TiDB Operator,可以考虑使用 kind。
参考安装 Minikube,在你的机器上安装 Minikube 1.0.0+。
安装完 Minikube 后,可以执行下面命令启动一个 Kubernetes 集群:
minikube start
对于中国大陆用户,可以使用国内 gcr.io mirror 仓库,例如 registry.cn-hangzhou.aliyuncs.com/google_containers。
minikube start --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
或者给 Docker 配置 HTTP/HTTPS 代理。
将下面命令中的 127.0.0.1:1086 替换为你自己的 HTTP/HTTPS 代理地址:
minikube start --docker-env https_proxy=http://127.0.0.1:1086 \
--docker-env http_proxy=http://127.0.0.1:1086
注意:
由于 Minikube 通过虚拟机(默认)运行,
127.0.0.1是虚拟机本身,有些情况下你可能想要使用你的主机的实际 IP。
参考 Minikube setup 查看配置虚拟机和 Kubernetes 集群的更多选项。
Kubernetes 命令行工具 kubectl,可以让你执行命令访问 Kubernetes 集群。
参考 Install and Set Up kubectl 安装和配置 kubectl。
kubectl 安装完成后,测试 Minikube Kubernetes 集群:
kubectl cluster-info
Helm 是一个 Kubernetes 的包管理工具,确保安装的 Helm 版本为 >= 2.11.0 && < 3.0.0 && != 2.16.4。安装步骤如下:
参考官方文档安装 Helm 客户端
安装 Helm 服务端
在集群中应用 Helm 服务端组件 tiller 所需的 RBAC 规则,并安装 tiller:
kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/manifests/tiller-rbac.yaml && \
helm init --service-account=tiller --upgrade
通过下面命令确认 tiller Pod 进入 running 状态:
kubectl get po -n kube-system -l name=tiller
通过下面的命令添加仓库:
helm repo add pingcap https://charts.pingcap.org/
添加完成后,可以使用 helm search 搜索 PingCAP 提供的 chart:
helm search pingcap -l
TiDB Operator 使用 CRD (Custom Resource Definition) 扩展 Kubernetes,所以要使用 TiDB Operator,必须先创建 TidbCluster 等各种自定义资源类型:
kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/manifests/crd.yaml && \
kubectl get crd tidbclusters.pingcap.com
创建 TidbCluster 自定义资源类型后,接下来在 Kubernetes 集群上安装 TiDB Operator。
获取你要安装的 tidb-operator chart 中的 values.yaml 文件:
mkdir -p /home/tidb/tidb-operator && \
helm inspect values pingcap/tidb-operator --version=v1.1.0-rc.1 > /home/tidb/tidb-operator/values-tidb-operator.yaml
按需修改 values.yaml 文件中的配置。
安装 TiDB Operator
helm install pingcap/tidb-operator --name=tidb-operator --namespace=tidb-admin --version=v1.1.0-rc.1 -f /home/tidb/tidb-operator/values-tidb-operator.yaml && \
kubectl get po -n tidb-admin -l app.kubernetes.io/name=tidb-operator
通过下面命令部署 TiDB 集群:
创建 Namespace:
kubectl create namespace demo
部署 TiDB 集群:
kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic/tidb-cluster.yaml -n demo
部署 TiDB 集群监控:
kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic/tidb-monitor.yaml -n demo
通过下面命令查看 Pod 状态:
kubectl get po -n demo
测试 TiDB 集群之前,请确保已经安装 MySQL 客户端。从 Pod 启动、运行到服务可以访问有一些延时,可以通过下面命令查看服务:
kubectl get svc -n demo --watch
如果看到 basic-tidb 出现,说明服务已经可以访问,可以 Ctrl+C 停止。
按照以下步骤访问 TiDB 集群:
转发本地端口到 TiDB 端口。
kubectl -n demo port-forward svc/basic-tidb 4000:4000
在另一个终端窗口中,通过 MySQL 客户端访问 TiDB:
mysql -h 127.0.0.1 -P 4000 -uroot
或者可以直接执行 SQL 命令:
mysql -h 127.0.0.1 -P 4000 -uroot -e 'select tidb_version();'
按照以下步骤监控 TiDB 集群状态:
转发本地端口到 Grafana 端口。
kubectl -n demo port-forward svc/basic-grafana 3000:3000
打开浏览器,通过 http://localhost:3000 访问 Grafana。
或者,Minikube 提供了 minikube service 的方式暴露 Grafana 服务,可以更方便的接入。
minikube service basic-grafana -n demo
上述命令会自动搭建代理并在浏览器中打开 Grafana。
要删除 TiDB 集群,执行以下命令:
kubectl delete tc basic -n demo
要删除监控组件,执行以下命令:
kubectl delete tidbmonitor basic -n demo
更新 demo 集群使用的 PV 的 reclaim 策略为 Delete:
kubectl get pv -l app.kubernetes.io/instance=basic -o name | xargs -I {} kubectl patch {} -p '{"spec":{"persistentVolumeReclaimPolicy":"Delete"}}'
删除 PVC:
kubectl delete pvc -l app.kubernetes.io/managed-by=tidb-operator
Minikube 虚拟机默认配置为 2048 MB 内存和 2 个 CPU。可以在 minikube start 时通过--memory 和 --cpus 选项为其分配更多资源。注意,为了使配置修改生效,你需要重新创建 Minikube 虚拟机。
minikube delete && \
minikube start --cpus 4 --memory 4096 ...
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3149522/ ,如需转载,请注明出处,否则将追究法律责任。