TDC集群外访问TDH-clustermesh工具

  其他常见问题
内容纲要

概要描述

本文描述通过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

file

确认vector功能正常

kubectl get vc

file

kubectl get vn

file

没有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

file

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

3 确认clustermesh工具正常

集群外节点执行

clustermesh -h

file

4 集群内确认clustermesh 网络访问权限正常

集群内执行

 kubectl get sa -A | grep clustermesh

file

集群外使用clustermesh打通网络

确认拷贝过来的clustermesh.kubeconfig
file

执行命令,打通网络

clustermesh --cluster-kubeconfig clustermesh.kubeconfig

file

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

file

集群外部署TDC-Client

1 下载tdc-client

上传到集群外服务器,并进行解压

tar -zxvf tdc-client.tar.gz
2 集群外安装krb5客户端
yum install -y krb5-workstation
3 集群需要安装terminal组件

file

file
file

4 拷贝脚本收集集群信息

拷贝tdc-client/scripts/get_tdc_tenant_tdh_conf.sh 到集群内
file

集群内执行这个脚本

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 参考
file
--terminal_pod_name 参考
file
--tdc_tdh_version 参数是用于指定tdc-client使用的jar包版本,如果不指定,则默认使用tdh6.2.0系列的jar包。如下为对应关系
file

执行完成结果如下
file

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

file

5 集群外tdc-client初始化信息

在TDC-Client的安装位置tdc-client/下执行./tdc_client获取命令行提示(可选操作)

./tdc_client

file

按照提示check客户端环境

./tdc_client check_env

file

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

开始初始化tdc-client

./tdc_client init_tdc

file

查看环境变量列表
file

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

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

file

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

file

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。