概要描述
本文描述通过clustermesh工具,使得集群外可以和TDC内部进行通信访问
详细描述
方案简介
部署额外的TOS Network Vector资源,集群外部署clustermesh 二进制直接和TDC容器网络进行打通,集群外节点可以直接访问容器IP
优势
- 无需准备vip资源
- 不依赖闲置网段
- 配置简单
- 支持多套不会端口冲突
- tdc-client3.1后支持脚本化打通
劣势
需要额外部署网络打通基础环境与二进制工具
打通所有Pod和Service,需要开放一些网络策略
二进制只支持linux,不支持windows端
适用版本
全部TDC版本
TOS版本大于1.9TOS网络配置
适用场景
- 能够在集群内部署TOS 网络以及在集群外部署二进制工具的场景
- 不需要在windows端进行调试的场景
本文实验环境
TDC集群 :版本tdc320
172.22.28.21
172.22.28.22
172.22.28.23
集群外节点: 172.22.39.1
部署TOS网络(可选,tdc高版本kubectl get pods -owide -n kube-system | grep vector有的就不用部署了)
确认vector部署成功
kubectl get pods -n kube-system | grep vector

确认vector功能正常
kubectl get vc

kubectl get vn

没有vector的话 参考:tos-network部署
集群外部署clustermesh工具
1 下载部署安装包
下载 clustermesh_x86/clustermesh-arm64
x86:
下载后将工具
cp clustermesh /usr/bin/
chmod +x /usr/bin/clustermesh
arm:
下载后将工具
cp clustermesh-arm64 /usr/bin/
mv /usr/bin/clustermesh-arm64 /usr/bin/clustermesh
chmod +x /usr/bin/clustermesh
2 kubeconfig生成
目标集群master节点执行【kubeconfig.sh】脚本,将生成的 clustermesh.kubeconfig 文件拷贝到客户端节点
kubeconfig.sh脚本内容如下:
yaml_content=$(cat < /tmp/clustermesh.yaml
export KUBECONFIG=/srv/kubernetes/kubeconfig
kubectl apply -f /tmp/clustermesh.yaml
DEF_ETH=ip route | grep default | head -1 | awk '{print $5}'
SERVER=$(ip a s $DEF_ETH | grep inet | grep -v inet6 | awk '{print $2}' | head -1 | cut -d'/' -f1)
CA_DATA=$(base64 /srv/kubernetes/ca.pem | awk -v RS="" '{gsub("\n","");print}')
SERVICE_ACCOUNT_SECRET=$(kubectl get sa clustermesh -o jsonpath='{.secrets[0].name}' -n kube-system)
TOKEN=$(kubectl get secret $SERVICE_ACCOUNT_SECRET -n kube-system -o jsonpath='{.data.token}' | base64 -d)
PORT=16443
if [ -f "/etc/tos/conf/haproxy.cfg" ]; then
PORT=6443
fi
cat > clustermesh.kubeconfig <
执行kubeconfig.sh脚本
bash kubeconfig.sh

当前目录下会生成clustermesh.kubeconfig,拷贝到客户端节点即可

3 确认clustermesh工具正常
集群外节点执行
clustermesh -h

4 集群内确认clustermesh 网络访问权限正常
集群内执行
kubectl get sa -A | grep clustermesh

集群外使用clustermesh打通网络
确认拷贝过来的clustermesh.kubeconfig

执行命令,打通网络
clustermesh --cluster-kubeconfig clustermesh.kubeconfig

打通后还可以通过ping验证网络连通性
TDC环境中,找一个pod ip 进行测试


集群外部署TDC-Client
1 下载tdc-client
上传到集群外服务器,并进行解压
tar -zxvf tdc-client.tar.gz
2 集群外安装krb5客户端
yum install -y krb5-workstation
3 集群需要安装terminal组件



4 拷贝脚本收集集群信息
拷贝tdc-client/scripts/get_tdc_tenant_tdh_conf.sh 到集群内

集群内执行这个脚本
bash get_tdc_tenant_tdh_conf.sh --tenant_name fzd --cluster_name clus-2 --terminal_pod_name terminal-lnxbr-0 --tdc_tdh_version transwarp-9.0.0-final
其中
--tenant_name 命名空间
--cluster_name 参考

--terminal_pod_name 参考

--tdc_tdh_version 参数是用于指定tdc-client使用的jar包版本,如果不指定,则默认使用tdh6.2.0系列的jar包。如下为对应关系

执行完成结果如下

完成后将生成的conf文件夹拷贝到集群外的tdc-client路径下,覆盖原本为空的conf


5 集群外tdc-client初始化信息
在TDC-Client的安装位置tdc-client/下执行./tdc_client获取命令行提示(可选操作)
./tdc_client

按照提示check客户端环境
./tdc_client check_env

根据提示,完善环境 最后结果是

开始初始化tdc-client
./tdc_client init_tdc

查看环境变量列表

根据上一步获得的信息,开始初始化实例

6 根据提示使用云产品
You can follow the steps
*****************************************
1. cd /root/tdc-client/scripts/../.env/fzd_clus-2
2. source ./env
*****************************************

NOTE:如果出现无法ping通svc的情况,可以考虑重启一下服务器,然后重新执行一下

