关于我们

更多关于云原生的案例和知识,可关注同名【腾讯云原生】公众号~

福利:

①公众号后台回复【手册】,可获得《腾讯云原生路线图手册》&《腾讯云原生最佳实践》~

②公众号后台回复【系列】,可获得《15个系列100+篇超实用云原生原创干货合集》,包含Kubernetes 降本增效、K8s 性能优化实践、最佳实践等系列。

③公众号后台回复【白皮书】,可获得《腾讯云容器安全白皮书》&《降本之源-云原生成本管理白皮书v1.0》

④公众号后台回复【光速入门】,可获得腾讯云专家5万字精华教程,光速入门Prometheus和Grafana。

作者

王龙,腾讯云后台开发工程师,负责 TKEStack 的设计开发维护及混合云项目相关工作。

前言

TKEStack 是一个开源的企业级容器云平台,结合最前沿的先进技术,提供高度可扩展的高性能容器管理服务,可以让您轻松地在任何地方运行 Kubernetes、满足 IT 需求并为 DevOps 团队赋能。

TKEStack 提供了丰富的组件实现用户管理、访问策略管理、集群管理、业务管理、监控、日志、私有镜像库等功能,这也相应地增加了在本地安装 TKEStack 的时间。对于部分用户来说,可能只需要 TKEStack 的用户管理、集群管理、控制台访问等核心功能,但也要付出一样的时间成本。另外,TKEStack 安装过程中会在裸机上部署 global 集群,并通过 global 集群管理独立集群和导入集群的生命周期。因此对于已有的 K8s 集群,用户无法对其安装集成 TKEStack。

基于上述背景,TKEStack 在最新的 v1.9.0 release 中,支持了轻量化安装场景。轻量化安装打破了需要新建 global 集群的限制,实现了在用户已有的 K8s 集群上直接集成 TKESatck 的用户管理、集群管理、控制台访问等核心功能。用户由此可以通过前端可视化页面,查看并管理集群的基本信息、工作节点、命名空间、工作负载等各种资源。除此之外,通过设置自定义访问策略,打破了”单租户“的限制,用户可以实现对集群灵活的权限控制。

前置要求

本文介绍的内容是建立在已有一个正常运行的 K8s 集群的基础上,并且以下的操作需要在 master 节点上进行。如果没有 K8s 集群,可以通过 kind 创建本地集群并进行以下的操作。

本文介绍的内容需要通过 helm 安装 TKEStack 的核心组件,可参考 安装手册 安装 helm。

轻量化安装 TKEStack

准备安装文件

通过如下命令拉取 TKEStack 的最新代码:

git clone https://github.com/tkestack/tke.git

创建本地集群(已有本地集群的可跳过该步骤)

如果用户本地没有 K8s 集群,可通过 kind 进行创建。由于 kind 创建的集群实际运行在镜像容器中,为了确保 TKEStack 核心组件的端口能够从容器外部正常访问,切换到 TKEStack 代码的 hack/lightweight-install/ 目录,执行如下命令创建集群:

kind create cluster --config kindConfig.yaml --name {your cluster name} 

创建指定 namespace

tke-auth、tke-platform、tke-gateway 三个核心组件需要运行在指定的 namespace 下,执行如下命令:

kubectl create namespace tke

安装 chart

TKEStack 提供了 chart 文件来安装 tke-auth、tke-platform、tke-gateway 三个核心组件。

切换到 TKEStack 代码的 hack/lightweight-install/ 目录,编译二进制执行文件,用于生成安装 chart 文件所需的 yaml 文件:

go build -o gen

在 TKEStack 代码的 hack/lightweight-install/ 目录放置了需要填写的 yaml 文件 customConfig.yamlcustomConfig.yaml 文件中一些注释“必填”的参数,需要填写,其余的参数可根据需要选填,选填部分为空时会自动填充默认值。

customConfig.yaml 内容如下:

# 必填,etcd 访问地址,形式如 https://172.19.0.2:2379
etcd:host: https://172.18.0.2:2379
# 必填,服务器内网 IP,数组形式
serverIPs:- 172.18.0.2
# 必填,公网可访问的 IP 地址以及要使用的域名,数组形式
dnsNames:- tke.gateway
# 必填,集群 front-proxy-ca.crt 文件地址,默认位置为 /etc/kubernetes/pki/front-proxy-ca.crt
frontProxyCaCrtAbsPath: /etc/kubernetes/pki/front-proxy-ca.crt
# 必填,集群 etcd 的 ca.crt 文件地址,默认位置为 /etc/kubernetes/pki/etcd/ca.crt
etcdCrtAbsPath: /etc/kubernetes/pki/etcd/ca.crt
# 必填,集群 etcd 的 ca.key文件地址,默认位置为 /etc/kubernetes/pki/etcd/ca.key
etcdKeyAbsPath: /etc/kubernetes/pki/etcd/ca.key
tke-auth:api:# 必填replicas: 1# 必填image: tkestack/tke-auth-api-amd64:74592a3bceb5bebca602bea21aaebf78007a3bb2# 必填,数组形式,auth 的重定向访问地址,包括集群服务器 IP 地址(必填)、tke-gateway 的域名(可选)、集群高可用的 VIP 地址(可选,有的话需要填写)和集群的公共可访问域名(可选,有的话需要填写)redirectHosts: - 172.18.0.2enableAudit: # tke-auth-api 组件在 node 上的对外暴露端口,默认31138nodePort: # 集群的租户 id,默认 defaulttenantID: # OIDC 认证方式的 secret,默认自动生成oIDCClientSecret: # authentication 用户名,默认为 adminadminUsername: controller:# 必填replicas: 1# 必填image: tkestack/tke-auth-controller-amd64:74592a3bceb5bebca602bea21aaebf78007a3bb2# 控制台登陆的用户名,默认为 adminadminUsername: # 控制台登陆的密码,默认自动生成adminPassword:
tke-platform:# 必填,VIP 或者公网可访问的集群 IPpublicIP:metricsServerImage: metrics-server:v0.3.6addonResizerImage: addon-resizer:1.8.11api:# 必填replicas: 1# 必填image: tkestack/tke-platform-api-amd64:bc48bed59bff2022d87db5e1484481715357ee7cenableAuth: trueenableAudit: # OIDC 认证方式客户端 id,默认为 defaultoIDCClientID: # OIDC 认证方式的 issuer_url,默认为 https://tke-auth-api/oidcoIDCIssuerURL: # 是否开启 OIDC 认证,默认不开启,值为空useOIDCCA:controller:# 必填replicas: 1# 必填providerResImage: tkestack/provider-res-amd64:v1.21.4-1# 必填image: tkestack/tke-platform-controller-amd64:bc48bed59bff2022d87db5e1484481715357ee7c# 默认为 docker.ioregistryDomain:# 默认为 tkestackregistryNamespace:# 监控存储类型,默认为 influxdbmonitorStorageType: # 监控存储地址,默认为集群 master IP 地址加8086端口monitorStorageAddresses:
tke-gateway:# 必填image: tkestack/tke-gateway-amd64:bc48bed59bff2022d87db5e1484481715357ee7c# 默认为 docker.ioregistryDomainSuffix:# 集群的租户 id,默认为 defaulttenantID:# OIDC 认证方式的 secret,默认自动生成oIDCClientSecret:# 是否开启自签名,默认为 trueselfSigned: true# 第三方 cert 证书,在 selfSigned 为 false 时需要填值serverCrt:# 第三方 certKey 密钥,在 selfSigned 为 false 时需要填值serverKey:enableAuth: trueenableBusiness:enableMonitor:enableRegistry:enableLogagent:enableAudit:enableApplication:enableMesh:

customConfig.yaml 文件中的参数填写完毕后,在当前 hack/lightweight-install/ 目录下执行 gen

./gen

会在同级目录生成 auth-chart-values.yamlplatform-chart-values.yamlgateway-chart-values.yaml 三个 yaml 文件,分别对应三个 chart(tke-auth、tke-platform、tke-gateway)在安装时需要的 values.yaml 文件。

在当前 hack/lightweight-install/ 目录下进行三个核心组件的安装:

# tke-auth 的安装
helm install -f auth-chart-values.yaml tke-auth tke-auth/
# tke-platform 的安装
helm install -f platform-chart-values.yaml tke-platform tke-platform/
# tke-gateway 的安装
helm install -f gateway-chart-values.yaml tke-gateway tke-gateway/

通过如下命令如果能查询到三个 chart 的安装状态均为 deployed,则表示核心组件安装成功:

helm list

chart 安装完成后,可以查询到以下信息,如图所示:

修改集群 apiserver 配置

在集群对应的目录 /etc/kubernetes/pki/ 下新建文件 tke-authz-webhook.yaml,文件内容如下(其中 cluster.server 参数中的 IP 地址需要修改为 master 的 IP 地址):

apiVersion: v1
kind: Config
clusters:- name: tkecluster:server: https://172.19.0.2:31138/auth/authzinsecure-skip-tls-verify: true
users:- name: admin-certuser:client-certificate: /etc/kubernetes/pki/webhook.crtclient-key: /etc/kubernetes/pki/webhook.key
current-context: tke
contexts:
- context:cluster: tkeuser: admin-certname: tke

将二进制执行文件 gen 生成的 webhook.crtwebhook.key(位置在 TKEStack 代码下的 hack/lightweight-install/data/ 目录)复制到集群的对应目录 /etc/kubernetes/pki/ 下。

修改 K8s 集群中 /etc/kubernetes/mainfest/kube-apiserver.yaml 的内容,在 spec.containers.command 字段增加以下两个参数:

# 如果已有这两个参数,则将其按照以下内容修改
- --authorization-mode=Node,RBAC,Webhook
- --authorization-webhook-config-file=/etc/kubernetes/pki/tke-authz-webhook.yaml

创建独立集群

访问地址 http://{公网可访问ip}/tkestack,出现如下登陆界面,输入之前设置的用户名 adminUsername 和密码 adminPassword,如无设置,默认用户名为 admin ,密码为 YWRtaW4=

登陆后,点击集群管理的新建独立集群:

具体的集群创建信息可参考文档集群创建。

创建集群完成后,可以在页面端看到如下状态:

并且可以在 master 节点上查询到独立集群的信息:

如果在创建独立集群时,Kubernetes 版本显示暂无数据,可以通过在名为 cluster-info(namespace 为 kube-public)的 configmap 中增加如下字段解决(具体字段值可参考 hack/lightweight-install/ 目录下的 patch.yaml 文件):

data:k8sValidVersions: '["1.21.4-tke.1","1.20.4-tke.1"]'

总结

本文介绍了如何基于 TKEStack 最新的 v1.9.0 release 版本在已有的 K8s 集群上轻量化安装 TKEStack,并以此集成 TKEStack 的用户管理、集群管理、控制台访问等核心功能。

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

轻量化安装 TKEStack:让已有 K8s 集群拥有企业级容器云平台的能力相关推荐

  1. kubekey搭建K8s集群与kubeSphere容器云管理平台实战

    一.kubekey&KubeSphere简介 1.kubekey简介 kubeykey是KubeSphere基于Go 语言开发的kubernetes集群部署工具,使用 KubeKey,您可以轻 ...

  2. 搭建 K8S 环境:Centos7安装生产环境可用的K8S集群图文教程指南

    搭建 K8S 环境:Centos7安装生产环境可用的K8S集群图文教程指南 一. K8S 简介 二. K8S 学习的几大拦路虎 2.1 K8S 安装对硬件要求比较高 2.2. K8S 对使用者来说要求 ...

  3. 二进制安装多master节点的k8s集群

    二进制安装多master节点的k8s集群 k8s集群角色 IP 主机名 安装的组件 控制节点 192.168.1.180 master1 apiserver,controller-manager,sc ...

  4. 安装calico网络插件后K8s集群节点间通信找不到主机路由(no route to host)

    安装calico网络插件后K8s集群节点间通信找不到主机路由(no route to host) 背景:k8s安装calico网络插件后master节点ping不通其它node节点,但可以ping通外 ...

  5. 搭建k8s集群完整流程,云服务器、虚拟机均可参考

    一.机器准备 本次搭建k8s集群采用三台云服务器,master节点最好采用2核2G以上的机器,node节点不作要求 二.开始搭建 1.机器 | 角色     | IP           | | -- ...

  6. 【aliyun ECS】CentOS 7/8使用kubeadm部署kubernets(k8s)集群【附阿里云实验室】内有福利

    好消息好消息,阿里云全线降价,大量服务提供免费甚至永久的试用,赶紧来薅大厂羊毛吧,坐电梯即可直达! 送福利!阿里云热门产品免费领(含ECS),点击进入:https://click.aliyun.com ...

  7. k8s集群资源监控-搭建监控平台(prometheus和grafana)---K8S_Google工作笔记0053

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来,搭建一下监控平台,来监控我们的所有的节点,以及节点中pod的使用清空,网络,cpu等等 ...

  8. Rancher2.x安装及k8s集群部署

    安装Rancher Rancher是业界唯一完全开源的企业级容器管理平台,为企业用户提供在生产环境中落地使用容器所需的一切功能与组件. Rancher2.0基于Kubernetes构建,使用Ranch ...

  9. K8S集群Master高可用实践

    本文将在前文基础上介绍k8s集群的高可用实践,一般来讲,k8s集群高可用主要包含以下几个内容: 1.etcd集群高可用 2.集群dns服务高可用 3.kube-apiserver.kube-contr ...

  10. Addon SuperEdge 让原生 K8s 集群可管理边缘应用和节点

    作者 梁豪,腾讯TEG工程师,云原生开源爱好者,SuperEdge 开发者,现负责TKEX-TEG容器平台运维相关工作. 王冬,腾讯云TKE后台研发工程师,专注容器云原生领域,SuperEdge 核心 ...

最新文章

  1. Angular 个人深究(五)【外部包引用 Leaflet 简单实用】
  2. JS基础知识学习(一)
  3. 朴素贝叶斯网络matlab实现_基于朴素贝叶斯的文本分类方法实战
  4. java程序员应该掌握的技术才算得上熟练Java开发
  5. Android点击返回键销毁自己,Activity界面销毁 软键盘未收回
  6. androidStudio快捷键概览
  7. 测试用例-其他相关知识
  8. linux下php-5.4.8.tar.gz编译安装全攻略
  9. ios 画带有箭头的线_ios纯色箭头与渐变色箭头的实现
  10. 关于svn服务部署方案
  11. [书籍推荐]为了自己的钱包,为了自己的时间——分享一下自己的淘书经验
  12. 微信支付JAVA DEMO 微信支付爬过的坑
  13. 为什么说CCSK是云安全从业人员必备证书之一
  14. Matlab|模拟电动汽车的充放电【充电顺序,波动发电,电池缓冲】
  15. 图灵工业机器人说明书_从2020世界人工智能大会,看工业机器人领域领军企业布局...
  16. 从零开始的基于百度大脑EasyData的多人协同数据标注
  17. mcake蛋糕预订图片
  18. flash player安装教程--亲测有效
  19. C#.NET程序尝试—修复Excel批注错误
  20. 自制快速冒烟测试小工具--基于python多线程

热门文章

  1. 用spark统计50年美国最常见的20个名字
  2. npm init @vitejs/app的背后,仅是npm CLI的冰山一角
  3. 区块链交易——举例说明
  4. 《数字信号处理》正弦信号的波形及频谱的求解
  5. SEO内页优化,SEO内容优化,内页快速SEO优化
  6. Cesium 生成和加载离线地形
  7. 指数型基金基本信息 API 数据接口
  8. css属性百分比参照物
  9. 物联网技术及应用计算机,物联网的关键技术及计算机物联网的应用
  10. Filter 过滤器使用