未验证 提交 10266ec7 编写于 作者: sangshuduo's avatar sangshuduo 提交者: GitHub

docs: update k8s doc for 3.0 (#15852)

* docs: update k8s doc for 3.0

* docs: update 03-k8s.md
上级 659771ae
...@@ -3,27 +3,11 @@ sidebar_label: Kubernetes ...@@ -3,27 +3,11 @@ sidebar_label: Kubernetes
title: 在 Kubernetes 上部署 TDengine 集群 title: 在 Kubernetes 上部署 TDengine 集群
--- ---
## 配置 ConfigMap 以下配置文件可以从 [GitHub 仓库](https://github.com/taosdata/TDengine-Operator/tree/3.0/src/tdengine) 下载。
为 TDengine 创建 `taoscfg.yaml`,此文件中的配置将作为环境变量传入 TDengine 镜像,更新此配置将导致所有 TDengine POD 重启。 ## 配置 Service 服务
```yaml 创建一个 Service 配置文件:`taosd-service.yaml`,服务名称 `metadata.name` (此处为 "taosd") 将在下一步中使用到。添加 TDengine 所用到的所有端口:
---
apiVersion: v1
kind: ConfigMap
metadata:
name: taoscfg
labels:
app: tdengine
data:
CLUSTER: "1"
TAOS_KEEP: "3650"
TAOS_DEBUG_FLAG: "135"
```
## 配置服务
创建一个 service 配置文件:`taosd-service.yaml`,服务名称 `metadata.name` (此处为 "taosd") 将在下一步中使用到。添加 TDengine 所用到的所有端口:
```yaml ```yaml
--- ---
...@@ -38,45 +22,9 @@ spec: ...@@ -38,45 +22,9 @@ spec:
- name: tcp6030 - name: tcp6030
protocol: "TCP" protocol: "TCP"
port: 6030 port: 6030
- name: tcp6035
protocol: "TCP"
port: 6035
- name: tcp6041 - name: tcp6041
protocol: "TCP" protocol: "TCP"
port: 6041 port: 6041
- name: udp6030
protocol: "UDP"
port: 6030
- name: udp6031
protocol: "UDP"
port: 6031
- name: udp6032
protocol: "UDP"
port: 6032
- name: udp6033
protocol: "UDP"
port: 6033
- name: udp6034
protocol: "UDP"
port: 6034
- name: udp6035
protocol: "UDP"
port: 6035
- name: udp6036
protocol: "UDP"
port: 6036
- name: udp6037
protocol: "UDP"
port: 6037
- name: udp6038
protocol: "UDP"
port: 6038
- name: udp6039
protocol: "UDP"
port: 6039
- name: udp6040
protocol: "UDP"
port: 6040
selector: selector:
app: "tdengine" app: "tdengine"
``` ```
...@@ -109,7 +57,7 @@ spec: ...@@ -109,7 +57,7 @@ spec:
spec: spec:
containers: containers:
- name: "tdengine" - name: "tdengine"
image: "zitsen/taosd:develop" image: "tdengine/tdengine:3.0.0.0"
imagePullPolicy: "Always" imagePullPolicy: "Always"
envFrom: envFrom:
- configMapRef: - configMapRef:
...@@ -118,45 +66,9 @@ spec: ...@@ -118,45 +66,9 @@ spec:
- name: tcp6030 - name: tcp6030
protocol: "TCP" protocol: "TCP"
containerPort: 6030 containerPort: 6030
- name: tcp6035
protocol: "TCP"
containerPort: 6035
- name: tcp6041 - name: tcp6041
protocol: "TCP" protocol: "TCP"
containerPort: 6041 containerPort: 6041
- name: udp6030
protocol: "UDP"
containerPort: 6030
- name: udp6031
protocol: "UDP"
containerPort: 6031
- name: udp6032
protocol: "UDP"
containerPort: 6032
- name: udp6033
protocol: "UDP"
containerPort: 6033
- name: udp6034
protocol: "UDP"
containerPort: 6034
- name: udp6035
protocol: "UDP"
containerPort: 6035
- name: udp6036
protocol: "UDP"
containerPort: 6036
- name: udp6037
protocol: "UDP"
containerPort: 6037
- name: udp6038
protocol: "UDP"
containerPort: 6038
- name: udp6039
protocol: "UDP"
containerPort: 6039
- name: udp6040
protocol: "UDP"
containerPort: 6040
env: env:
# POD_NAME for FQDN config # POD_NAME for FQDN config
- name: POD_NAME - name: POD_NAME
...@@ -190,14 +102,13 @@ spec: ...@@ -190,14 +102,13 @@ spec:
readinessProbe: readinessProbe:
exec: exec:
command: command:
- taos - taos-check
- -s
- "show mnodes"
initialDelaySeconds: 5 initialDelaySeconds: 5
timeoutSeconds: 5000 timeoutSeconds: 5000
livenessProbe: livenessProbe:
tcpSocket: exec:
port: 6030 command:
- taos-check
initialDelaySeconds: 15 initialDelaySeconds: 15
periodSeconds: 20 periodSeconds: 20
volumeClaimTemplates: volumeClaimTemplates:
...@@ -206,44 +117,78 @@ spec: ...@@ -206,44 +117,78 @@ spec:
spec: spec:
accessModes: accessModes:
- "ReadWriteOnce" - "ReadWriteOnce"
storageClassName: "csi-rbd-sc" storageClassName: "standard"
resources: resources:
requests: requests:
storage: "10Gi" storage: "10Gi"
``` ```
## 启动集群 ## 使用 kubectl 命令部署 TDengine 集群
将前述三个文件添加到 Kubernetes 集群中: 顺序执行以下命令。
```bash ```bash
kubectl apply -f taoscfg.yaml
kubectl apply -f taosd-service.yaml kubectl apply -f taosd-service.yaml
kubectl apply -f tdengine.yaml kubectl apply -f tdengine.yaml
``` ```
上面的配置将生成一个两节点的 TDengine 集群,dnode 是自动配置的,可以使用 `show dnodes` 命令查看当前集群的节点: 上面的配置将生成一个三节点的 TDengine 集群,dnode 是自动配置的,可以使用 show dnodes 命令查看当前集群的节点:
```bash ```bash
kubectl exec -i -t tdengine-0 -- taos -s "show dnodes" kubectl exec -i -t tdengine-0 -- taos -s "show dnodes"
kubectl exec -i -t tdengine-1 -- taos -s "show dnodes" kubectl exec -i -t tdengine-1 -- taos -s "show dnodes"
kubectl exec -i -t tdengine-2 -- taos -s "show dnodes"
``` ```
输出如下: 输出如下:
``` ```
Welcome to the TDengine shell from Linux, Client Version:2.1.1.0 Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
Copyright (c) 2020 by TAOS Data, Inc. All rights reserved. Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
taos> show dnodes taos> show dnodes
id | end_point | vnodes | cores | status | role | create_time | offline reason | id | endpoint | vnodes | support_vnodes | status | create_time | note |
====================================================================================================================================== ============================================================================================================================================
1 | tdengine-0.taosd.default.sv... | 1 | 40 | ready | any | 2021-06-01 17:13:24.181 | | 1 | tdengine-0.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:14:57.285 | |
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 17:14:09.257 | | 2 | tdengine-1.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:11.302 | |
Query OK, 2 row(s) in set (0.000997s) 3 | tdengine-2.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:23.290 | |
Query OK, 3 rows in database (0.003655s)
```
## 使能端口转发
利用 kubectl 端口转发功能可以使应用可以访问 Kubernetes 环境运行的 TDengine 集群。
```
kubectl port-forward tdengine-0 6041:6041 &
```
使用 curl 命令验证 TDengine REST API 使用的 6041 接口。
```
$ curl -u root:taosdata -d "show databases" 127.0.0.1:6041/rest/sql
Handling connection for 6041
{"code":0,"column_meta":[["name","VARCHAR",64],["create_time","TIMESTAMP",8],["vgroups","SMALLINT",2],["ntables","BIGINT",8],["replica","TINYINT",1],["strict","VARCHAR",4],["duration","VARCHAR",10],["keep","VARCHAR",32],["buffer","INT",4],["pagesize","INT",4],["pages","INT",4],["minrows","INT",4],["maxrows","INT",4],["comp","TINYINT",1],["precision","VARCHAR",2],["status","VARCHAR",10],["retention","VARCHAR",60],["single_stable","BOOL",1],["cachemodel","VARCHAR",11],["cachesize","INT",4],["wal_level","TINYINT",1],["wal_fsync_period","INT",4],["wal_retention_period","INT",4],["wal_retention_size","BIGINT",8],["wal_roll_period","INT",4],["wal_segment_size","BIGINT",8]],"data":[["information_schema",null,null,16,null,null,null,null,null,null,null,null,null,null,null,"ready",null,null,null,null,null,null,null,null,null,null],["performance_schema",null,null,10,null,null,null,null,null,null,null,null,null,null,null,"ready",null,null,null,null,null,null,null,null,null,null]],"rows":2}
```
## 使用 dashboard 进行图形化管理
minikube 提供 dashboard 命令支持图形化管理界面。
```
$ minikube dashboard
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
* Opening http://127.0.0.1:46617/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
http://127.0.0.1:46617/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
```
对于某些公有云环境,minikube 绑定在 127.0.0.1 IP 地址上无法通过远程访问,需要使用 kubectl proxy 命令将端口映射到 0.0.0.0 IP 地址上,再通过浏览器访问虚拟机公网 IP 和端口以及相同的 dashboard URL 路径即可远程访问 dashboard。
```
$ kubectl proxy --accept-hosts='^.*$' --address='0.0.0.0'
``` ```
## 集群扩容 ## 集群扩容
...@@ -252,14 +197,12 @@ TDengine 集群支持自动扩容: ...@@ -252,14 +197,12 @@ TDengine 集群支持自动扩容:
```bash ```bash
kubectl scale statefulsets tdengine --replicas=4 kubectl scale statefulsets tdengine --replicas=4
``` ```
上面命令行中参数 `--replica=4` 表示要将 TDengine 集群扩容到 4 个节点,执行后首先检查 POD 的状态: 上面命令行中参数 `--replica=4` 表示要将 TDengine 集群扩容到 4 个节点,执行后首先检查 POD 的状态:
```bash ```bash
kubectl get pods -l app=tdengine kubectl get pods -l app=tdengine
``` ```
输出如下: 输出如下:
...@@ -270,102 +213,112 @@ tdengine-0 1/1 Running 0 161m ...@@ -270,102 +213,112 @@ tdengine-0 1/1 Running 0 161m
tdengine-1 1/1 Running 0 161m tdengine-1 1/1 Running 0 161m
tdengine-2 1/1 Running 0 32m tdengine-2 1/1 Running 0 32m
tdengine-3 1/1 Running 0 32m tdengine-3 1/1 Running 0 32m
``` ```
此时 POD 的状态仍然是 Running,TDengine 集群中的 dnode 状态要等 POD 状态为 `ready` 之后才能看到: 此时 POD 的状态仍然是 Running,TDengine 集群中的 dnode 状态要等 POD 状态为 `ready` 之后才能看到:
```bash ```bash
kubectl exec -i -t tdengine-0 -- taos -s "show dnodes" kubectl exec -i -t tdengine-3 -- taos -s "show dnodes"
``` ```
扩容后的四节点 TDengine 集群的 dnode 列表: 扩容后的四节点 TDengine 集群的 dnode 列表:
``` ```
Welcome to the TDengine shell from Linux, Client Version:2.1.1.0 Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
Copyright (c) 2020 by TAOS Data, Inc. All rights reserved. Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
taos> show dnodes taos> show dnodes
id | end_point | vnodes | cores | status | role | create_time | offline reason | id | endpoint | vnodes | support_vnodes | status | create_time | note |
====================================================================================================================================== ============================================================================================================================================
1 | tdengine-0.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 11:58:12.915 | | 1 | tdengine-0.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:14:57.285 | |
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 11:58:33.127 | | 2 | tdengine-1.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:11.302 | |
3 | tdengine-2.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 14:07:27.078 | | 3 | tdengine-2.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:23.290 | |
4 | tdengine-3.taosd.default.sv... | 1 | 40 | ready | any | 2021-06-01 14:07:48.362 | | 4 | tdengine-3.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:33:16.039 | |
Query OK, 4 row(s) in set (0.001293s) Query OK, 4 rows in database (0.008377s)
``` ```
## 集群缩容 ## 集群缩容
TDengine 的缩容并没有自动化,我们尝试将一个三节点集群缩容到两节点。 由于 TDengine 集群在扩缩容时会对数据进行节点间迁移,使用 kubectl 命令进行缩容需要首先使用 "drop dnodes" 命令,节点删除完成后再进行 Kubernetes 集群缩容。
首先,确认一个三节点 TDengine 集群正常工作,在 TDengine CLI 中查看 dnode 的状态:
```bash 注意:由于 Kubernetes Statefulset 中 Pod 的只能按创建顺序逆序移除,所以 TDengine drop dnode 也需要按照创建顺序逆序移除,否则会导致 Pod 处于错误状态。
taos> show dnodes
id | end_point | vnodes | cores | status | role | create_time | offline reason |
======================================================================================================================================
1 | tdengine-0.taosd.default.sv... | 1 | 40 | ready | any | 2021-06-01 16:27:24.852 | |
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 16:27:53.339 | |
3 | tdengine-2.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 16:28:49.787 | |
Query OK, 3 row(s) in set (0.001101s)
``` ```
$ kubectl exec -i -t tdengine-0 -- taos -s "drop dnode 4"
想要安全的缩容,首先需要将节点从 dnode 列表中移除,也即从集群中移除: ```
```bash ```bash
kubectl exec -i -t tdengine-0 -- taos -s "drop dnode 'tdengine-2.taosd.default.svc.cluster.local:6030'" $ kubectl exec -it tdengine-0 -- taos -s "show dnodes"
``` Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
通过 `show dondes` 命令确认移除成功后,移除相应的 POD: taos> show dnodes
id | endpoint | vnodes | support_vnodes | status | create_time | note |
============================================================================================================================================
1 | tdengine-0.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:14:57.285 | |
2 | tdengine-1.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:11.302 | |
3 | tdengine-2.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:23.290 | |
Query OK, 3 rows in database (0.004861s)
```
```bash 确认移除成功后(使用 kubectl exec -i -t tdengine-0 -- taos -s "show dnodes" 查看和确认 dnode 列表),使用 kubectl 命令移除 POD:
kubectl scale statefulsets tdengine --replicas=2
```
kubectl scale statefulsets tdengine --replicas=3
``` ```
最后一个 POD 会被删除,使用 `kubectl get pods -l app=tdengine` 查看集群状态: 最后一个 POD 将会被删除。使用命令 kubectl get pods -l app=tdengine 查看POD状态:
``` ```
NAME READY STATUS RESTARTS AGE $ kubectl get pods -l app=tdengine
tdengine-0 1/1 Running 0 3h40m NAME READY STATUS RESTARTS AGE
tdengine-1 1/1 Running 0 3h40m tdengine-0 1/1 Running 0 4m7s
tdengine-1 1/1 Running 0 3m55s
tdengine-2 1/1 Running 0 2m28s
``` ```
POD 删除后,需要手动删除 PVC,否则下次扩容时会继续使用以前的数据导致无法正常加入集群。 POD删除后,需要手动删除PVC,否则下次扩容时会继续使用以前的数据导致无法正常加入集群。
```bash ```bash
kubectl delete pvc taosdata-tdengine-2 $ kubectl delete pvc taosdata-tdengine-3
``` ```
此时的集群状态是安全的,需要时还可以再次进行扩容: 此时的集群状态是安全的,需要时还可以再次进行扩容:
```bash ```bash
kubectl scale statefulsets tdengine --replicas=3 $ kubectl scale statefulsets tdengine --replicas=4
statefulset.apps/tdengine scaled
it@k8s-2:~/TDengine-Operator/src/tdengine$ kubectl get pods -l app=tdengine
``` NAME READY STATUS RESTARTS AGE
tdengine-0 1/1 Running 0 35m
`show dnodes` 输出如下: tdengine-1 1/1 Running 0 34m
tdengine-2 1/1 Running 0 12m
tdengine-3 0/1 ContainerCreating 0 4s
it@k8s-2:~/TDengine-Operator/src/tdengine$ kubectl get pods -l app=tdengine
NAME READY STATUS RESTARTS AGE
tdengine-0 1/1 Running 0 35m
tdengine-1 1/1 Running 0 34m
tdengine-2 1/1 Running 0 12m
tdengine-3 0/1 Running 0 7s
it@k8s-2:~/TDengine-Operator/src/tdengine$ kubectl exec -it tdengine-0 -- taos -s "show dnodes"
Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
Server is Community Edition.
```
taos> show dnodes taos> show dnodes
id | end_point | vnodes | cores | status | role | create_time | offline reason | id | endpoint | vnodes | support_vnodes | status | create_time | offline reason |
====================================================================================================================================== ======================================================================================================================================
1 | tdengine-0.taosd.default.sv... | 1 | 40 | ready | any | 2021-06-01 16:27:24.852 | | 1 | tdengine-0.taosd.default.sv... | 0 | 4 | ready | 2022-07-25 17:38:49.012 | |
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 16:27:53.339 | | 2 | tdengine-1.taosd.default.sv... | 1 | 4 | ready | 2022-07-25 17:39:01.517 | |
4 | tdengine-2.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 16:40:49.177 | | 5 | tdengine-2.taosd.default.sv... | 0 | 4 | ready | 2022-07-25 18:01:36.479 | |
6 | tdengine-3.taosd.default.sv... | 0 | 4 | ready | 2022-07-25 18:13:54.411 | |
Query OK, 4 row(s) in set (0.001348s)
``` ```
## 删除集群 ## 清理 TDengine 集群
完整移除 TDengine 集群,需要分别清理 statefulset、svc、configmap、pvc。 完整移除 TDengine 集群,需要分别清理 statefulset、svc、configmap、pvc。
...@@ -381,26 +334,26 @@ kubectl delete configmap taoscfg ...@@ -381,26 +334,26 @@ kubectl delete configmap taoscfg
### 错误一 ### 错误一
扩容到四节点之后缩容到两节点,删除的 POD 会进入 offline 状态: 未进行 "drop dnode" 直接进行缩容,由于 TDengine 尚未删除节点,缩容 pod 导致 TDengine 集群中部分节点处于 offline 状态。
``` ```
Welcome to the TDengine shell from Linux, Client Version:2.1.1.0 $ kubectl exec -it tdengine-0 -- taos -s "show dnodes"
Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.
Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
Server is Community Edition.
taos> show dnodes taos> show dnodes
id | end_point | vnodes | cores | status | role | create_time | offline reason | id | endpoint | vnodes | support_vnodes | status | create_time | offline reason |
====================================================================================================================================== ======================================================================================================================================
1 | tdengine-0.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 11:58:12.915 | | 1 | tdengine-0.taosd.default.sv... | 0 | 4 | ready | 2022-07-25 17:38:49.012 | |
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 11:58:33.127 | | 2 | tdengine-1.taosd.default.sv... | 1 | 4 | ready | 2022-07-25 17:39:01.517 | |
3 | tdengine-2.taosd.default.sv... | 0 | 40 | offline | any | 2021-06-01 14:07:27.078 | status msg timeout | 5 | tdengine-2.taosd.default.sv... | 0 | 4 | offline | 2022-07-25 18:01:36.479 | status msg timeout |
4 | tdengine-3.taosd.default.sv... | 1 | 40 | offline | any | 2021-06-01 14:07:48.362 | status msg timeout | 6 | tdengine-3.taosd.default.sv... | 0 | 4 | offline | 2022-07-25 18:13:54.411 | status msg timeout |
Query OK, 4 row(s) in set (0.001236s) Query OK, 4 row(s) in set (0.001323s)
``` ```
但 `drop dnode` 的行为按不会按照预期进行,且下次集群重启后,所有的 dnode 节点将无法启动 dropping 状态无法退出。
### 错误二 ### 错误二
TDengine 集群会持有 replica 参数,如果缩容后的节点数小于这个值,集群将无法使用: TDengine 集群会持有 replica 参数,如果缩容后的节点数小于这个值,集群将无法使用:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册