前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes之Kuboard多集群管理工具安装实践

Kubernetes之Kuboard多集群管理工具安装实践

作者头像
全栈工程师修炼指南
发布2022-09-29 19:10:01
5.1K0
发布2022-09-29 19:10:01
举报
文章被收录于专栏:全栈工程师修炼之路

[TOC]

0x00 前言简述

1.Kuboard 介绍

描述: Kuboard 是一款免费的 Kubernetes 管理工具,提供了丰富的功能,结合已有或新建的代码仓库、镜像仓库、CI/CD工具等,可以便捷的搭建一个生产可用的 Kubernetes 容器云平台,轻松管理和运行云原生应用。

您也可以直接将 Kuboard 安装到现有的 Kubernetes 集群,通过 Kuboard 提供的 Kubernetes RBAC 管理界面,将 Kubernetes 提供的能力开放给您的开发/测试团队。

Kuboard 提供的功能有:

  • Kubernetes 基本管理功能
  • Kubernetes 问题诊断
  • Kubernetes 存储管理
    • 通过 ceph-csi 对接 CephFS
    • 通过 ceph-csi 对接 Rook 安装的 CephFS
    • 通过 nfs-client-provisioner 对接 NFS 类型的存储
    • 对接其他类型的存储
  • 认证与授权
    • 内建用户库认证
    • GitLab / GitHub 单点登录
    • LDAP 认证
    • 完整的 RBAC 权限管理
  • Kuboard 特色功能
    • Kuboard 官方套件
      • Grafana+Prometheus 资源监控
      • Grafana+Loki+Promtail 日志聚合
    • Kuboard 自定义名称空间布局
    • Kuboard 中英文语言包

2.Kuboard v3.x 版本

描述: Kuboard v3.x 兼容性涉及 Kubernetes 版本 (v1.13 ~ v1.20)

Kuboard v3.x 功能特点:

  • 支持 Kubernetes 多集群管理
  • 支持 amd64 (x86) 架构和 arm68 (armv8) 架构的 CPU;

Kuboard v3.x 与 v2.0.x 对比:

  • 1.v3.x 不再部署在 Kubernetes 中,而是作为一个独立的容器运行。
  • 2.由于运行模式不同 v2.0.x 与 v3.x 可以同时存在互不干扰, 其次是 v3.x 将 Kuboard 部署的大部分内容从 kube-system 名称空间迁移到 kuboard 名称空间。

Tips : 如果您最终决定从 Kuboard v2.0.x 迁移到 Kuboard v3,请在 Kuboard v2.0.x 的界面中卸载掉 Kuboard 套件,并在 Kuboard v3 中重新安装 Kuboard 套件。


0x01 安装部署

1.安装步骤

1) k8s集群部署说明获取部署 Kuboard 所需的 YAML 文件:

代码语言:javascript
复制
curl -o kuboard-v3.yaml https://addons.kuboard.cn/kuboard/kuboard-v3.yaml

2.编辑 kuboard-v3.yaml 文件中的配置,该部署文件中,有两处配置必须修改:

代码语言:javascript
复制
# 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-built-in.html
KUBOARD_ENDPOINT: 'http://192.168.12.108:30567'

# 请填写一个有效的 StorageClass name
storageClassName: please-provide-a-valid-StorageClass-name-here

# 端口设置
# Kuboard v3 容器对外暴露三个端口:
#     80 Kuboard Web 服务端口,TCP;
#     443 Kuboard Web 服务端口,TCP;
#     10081 Kuboard Agent Server 端口,TCP 、 UDP。
spec:
  ports:
    - name: webui
      nodePort: 30567
      port: 80
      protocol: TCP
      targetPort: 80
    - name: agentservertcp
      nodePort: 30568
      port: 10081
      protocol: TCP
      targetPort: 10081
    - name: agentserverudp
      nodePort: 30568
      port: 10081
      protocol: UDP
      targetPort: 10081
# 端口网络监听
# tcp        0      0 0.0.0.0:30567           0.0.0.0:*               LISTEN      -
# tcp        0      0 0.0.0.0:30568           0.0.0.0:*               LISTEN      -

3.部署到 Kubernetes 集群

代码语言:javascript
复制
kubectl create -f kuboard-v3.yaml

Tips : 此 YAML 文件向 Kubernetes 中部署了一个三副本的 StatefulSet kuboard-etcd 和一个单副本的 Deployment kuboard-v3;其中 Deployment kuboard-v3 暂时不支持多副本,请保持其 replicas 字段为 1,将在后续的版本升级中解决 kuboard-v3 多副本部署的问题。

2.配置步骤

1) 访问 Kuboard 在浏览器中打开链接 http://192.168.12.108:30567 ,输入初始用户名和密码登录

代码语言:javascript
复制
用户名: admin
密码: Kuboard123
WeiyiGeek.Kuboard多集群管理
WeiyiGeek.Kuboard多集群管理

WeiyiGeek.Kuboard多集群管理

2) 为单点登录的用户/用户组授权(由于在刚开发阶段所以还有些不成熟) 描述: 当您配置 Kuboard 与 gitlab / github / ldap 实现单点登录以后,Kuboard 并不管理用户基本信息、用户组信息、用户与用户组之间的映射信息 为了让单点登录的用户获得合适的权限,您需要在 Kuboard 中为对应的用户/用户组授权:

代码语言:javascript
复制
- 为用户添加角色绑定
- 切换到 角色绑定(全局)
- 创建角色绑定
WeiyiGeek.授权
WeiyiGeek.授权

WeiyiGeek.授权

Tips : 全局角色绑定,用户可以在所有 Kubernetes 集群范围内执行该角色授予的权限; Tips : 集群角色绑定,用户只能在指定的 Kubernetes 集群范围内执行该角色授予的权限; Tips : 通常以用户组授权比为单个用户授权更为灵活和方便

代码语言:javascript
复制
; 使用 nginx 作为反向代理,配置文件样例
http {
  # 您需要的其他配置
  map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
  }

  server {
    listen       80; 
    server_name  kuboard.this-is-a-sample.com; # 替换成你的域名

    location / {
      proxy_pass http://192.168.32.205:10080/;  # 替换成你的 Kuboard IP 地址和端口,应该是 IP 地址,而不是 KUBOARD_ENDPOINT 参数的值
      gzip on;
    }

    location /k8s-ws/ {
      proxy_pass  http://192.168.32.205:10080/k8s-ws/;  # 替换成你的 Kuboard IP 地址和端口
      proxy_http_version 1.1;
      proxy_pass_header Authorization;
      proxy_set_header Upgrade "websocket";
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      # proxy_set_header X-Forwarded-Proto https; # 如果您在反向代理上启用了 HTTPS
    }

    location /k8s-proxy/ {
      proxy_pass  http://192.168.32.205:10080/k8s-proxy/;  # 替换成你的 Kuboard IP 地址和端口
      proxy_http_version 1.1;
      proxy_pass_header Authorization;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;

      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      # proxy_set_header X-Forwarded-Proto https; # 如果您在反向代理上启用了 HTTPS
      gzip on;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
  }
}

4) SSL 证书配置 描述: Web 服务端口在如下两种情况下需要配置 SSL 证书, 一是通过公网访问 Kuboard 界面,提高安全性;二是为被纳管的 Kubernetes 配置 OIDC与 Kuboard 实现单点登录(如不配置,通过 Kuboard 管理 Kubernetes 时,Kubernetes 只能将用户识别成 kuboard-admin 或者 kuboard-user 这两个 ServiceAccount 当中的一个)

代码语言:javascript
复制
# 已有证书 - Certificates
sudo docker run -d \
  --restart=unless-stopped \
  -v /hostpath/to/your/server.crt:/etc/certs/my.company.com/server.crt \
  -v /hostpath/to/your/server.key:/etc/certs/my.company.com/server.key \
  -e KUBOARD_TLS_CERT=/etc/certs/my.company.com/server.crt \
  -e KUBOARD_TLS_KEY=/etc/certs/my.company.com/server.key \
  -p 10080:80/tcp \
  -p 443:443/tcp \
  -p 10081:10081/tcp \
  -p 10081:10081/udp \
  -e KUBOARD_ENDPOINT="http://kuboard.this-is-a-sample.com:10080" \
  -e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \
  -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
  -v /root/kuboard-data:/data \
  eipwork/kuboard:v3-beta

# 在线申请 - Lets Encrypt
sudo docker run -d \
  --restart=unless-stopped \
  -p 10080:80/tcp \
  -p 443:443/tcp \
  -p 10081:10081/tcp \
  -p 10081:10081/udp \
  # 第 7 行激活 Kuboard 中的 Lets Encrypt 客户端;
  -e KUBOARD_TLS_AUTOCERT=true \ 
  # 第 8 行指定 Lets Encrypt 颁发证书时对应的域名;
  -e KUBOARD_TLS_DOMAIN=kuboard.this-is-a-sample.com \
  -e KUBOARD_ENDPOINT="http://kuboard.this-is-a-sample.com:10080" \
  -e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \
  -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
  -v /root/kuboard-data:/data \
  eipwork/kuboard:v3-beta

Tips : Kuboard Agent Server 端口使用 TCP、UDP 通信,是私有协议,已经自动配置了 TLS 加密连接,无需用户额外配置证书。(该 Agent Server 端口无需暴露到公网) Tips : 如果通过 nginx 反向代理访问 Kuboard,建议在 nginx 中配置 SSL 证书; Tips : 如果您的 Kuboard 打算直接在公网上访问,建议使用 Lets Encrypt; Tips : 使用 Lets Encrypt 时,请将 kuboard.this-is-a-sample.com 域名指向您的 Kuboard 所在宿主机的公网 IP,并且确保 80, 443 端口开放。Kuboard 启动后,在您第一次访问 https://kuboard.this-is-a-sample.com 时,Lets Encrypt 将自动申请证书(浏览器上显示第一次访问将失败)。等候 1-5 分钟时间,再次访问 https://kuboard.this-is-a-sample.com 时,您将能够成功访问,证书也已经颁发并且自动配置好;通常免费证书有效期是一年时间,证书到期前一个月,系统会自动为您更新证书,无需您额外做任何操作。

3.升级配置

描述: 将 kuboard v3 更新到最新版本。

方式1.Docker 容器

代码语言:javascript
复制
# 1.停止已有 kuboard 容器
docker stop $(docker ps -a | grep "eipwork/kuboard" | awk '{print $1 }')
docker rm $(docker ps -a | grep "eipwork/kuboard" | awk '{print $1 }')

# 2.使用新版本的镜像启动 kuboard
sudo docker run -d \
  --restart=unless-stopped \
  --name=kuboard \
  -p 10080:80/tcp \
  -p 10081:10081/udp \
  -p 10081:10081/tcp \
  -e KUBOARD_ENDPOINT="http://kuboard.this-is-a-sample.com:10080" \
  -e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \
  -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
  -v /root/kuboard-data:/data \
  eipwork/kuboard:v3.1.0.3

方式2.Kubernetes 集群

代码语言:javascript
复制
# 更新到最新版本
kubectl set image -n kuboard deployment/kuboard-v3 kuboard=swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3

0x02 使用实践

1.集群添加

Step 1.添加已有 Kubernetes 集群到 Kuboard(注意Kubernetes 集群,版本不低于 v1.13),点击首页的添加集群。输入如图下所示(注意选择Agent连接方式)

WeiyiGeek.k8s cluster add
WeiyiGeek.k8s cluster add

WeiyiGeek.k8s cluster add

Step 2.请安装 kuboard-agent 然后在将要被导入的 Kubernetes 集群执行如下指令

代码语言:javascript
复制
curl -k 'http://192.168.12.108:30567/kuboard-api/cluster/k8s-test.weiyigeek/kind/KubernetesCluster/k8s-test.weiyigeek/resource/installAgentToKubernetes?token=OIrni4gJpu4hfeAMyJTxCL0gyMZ0Ps1o' > kuboard-agent.yaml
kubectl apply -f ./kuboard-agent.yaml
# namespace/kuboard created
# serviceaccount/kuboard-admin created
# clusterrolebinding.rbac.authorization.k8s.io/kuboard-admin-crb created
# serviceaccount/kuboard-viewer created
# clusterrolebinding.rbac.authorization.k8s.io/kuboard-viewer-crb created
# deployment.apps/kuboard-agent created
# deployment.apps/kuboard-agent-2 created
# weiyigeek@master-k8s:~$
 
# 在 被导入的Kubernetes 集群下执行查看你
$ kubectl get pod -n kuboard
NAME                               READY   STATUS    RESTARTS   AGE
kuboard-agent-2-5f4bcf8b45-d4gr9   1/1     Running   0          33s
kuboard-agent-784ccf8f5c-lm7fc     1/1     Running   0          33s

Step 3.最后点击我已执行导入命令(执行上面的命令后也会自动探测), 添加完集群后会在Kubernetes 集群列表中看它。

WeiyiGeek.集群添加
WeiyiGeek.集群添加

WeiyiGeek.集群添加

Step 4.如果您已经执行了导入命令,但仍然处于等待导入状态,有可能是因为 kuboard-agent 没有启动,或者 kuboard-agent 不能连接 kuboard-server。请按照下面的提示检查网络连通性以及 kuboard-agent 的日志。

代码语言:javascript
复制
# 1.请测试连通性 UDP
nc -vuz 192.168.12.108 30568
# Connection to 192.168.12.108 30568 port [udp/*] succeeded

# 2.请检查 kuboard-agent 状态
kubectl get pods -n kuboard -o wide -l "k8s.kuboard.cn/name in (kuboard-agent, kuboard-agent-2)"

# 3.请检查 kuboard-agent 日志 
kubectl logs -f  -n kuboard -l "k8s.kuboard.cn/name in (kuboard-agent, kuboard-agent-2)"

Step 5.连接完成后与v2.x一样可以对集群进行管理包括(资源配置和应用程序应用以及存储的创建)

WeiyiGeek.集群管理
WeiyiGeek.集群管理

WeiyiGeek.集群管理

Step 5.学习上面生成的 Kuboard-agent.yaml 资源清单编写

代码语言:javascript
复制
# 名称空间创建
---
apiVersion: v1
kind: Namespace
metadata:
  name: kuboard

# 服务用户创建
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kuboard-admin
  namespace: kuboard

# 集群角色绑定RBAC-将k8s集群管理员的角色绑定到ServiceAccount中的kuboard-admin.
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kuboard-admin-crb
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kuboard-admin
  namespace: kuboard

# 下面的浏览用户的权限绑定的是集群浏览的角色
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kuboard-viewer
  namespace: kuboard

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kuboard-viewer-crb
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: view
subjects:
- kind: ServiceAccount
  name: kuboard-viewer
  namespace: kuboard

# 利用 Deployment 控制器来 部署 kuboard-agent 容器 (此处采用两个Deployment控制器来进行不同权限分离)
---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    k8s.kuboard.cn/ingress: "false"
    k8s.kuboard.cn/service: none
    k8s.kuboard.cn/workload: kuboard-agent
  labels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: kuboard-agent
  name: kuboard-agent
  namespace: kuboard
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s.kuboard.cn/layer: cloud
      k8s.kuboard.cn/name: kuboard-agent
  template:
    metadata:
      labels:
        k8s.kuboard.cn/layer: cloud
        k8s.kuboard.cn/name: kuboard-agent
    spec:
      serviceAccountName: kuboard-admin
      # 容忍在master节点也运行
      tolerations:
        - effect: NoSchedule
          key: node-role.kubernetes.io/master
          operator: Exists
      # 容器定义设置
      containers:
        - env:
            - name: KUBOARD_ENDPOINT
              value: "http://192.168.12.108:30567"
            - name: KUBOARD_AGENT_HOST
              value: "192.168.12.108"
            - name: KUBOARD_AGENT_PORT
              value: "30568"
            - name: KUBOARD_AGENT_REMOTE_PORT
              value: "35002"
            - name: KUBOARD_AGENT_PROTOCOL
              value: "tcp"
            - name: KUBOARD_AGENT_PROXY
              value: ""
            - name: KUBOARD_K8S_CLUSTER_NAME
              value: "dev-k8s.weiyieek"
            - name: KUBOARD_AGENT_KEY
              value: "32b7d6572c6255211b4eec9009e4a816"
            - name: KUBERNETES_TOKEN_NAME
              value: "kuboard-admin"
            - name: KUBOARD_ANONYMOUS_TOKEN
              value: "WoMzrTCxYCoCPxZ91aX0v8d63ycPwFJ3"
          image: "swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-agent:v3"
          imagePullPolicy: Always
          # 生存周期验证
          livenessProbe:
            exec:
              command:
                - /health.sh
            failureThreshold: 3
            initialDelaySeconds: 5
            periodSeconds: 60
            successThreshold: 1
            timeoutSeconds: 1
          name: kuboard-agent
      restartPolicy: Always
---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    k8s.kuboard.cn/ingress: "false"
    k8s.kuboard.cn/service: none
    k8s.kuboard.cn/workload: kuboard-agent-2
  labels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: kuboard-agent-2
  name: kuboard-agent-2
  namespace: kuboard
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s.kuboard.cn/layer: cloud
      k8s.kuboard.cn/name: kuboard-agent-2
  template:
    metadata:
      labels:
        k8s.kuboard.cn/layer: cloud
        k8s.kuboard.cn/name: kuboard-agent-2
    spec:
      serviceAccountName: kuboard-viewer
      tolerations:
        - effect: NoSchedule
          key: node-role.kubernetes.io/master
          operator: Exists
      containers:
        - env:
            - name: KUBOARD_ENDPOINT
              value: "http://192.168.12.108:30567"
            - name: KUBOARD_AGENT_HOST
              value: "192.168.12.108"
            - name: KUBOARD_AGENT_PORT
              value: "30568"
            - name: KUBOARD_AGENT_REMOTE_PORT
              value: "35002"
            - name: KUBOARD_AGENT_PROTOCOL
              value: "tcp"
            - name: KUBOARD_AGENT_PROXY
              value: ""
            - name: KUBOARD_K8S_CLUSTER_NAME
              value: "dev-k8s.weiyieek"
            - name: KUBOARD_AGENT_KEY
              value: "32b7d6572c6255211b4eec9009e4a816"
            - name: KUBERNETES_TOKEN_NAME
              value: "kuboard-viewer"
            - name: KUBOARD_ANONYMOUS_TOKEN
              value: "WoMzrTCxYCoCPxZ91aX0v8d63ycPwFJ3"
          image: "swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-agent:v3"
          imagePullPolicy: Always
          livenessProbe:
            exec:
              command:
                - /health.sh
            failureThreshold: 3
            initialDelaySeconds: 5
            periodSeconds: 60
            successThreshold: 1
            timeoutSeconds: 1
          name: kuboard-agent
      restartPolicy: Always

Step 6.我将所有的kubernetes集群都加入到kuboard进行多集群管理

代码语言:javascript
复制
Kubernetes master is running at https://weiyigeek-lb-vip.k8s:16443  # 高可用
Kubernetes master is running at https://k8s-test.weiyigeek:6443
Kubernetes control plane is running at https://dev-k8s.weiyieek:6443
WeiyiGeek.Kubernetes 集群列表
WeiyiGeek.Kubernetes 集群列表

WeiyiGeek.Kubernetes 集群列表

2.集群管理使用

Step 1.选择k8s-test.weiyigeek集群->default名称空间->常用操作->从YAML中创建。

Step 2.在Kuboiard中创建一个Nginx服务应用。 从 YAML 创建的资源清单将此输入: (注意为了便于管理建议控制器名称与服务发现名称设置一样)

代码语言:javascript
复制
# 字典设置
---
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app: nginx
  name: nginx-config
  namespace: default
data:
  name: WeiyiGeek

# Deployment 控制器 & 初始化容器值得学习
---
apiVersion: apps/v1
kind: Deployment
metadata:	
  name: nginx-demo
  namespace: default
  labels:	
    app: nginx
spec:	
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        volumeMounts:
        - name: web 
          mountPath: "/usr/share/nginx/html"
      initContainers:
      - name: init
        image: busybox:1.33.0
        command: ['sh', '-c', "env;echo ConfigMap:${MSG}--HostName-${HOSTNAME} > /usr/share/nginx/html/index.html"]
        volumeMounts:
        - name: web
          mountPath: "/usr/share/nginx/html"
        env:
        - name: MSG
          valueFrom:
            configMapKeyRef: 
              name: nginx-config
              key: name
      volumes:    
      - name: web 
        emptyDir: {} 
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-demo
  namespace: default
  labels:
    app: nginx
spec:
  selector:
    app: nginx
  type: NodePort
  ports:
  - name: nginx-port
    protocol: TCP
    port: 80
    nodePort: 30000
    targetPort: 80
WeiyiGeek.yaml部署
WeiyiGeek.yaml部署

WeiyiGeek.yaml部署

  • Step 3.部署结果访问http://192.168.12.111:30000/地址返回界面如下:
WeiyiGeek.部署结果
WeiyiGeek.部署结果

WeiyiGeek.部署结果

  • Step 4.查看我们资源清单创建的ConfigMap,点击配置中心->配置字典->我们可以通过资源清单和UI来创建
WeiyiGeek.kuboard-ConfigMap
WeiyiGeek.kuboard-ConfigMap

WeiyiGeek.kuboard-ConfigMap

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言简述
    • 1.Kuboard 介绍
      • 2.Kuboard v3.x 版本
      • 0x01 安装部署
        • 1.安装步骤
          • 2.配置步骤
            • 3.升级配置
            • 0x02 使用实践
              • 1.集群添加
                • 2.集群管理使用
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档