前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TKEStack 容器混合云能力介绍(2):打破网络边界

TKEStack 容器混合云能力介绍(2):打破网络边界

作者头像
腾讯云原生
发布2021-12-17 10:10:12
8020
发布2021-12-17 10:10:12
举报

刘晨,腾讯云高级后台开发工程师,TKEStack 社区核心成员,负责 TKEStack 的设计开发维护及混合云项目相关工作。

胡晓亮,腾讯云专家工程师,专注云原生领域。目前负责开源社区TKEStack和腾讯云原生分布式云产品的设计和开发工作。

前言

TKEStack 提供了多集群管理能力,其中导入集群功能通过推送模式由 TKEStack 管控集群(global cluster)直连第三方集群的 api-server 进而统一纳管部署在 IDC,公有云或边缘的第三方集群。

但在实际生产环境中, 管控集群和第三方集群之间的直连往往会出现很多阻碍:或是不在同一个二层网络下,或是第三方集群在防火墙 /NAT 之后,或是第三方集群在网络策略上不允许有入站网络传输,在这些场景下, TKEStack 难以直连第三方集群 api-server, 导入集群的能力无法发挥。

针对这一问题本文将介绍 TKEStack 如何借助腾讯云原生分布式云中心注册集群的功能打破网络边界的限制,将网络环境相对隔离的集群纳入到 TKEStack 的管控面,进行统一管控

TKEStack 的导入集群功能

开源版 TKEStack 的集群管理[1]中存在两种集群的概念,一种是独立集群,另一种是导入集群

其中独立集群需要用户提供可被 TKEStack 访问的 Linux 机器的访问凭证,TKEStack 将以用户提供的机器作为基础设施,从 0 搭建可被 TKEStack 管控的 K8s 集群。

导入集群则是将用户的现存集群纳入到 TKEStack 的管控之下,但需要此集群可以被 TKEStack 访问到(无需被导入集群可访问 TKEStack),用户在满足此条件前提下可提供被导入集群的访问凭证,便可将集群纳入到 TKEStack 管控视野内。

但是在现实生产环境中,被导入集群有极大的可能性处于外网无法访问的网络环境中,此时我们可以借助腾讯云的分布式云中心来打通 TKEStack 与被导入集群间的网络边界限制。

打破网络边界

云原生分布式云中心(Tencent Kubernetes Engine Distributed Cloud Center,TDCC)[2]是腾讯面向多云多集群场景的应用管理平台,支持用户将云原生化的应用扩展到分布式云,打通公有云、私有云、边缘云的界限,将各种成熟的集群、网络、存储、微服务、运维等公有云产品和服务交付至更接近用户和数据的位置,确保不同云基础设施下拥有一致的控制平面,并且提供可靠性保证和安全合规保证,满足企业用户的多云管理、应用治理、高可用容灾等场景诉求。

下面笔者将演示在家庭网络环境下(可访问公网)使用 kind[3] 创建一个 K8s 集群,并借助分布式云中心,将其导入一个私有云网络环境下(可访问公网)的 TKEStack。由于 TKEStack 在 v1.8 release 时云原生分布式云中心还未上线,这里需要我们使用 daily build 版本进行体验,该功能的正式发布则需要等到稍晚些 TKEStack v1.9.0 发布,daily build 版本下载可参考以下命令:

代码语言:javascript
复制
version=310e18e0d696ee0aa57dfe38655b99726eab9f5c?&&?wget?https://tke-release-1251707795.cos.ap-guangzhou.myqcloud.com/tke-installer-linux-amd64-$version.run{,.sha256}?&&?sha256sum?--check?--status?tke-installer-linux-amd64-$version.run.sha256?&&?chmod?+x?tke-installer-linux-amd64-$version.run?&&?./tke-installer-linux-amd64-$version.run

创建 kind 集群

这里笔者在自己的虚拟机上使用 kind 创建一个集群,首先是安装 kind:

代码语言:javascript
复制
curl?-Lo?./kind?https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
chmod?+x?./kind
mv?kind?/usr/bin/

然后我们执行 kind 的创建集群命令:

代码语言:javascript
复制
kind?create?cluster

如果不出意外我们将在等待一段时间后得到以下结果:

代码语言:javascript
复制
Creating?cluster?"kind"?...
???Ensuring?node?image?(kindest/node:v1.21.1)
???Preparing?nodes
???Writing?configuration
???Starting?control-plane
???Installing?CNI
???Installing?StorageClass
Set?kubectl?context?to?"kind-kind"
You?can?now?use?your?cluster?with:
kubectl?cluster-info?--context?kind-kind
Not?sure?what?to?do?next??Check?out?https://kind.sigs.k8s.io/docs/user/quick-start/

下面可以使用 kubectl 来确认一下集群是否在正常运行,这里我们就完成了 kind 集群的创建工作。如果你的机器上没有 kubectl 可以参考Install and Set Up kubectl on Linux [4]进行安装。

注册集群到分布式云中心

访问腾讯云的分布式云中心主页[5],选择注册集群按钮。

这里由于我们是通过 kind 创建的集群并非 TKE,所以注意选择非 TKE 集群。

注册集群创建成功后改集群将处于等待注册的状态,点击查看注册命令。

由于我们的 kind 集群无法无法通过内外与分布式云中心通信,注意选择外网访问。

根据提示将agent.yaml下载下来然后通过 kubectl 部署到 kind 集群:

代码语言:javascript
复制
kubectl?apply?-f?agent.yaml

如果顺利我们将会得到以下反馈:

代码语言:javascript
复制
namespace/clusternet-system?created
serviceaccount/clusternet-agent?created
serviceaccount/clusternet-app-deployer?created
deployment.apps/clusternet-agent?created
clusterrole.rbac.authorization.k8s.io/clusternet:app:deployer?created
clusterrolebinding.rbac.authorization.k8s.io/clusternet:app:deployer?created
secret/clusternet-agent-cluster-registration?created

此时可以通过下面的命令确认下 agent 相关 pod 是否正常工作:

代码语言:javascript
复制
kubectl?get?pod?-n?clusternet-system

如果正常我们应当会得到类似下面的反馈:

代码语言:javascript
复制
NAMESPACE????????????NAME?????????????????????????????????????????READY???STATUS????RESTARTS???AGE
clusternet-system????clusternet-agent-6754cc97bb-dk6r4????????????1/1?????Running???0??????????8s
clusternet-system????clusternet-agent-6754cc97bb-sbpzg????????????1/1?????Running???0??????????8s
clusternet-system????clusternet-agent-6754cc97bb-zfblp????????????1/1?????Running???0??????????8s

再检查分布式云中心首页我们将发现 kind 集群已经成功注册了进来。

导入集群到 TKEStack

下面我们将把 kind 集群导入到 TKEStack 中,首先从分布式云中心将集群的访问凭证下载下来。

然后使用此凭证便可将 kind 集群导入到 TKEStack 中。

原理

腾讯云分布式云中心的核心功能由Clusternet[6]提供,该项目已经开源,可以在 https://github.com/clusternet/clusternet 仓库下查看代码。

Clusternet 的核心能力通过clusternet-hubclusternet-agent两个组件实现,clusternet-hub作为多集群的管控面,以 aggregated apiserver[7]形式部署在父集群中提供集群注册,集群生命周期管理和多集群应用治理能力,clusternet-agent则部署在子集群中充当一个执行代理的角色,一方面将子集群的元数据信息上报给?clusternet-hub 提供多集群应用调度决策,另一方面执行来自父集群的管控指令。在多集群的鉴权模式上,Clusternet 完全复用了子集群的鉴权能力,父集群将?auth 信息直接传递给子集群,由各个子集群对用户进行权限控制。

加入我们

在大家的共同努力下 TKEStack 已经演进到 v1.8.x 版本,其中包括了 containerd 支持、cilium 支持、集群应用定义等诸多新功能,欢迎大家到 https://github.com/tkestack/tke/releases 下载体验。

同时 v1.9.0 版本的开发工作正在主分支上火热进行中,v1.9.0 版本中除了本文介绍的支持导入分布式云中心集群外,我们会全面升级 TKEStack 的各种依赖,包括 golang 版本、CI 工具版本以及 K8s api 版本等,此外我们还将在 TKEStack 的轻量化减负上做出努力,包括移除 TKE 发行版[8]以外的集群版本,删减不常用的 addon 组件等。

当下的 TKEStack 正是需要你加入的时候,欢迎大家到项目仓库 https://github.com/tkestack/tke 贡献一份力量!

参考资料

[1]

TKEStack 集群管理: 【https://tkestack.github.io/docs/user-guide/platform-console/cluster-mgmt.html

[2]

腾讯云原生分布式云中心:?【/document/product/1517/63246

[3]

Kind, running local Kubernetes clusters using Docker:?【https://kind.sigs.k8s.io/

[4]

Install and Set Up kubectl on Linux :?【https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/

[5]

分布式云中心主页:?【https://console.cloud.tencent.com/tdcc/cluster

[6]

Clusternet:?【https://github.com/clusternet/clusternet

[7]

Kubernetes API Aggregation Layer:【 https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/

[8]

TKE Kubernetes Distro:?【https://github.com/tkestack/tke-k8s-distro

互动赢好礼

精读文章,回答问题赢好礼

Q1:在 TKEStack 的导入集群功能中,对管控集群和被导入集群的网络环境要求有哪些?

Q2:相较传统的公有云,私有云,腾讯云分布式云中心在哪些优势和应用场景?

12月17日下午4点由作者选出回答最佳的5位读者,送腾讯定制程序“猿”一件。

? 往期精选推荐??

点个“在看”每天学习最新技术

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-16,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 腾讯云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • TKEStack 的导入集群功能
  • 打破网络边界
    • 创建 kind 集群
      • 注册集群到分布式云中心
        • 导入集群到 TKEStack
        • 原理
        • 加入我们
          • 参考资料
          相关产品与服务
          云原生分布式云中心
          云原生分布式云中心(Tencent Kubernetes Engine Distributed Cloud Center, TDCC)是面向多云多集群场景的应用管理平台,支持将云原生化的应用扩展到分布式云,全局视角统一管理和运维分布式云资源,轻松地将您的业务发布至全球,一次部署处处运行。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com