共计 5773 个字符,预计需要花费 15 分钟才能阅读完成。
对于咱们
更多对于云原生的案例和常识,可关注同名【腾讯云原生】公众号~
福利:
①公众号后盾回复【手册】,可取得《腾讯云原生路线图手册》&《腾讯云原生最佳实际》~
②公众号后盾回复【系列】,可取得《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.yaml
。customConfig.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.2
enableAudit:
# tke-auth-api 组件在 node 上的对外裸露端口,默认 31138
nodePort:
# 集群的租户 id,默认 default
tenantID:
# OIDC 认证形式的 secret,默认主动生成
oIDCClientSecret:
# authentication 用户名,默认为 admin
adminUsername:
controller:
# 必填
replicas: 1
# 必填
image: tkestack/tke-auth-controller-amd64:74592a3bceb5bebca602bea21aaebf78007a3bb2
# 控制台登陆的用户名,默认为 admin
adminUsername:
# 控制台登陆的明码,默认主动生成
adminPassword:
tke-platform:
# 必填,VIP 或者公网可拜访的集群 IP
publicIP:
metricsServerImage: metrics-server:v0.3.6
addonResizerImage: addon-resizer:1.8.11
api:
# 必填
replicas: 1
# 必填
image: tkestack/tke-platform-api-amd64:bc48bed59bff2022d87db5e1484481715357ee7c
enableAuth: true
enableAudit:
# OIDC 认证形式客户端 id,默认为 default
oIDCClientID:
# OIDC 认证形式的 issuer_url,默认为 https://tke-auth-api/oidc
oIDCIssuerURL:
# 是否开启 OIDC 认证,默认不开启,值为空
useOIDCCA:
controller:
# 必填
replicas: 1
# 必填
providerResImage: tkestack/provider-res-amd64:v1.21.4-1
# 必填
image: tkestack/tke-platform-controller-amd64:bc48bed59bff2022d87db5e1484481715357ee7c
# 默认为 docker.io
registryDomain:
# 默认为 tkestack
registryNamespace:
# 监控存储类型,默认为 influxdb
monitorStorageType:
# 监控存储地址,默认为集群 master IP 地址加 8086 端口
monitorStorageAddresses:
tke-gateway:
# 必填
image: tkestack/tke-gateway-amd64:bc48bed59bff2022d87db5e1484481715357ee7c
# 默认为 docker.io
registryDomainSuffix:
# 集群的租户 id,默认为 default
tenantID:
# OIDC 认证形式的 secret,默认主动生成
oIDCClientSecret:
# 是否开启自签名,默认为 true
selfSigned: true
# 第三方 cert 证书,在 selfSigned 为 false 时须要填值
serverCrt:
# 第三方 certKey 密钥,在 selfSigned 为 false 时须要填值
serverKey:
enableAuth: true
enableBusiness:
enableMonitor:
enableRegistry:
enableLogagent:
enableAudit:
enableApplication:
enableMesh:
customConfig.yaml
文件中的参数填写结束后,在以后 hack/lightweight-install/
目录下执行 gen
:
./gen
会在同级目录生成 auth-chart-values.yaml
、platform-chart-values.yaml
、gateway-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: tke
cluster:
server: https://172.19.0.2:31138/auth/authz
insecure-skip-tls-verify: true
users:
- name: admin-cert
user:
client-certificate: /etc/kubernetes/pki/webhook.crt
client-key: /etc/kubernetes/pki/webhook.key
current-context: tke
contexts:
- context:
cluster: tke
user: admin-cert
name: tke
将二进制执行文件 gen
生成的 webhook.crt
和 webhook.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 的用户治理、集群治理、控制台拜访等外围性能。
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!