这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

业务管理控制台

业务管理控制台

业务管理控制台

1 - 应用管理

应用管理

应用管理

1.1 - 命名空间

命名空间

Namespaces 是 Kubernetes 在同一个集群中进行逻辑环境划分的对象, 您可以通过 Namespaces 进行管理多个团队多个项目的划分。在 Namespaces 下,Kubernetes 对象的名称必须唯一。您可以通过资源配额进行可用资源的分配,还可以进行不同 Namespaces 网络的访问控制。

使用方法

  • 通过 TKEStack 控制台使用:TKEStack 控制台提供 Namespaces 的增删改查功能。
    • 【业务管理】平台下不支持对命名空间的直接操作,需在【平台管理】下【业务管理】中指定业务通过“创建业务下的命名空间”来实现。
  • 通过 Kubectl 使用:更多详情可查看 Kubernetes 官网文档

相关知识

通过 ResourceQuota 设置 Namespaces 资源的使用配额

一个命名空间下可以拥有多个 ResourceQuota 资源,每个 ResourceQuota 可以设置每个 Namespace 资源的使用约束。可以设置 Namespaces 资源的使用约束如下:

  • 计算资源的配额,例如 CPU、内存。
  • 存储资源的配额,例如请求存储的总存储。
  • Kubernetes 对象的计数,例如 Deployment 个数配额。

不同的 Kubernetes 版本,ResourceQuota 支持的配额设置略有差异,更多详情可查看 Kubernetes ResourceQuota 官方文档。 ResourceQuota 的示例如下所示:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-counts
  namespace: default
spec:
  hard:
    configmaps: "10"  ## 最多10个 ConfigMap
    replicationcontrollers: "20" ## 最多20个 replicationcontroller
    secrets: "10" ## 最多10个 secret
    services: "10" ## 最多10个 service
    services.loadbalancers: "2"  ## 最多2个 Loadbanlacer 模式的 service
    cpu: "1000" ## 该 Namespaces 下最多使用1000个 CPU 的资源
    memory: 200Gi ## 该 Namespaces 下最多使用200Gi的内存

1.2 - 工作负载

工作负载

工作负载

1.2.1 - Deployment

Deployment

Deployment 声明了 Pod 的模板和控制 Pod 的运行策略,适用于部署无状态的应用程序。您可以根据业务需求,对 Deployment 中运行的 Pod 的副本数、调度策略、更新策略等进行声明。

Deployment 控制台操作指引

创建 Deployment

  • 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择需要创建Deployment的【业务】下相应的【命名空间】,展开【工作负载】下拉项,进入【Deployment】管理页面。如下图所示:

  • 单击【新建】,进入 “新建Workload” 页面。根据实际需求,设置 Deployment 参数。关键参数信息如下,其中必填项为工作负载名实例内容器的名称和镜像
    • 工作负载名:输入自定义名称。
    • 标签:给工作负载添加标签
    • 命名空间:根据实际需求进行选择。
    • 类型:选择【Deployment(可扩展的部署 Pod)】。
    • 数据卷:根据需求,为负载添加数据卷为容器提供存,目前支持临时路径、主机路径、云硬盘数据卷、文件存储NFS、配置文件、PVC,还需挂载到容器的指定路径中
    • 临时目录:主机上的一个临时目录,生命周期和Pod一致
    • 主机路径:主机上的真实路径,可以重复使用,不会随Pod一起销毁
    • NFS盘:挂载外部NFS到Pod,用户需要指定相应NFS地址,格式:127.0.0.1:/data
    • ConfigMap:用户在业务Namespace下创建的ConfigMap
    • Secret:用户在业务namespace下创建的Secret
    • PVC:用户在业务namespace下创建的PVC
    • 实例内容器:根据实际需求,为 Deployment 的一个 Pod 设置一个或多个不同的容器。

  • 名称:自定义
  • 镜像:根据实际需求进行选择
    • 镜像版本(Tag):根据实际需求进行填写,不填默认为latest

    • CPU/内存限制:可根据 Kubernetes 资源限制 进行设置 CPU 和内存的限制范围,提高业务的健壮性(建议使用默认值

    • GPU限制:如容器内需要使用GPU,此处填GPU需求

    • 环境变量:用于设置容器内的变量,变量名只能包含大小写字母、数字及下划线,并且不能以数字开头

    • 新增变量:自己设定变量键值对

    • 引用ConfigMap/Secret:引用已有键值对

    • 高级设置:可设置 “工作目录”、“运行命令”、“运行参数”、“镜像更新策略”、“容器健康检查”和“特权级”等参数。这里介绍一下镜像更新策略。

    • 镜像更新策略:提供以下3种策略,请按需选择

      若不设置镜像拉取策略,当镜像版本为空或 latest 时,使用 Always 策略,否则使用 IfNotPresent 策略

      • Always:总是从远程拉取该镜像
      • IfNotPresent:默认使用本地镜像,若本地无该镜像则远程拉取该镜像
      • Never:只使用本地镜像,若本地没有该镜像将报异常
  • 实例数量:根据实际需求选择调节方式,设置实例数量。

  • 手动调节:直接设定实例个数
  • 自动调节:根据设定的触发条件自动调节实例个数,目前支持根据CPU、内存利用率和利用量出入带宽等调节实例个数
  • 定时调节:根据Crontab 语法周期性设置实例个数
  • imagePullSecrets:镜像拉取密钥,用于拉取用户的私有镜像
  • 节点调度策略:根据配置的调度规则,将Pod调度到预期的节点。支持指定节点调度和条件选择调度
  • 注释(Annotations):给Deployment添加相应Annotation,如用户信息等
  • 网络模式:选择Pod网络模式
    • OverLay(虚拟网络):基于 IPIP 和 Host Gateway 的 Overlay 网络方案
    • FloatingIP(浮动 IP):支持容器、物理机和虚拟机在同一个扁平面中直接通过IP进行通信的 Underlay 网络方案。提供了 IP 漂移能力,支持 Pod 重启或迁移时 IP 不变
    • NAT(端口映射):Kubernetes 原生 NAT 网络方案
    • Host(主机网络):Kubernetes 原生 Host 网络方案
  • Service:勾选【启用】按钮,配置负载端口访问

  • 服务访问方式:选择是【仅在集群内部访问】该负载还是集群外部通过【主机端口访问】该负载

    • 仅在集群内访问:使用 Service 的 ClusterIP 模式,自动分配 Service 网段中的 IP,用于集群内访问。数据库类等服务如 MySQL 可以选择集群内访问,以保证服务网络隔离
    • 主机端口访问:提供一个主机端口映射到容器的访问方式,支持 TCP、UDP、Ingress。可用于业务定制上层 LB 转发到 Node
    • Headless Service:不创建用于集群内访问的ClusterIP,访问Service名称时返回后端Pods IP地址,用于适配自有的服务发现机制。解析域名时返回相应 Pod IP 而不是 Cluster IP
  • 端口映射:输入负载要暴露的端口并指定通信协议类型(容器和服务端口建议都使用80

  • Session Affinity: 点击【显示高级设置】出现,会话保持,设置会话保持后,会根据请求IP把请求转发给这个IP之前访问过的Pod。默认None,按需使用

  • 单击【创建Workload】,完成创建。如下图所示:

    当“运行/期望Pod数量”相等时,即表示 Deployment 下的所有 Pod 已创建完成。

更新 Deployment

更新 YAML

  • 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择需要更新的【业务】下相应的【命名空间】,展开【工作负载】列表,进入【Deployment】管理页面。如下图所示:

  • 在需要更新 YAML 的 Deployment 行中,单击【更多】>【编辑YAML】,进入“更新 Deployment” 页面。如下图所示:

  • 在 “更新Deployment” 页面,编辑 YAML,单击【完成】,即可更新 YAML。如下图所示:

更新YAML

回滚 Deployment

  • 登录 TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择要变更的业务下相应的【命名空间】,展开【工作负载】列表,进入【 Deployment】 管理页面,点击进入要回滚的 Deployment 详情页面,单击【修订历史】。如下图所示:

  • 选择合适版本进行回顾。
  • 在弹出的 “回滚资源” 提示框中,单击【确定】即可完成回滚。

调整 Pod 数量

  • 登录 TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择要变更的业务下相应的命名空间,展开工作负载列表,进入 Deployment 管理页面。
  • 点击 Deployment 列表操作栏的【更新实例数量】按钮。如下图所示:

  • 根据实际需求调整 Pod 数量,单击【更新实例数目】即可完成调整。

查看Deployment监控数据

  1. 登录 TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】,。
  2. 选择要变更的业务下相应的【命名空间】,点击进入 【Deployment】 管理页面。
  3. 单击【监控】按钮,在弹出的工作负载监控页面选择工作负载查看监控信息。如下图所示:

Kubectl 操作 Deployment 指引

YAML 示例

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: default
  labels:
    app: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-deployment
  template:
    metadata:
      labels:
        app: nginx-deployment
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
  • kind:标识 Deployment 资源类型。
  • metadata:Deployment 的名称、Namespace、Label 等基本信息。
  • metadata.annotations:对 Deployment 的额外说明,可通过该参数设置腾讯云 TKE 的额外增强能力。
  • spec.replicas:Deployment 管理的 Pod 数量。
  • spec.selector:Deployment 管理 Seletor 选中的 Pod 的 Label。
  • spec.template:Deployment 管理的 Pod 的详细模板配置。

更多参数详情可查看 Kubernetes Deployment 官方文档

Kubectl 创建 Deployment

  1. 参考 YAML 示例,准备 Deployment YAML 文件。

  2. 安装 Kubectl,并连接集群。操作详情请参考 通过 Kubectl 连接集群

  3. 执行以下命令,创建 Deployment YAML 文件。

    kubectl create -f 【Deployment YAML 文件名称】
    

    例如,创建一个文件名为 nginx.Yaml 的 Deployment YAML 文件,则执行以下命令:

    kubectl create -f nginx.yaml
    
  4. 执行以下命令,验证创建是否成功。

    kubectl get deployments
    

    返回类似以下信息,即表示创建成功。

    NAME             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    first-workload   1         1         1            0           6h
    ng               1         1         1            1           42m
    

Kubectl 更新 Deployment

通过 Kubectl 更新 Deployment 有以下三种方法。其中,方法一方法二 均支持 RecreateRollingUpdate 两种更新策略。

  • Recreate 更新策略为先销毁全部 Pod,再重新创建 Deployment。
  • RollingUpdate 更新策略为滚动更新策略,逐个更新 Deployment 的 Pod。RollingUpdate 还支持暂停、设置更新时间间隔等。

方法一

执行以下命令,更新 Deployment。

kubectl edit  deployment/【name】

此方法适用于简单的调试验证,不建议在生产环境中直接使用。您可以通过此方法更新任意的 Deployment 参数。

方法二

执行以下命令,更新指定容器的镜像。

kubectl set image deployment/【name】 【containerName】=【image:tag】

建议保持 Deployment 的其他参数不变,业务更新时,仅更新容器镜像。

方法三

执行以下命令,滚动更新指定资源。

kubectl rolling-update 【NAME】 -f 【FILE】

更多滚动更新可参见 滚动更新说明

Kubectl 回滚 Deployment

  1. 执行以下命令,查看 Deployment 的更新历史。

    kubectl rollout history deployment/【name】
    
  2. 执行以下命令,查看指定版本详情。

    kubectl rollout history deployment/【name】 --revision=【REVISION】
    
  3. 执行以下命令,回滚到前一个版本。

    kubectl rollout undo deployment/【name】
    

    如需指定回滚版本号,可执行以下命令。

    kubectl rollout undo deployment/【name】 --to-revision=【REVISION】
    

Kubectl 调整 Pod 数量

手动更新 Pod 数量

执行以下命令,手动更新 Pod 数量。

kubectl scale deployment 【NAME】 --replicas=【NUMBER】

自动更新 Pod 数量

前提条件

开启集群中的 HPA 功能。TKE 创建的集群默认开启 HPA 功能。

操作步骤

执行以下命令,设置 Deployment 的自动扩缩容。

kubectl autoscale deployment 【NAME】 --min=10 --max=15 --cpu-percent=80

Kubectl 删除 Deployment

执行以下命令,删除 Deployment。

kubectl delete deployment 【NAME】

1.2.2 - StatefulSet

StatefulSet

StatefulSet 主要用于管理有状态的应用,创建的 Pod 拥有根据规范创建的持久型标识符。Pod 迁移或销毁重启后,标识符仍会保留。 在需要持久化存储时,您可以通过标识符对存储卷进行一一对应。如果应用程序不需要持久的标识符,建议您使用 Deployment 部署应用程序。

StatefulSet 控制台操作指引

创建 StatefulSet

  • 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择需要创建StatefulSet的【业务】下相应的【命名空间】,展开【工作负载】下拉项,进入【StatefulSet】管理页面。如下图所示:

  • 单击【新建】,进入 “新建Workload” 页面。根据实际需求,设置 StatefulSet 参数。

  • 关键参数信息如下,其中必填项为工作负载名实例内容器的名称和镜像

    • 工作负载名:输入自定义名称。
    • 标签:给工作负载添加标签
    • 命名空间:根据实际需求进行选择。
    • 类型:选择【StatefulSet】。
    • 数据卷:根据需求,为负载添加数据卷为容器提供存,目前支持临时路径、主机路径、云硬盘数据卷、文件存储NFS、配置文件、PVC,还需挂载到容器的指定路径中
    • 临时目录:主机上的一个临时目录,生命周期和Pod一致
    • 主机路径:主机上的真实路径,可以重复使用,不会随Pod一起销毁
    • NFS盘:挂载外部NFS到Pod,用户需要指定相应NFS地址,格式:127.0.0.1:/data
    • ConfigMap:用户在业务Namespace下创建的ConfigMap
    • Secret:用户在业务namespace下创建的Secret
    • PVC:用户在业务namespace下创建的PVC
    • 实例内容器:根据实际需求,为 StatefulSet的一个 Pod 设置一个或多个不同的容器。
    • 名称:自定义
    • 镜像:根据实际需求进行选择
      • 镜像版本(Tag):根据实际需求进行填写,不填默认为latest
      • CPU/内存限制:可根据 Kubernetes 资源限制 进行设置 CPU 和内存的限制范围,提高业务的健壮性(建议使用默认值
      • GPU限制:如容器内需要使用GPU,此处填GPU需求
      • 环境变量:用于设置容器内的变量,变量名只能包含大小写字母、数字及下划线,并且不能以数字开头
        • 新增变量:自己设定变量键值对
        • 引用ConfigMap/Secret:引用已有键值对
      • 高级设置:可设置 “工作目录”、“运行命令”、“运行参数”、“镜像更新策略”、“容器健康检查”和“特权级”等参数。这里介绍一下镜像更新策略。
        • 镜像更新策略:提供以下3种策略,请按需选择

          若不设置镜像拉取策略,当镜像版本为空或 latest 时,使用 Always 策略,否则使用 IfNotPresent 策略

          • Always:总是从远程拉取该镜像
          • IfNotPresent:默认使用本地镜像,若本地无该镜像则远程拉取该镜像
          • Never:只使用本地镜像,若本地没有该镜像将报异常
    • 实例数量:根据实际需求选择调节方式,设置实例数量。
    • 手动调节:直接设定实例个数
    • 自动调节:根据设定的触发条件自动调节实例个数,目前支持根据CPU、内存利用率和利用量出入带宽等调节实例个数
    • 定时调节:根据Crontab 语法周期性设置实例个数
    • imagePullSecrets:镜像拉取密钥,用于拉取用户的私有镜像
    • 节点调度策略:根据配置的调度规则,将Pod调度到预期的节点。支持指定节点调度和条件选择调度
    • 注释(Annotations):给StatefulSet添加相应Annotation,如用户信息等
    • 网络模式:选择Pod网络模式
    • OverLay(虚拟网络):基于 IPIP 和 Host Gateway 的 Overlay 网络方案
    • FloatingIP(浮动 IP):支持容器、物理机和虚拟机在同一个扁平面中直接通过IP进行通信的 Underlay 网络方案。提供了 IP 漂移能力,支持 Pod 重启或迁移时 IP 不变
    • NAT(端口映射):Kubernetes 原生 NAT 网络方案
    • Host(主机网络):Kubernetes 原生 Host 网络方案
    • Service:勾选【启用】按钮,配置负载端口访问

    注意:如果不勾选【启用】则不会创建Service

  • 服务访问方式:选择是【仅在集群内部访问】该负载还是集群外部通过【主机端口访问】该负载

    • 仅在集群内访问:使用 Service 的 ClusterIP 模式,自动分配 Service 网段中的 IP,用于集群内访问。数据库类等服务如 MySQL 可以选择集群内访问,以保证服务网络隔离
    • 主机端口访问:提供一个主机端口映射到容器的访问方式,支持 TCP、UDP、Ingress。可用于业务定制上层 LB 转发到 Node
    • Headless Service:不创建用于集群内访问的ClusterIP,访问Service名称时返回后端Pods IP地址,用于适配自有的服务发现机制。解析域名时返回相应 Pod IP 而不是 Cluster IP
  • 端口映射:输入负载要暴露的端口并指定通信协议类型(容器和服务端口建议都使用80

  • Session Affinity: 点击【显示高级设置】出现,会话保持,设置会话保持后,会根据请求IP把请求转发给这个IP之前访问过的Pod。默认None,按需使用

  • 单击【创建Workload】,完成创建。

更新 StatefulSet

更新 YAML

  1. 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  2. 选择需要更新的【业务】下相应的【命名空间】,展开【工作负载】列表,进入【StatefulSet】管理页面。
  3. 在需要更新 YAML 的 StatefulSet 行中,选择【更多】>【编辑YAML】,进入更新 StatefulSet 页面。
  4. 在 “更新StatefulSet” 页面编辑 YAML,并单击【完成】即可更新 YAML。

Kubectl 操作 StatefulSet 指引

YAML 示例

apiVersion: v1
kind: Service  ## 创建一个 Headless Service,用于控制网络域
metadata:
  name: nginx
  namespace: default
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet ### 创建一个 Nginx的StatefulSet
metadata:
  name: web
  namespace: default
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 3 # by default is 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "cbs"
      resources:
        requests:
          storage: 10Gi
  • kind:标识 StatefulSet 资源类型。
  • metadata:StatefulSet 的名称、Label等基本信息。
  • metadata.annotations:对 StatefulSet 的额外说明,可通过该参数设置腾讯云 TKE 的额外增强能力。
  • spec.template:StatefulSet 管理的 Pod 的详细模板配置。
  • spec.volumeClaimTemplates:提供创建 PVC&PV 的模板。

更多参数详情可查看 Kubernetes StatefulSet 官方文档

创建 StatefulSet

  1. 参考 YAML 示例,准备 StatefulSet YAML 文件。

  2. 安装 Kubectl,并连接集群。操作详情请参考 通过 Kubectl 连接集群

  3. 执行以下命令,创建 StatefulSet YAML 文件。

    kubectl create -f StatefulSet YAML 文件名称
    

    例如,创建一个文件名为 web.yaml 的 StatefulSet YAML 文件,则执行以下命令:

    kubectl create -f web.yaml
    
  4. 执行以下命令,验证创建是否成功。

    kubectl get StatefulSet
    

    返回类似以下信息,即表示创建成功。

    NAME      DESIRED   CURRENT   AGE
    test      1         1         10s
    

更新 StatefulSet

执行以下命令,查看 StatefulSet 的更新策略类型。

kubectl get ds/<daemonset-name> -o go-template='{{.spec.updateStrategy.type}}{{"\n"}}'

StatefulSet 有以下两种更新策略类型:

  • OnDelete:默认更新策略。该更新策略在更新 StatefulSet 后,需手动删除旧的 StatefulSet Pod 才会创建新的 StatefulSet Pod。
  • RollingUpdate:支持 Kubernetes 1.7或更高版本。该更新策略在更新 StatefulSet 模板后,旧的 StatefulSet Pod 将被终止,并且以滚动更新方式创建新的 StatefulSet Pod(Kubernetes 1.7或更高版本)。

方法一

执行以下命令,更新 StatefulSet。

kubectl edit StatefulSet/[name]

此方法适用于简单的调试验证,不建议在生产环境中直接使用。您可以通过此方法更新任意的 StatefulSet 参数。

方法二

执行以下命令,更新指定容器的镜像。

kubectl patch statefulset <NAME> --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"<newImage>"}]'

建议保持 StatefulSet 的其他参数不变,业务更新时,仅更新容器镜像。

如果更新的 StatefulSet 是滚动更新方式的策略,可执行以下命令查看更新状态:

kubectl rollout status sts/<StatefulSet-name>

删除 StatefulSet

执行以下命令,删除 StatefulSet。

kubectl delete  StatefulSet [NAME] --cascade=false

–cascade=false 参数表示 Kubernetes 仅删除 StatefulSet,且不删除任何 Pod。如需删除 Pod,则执行以下命令:

kubectl delete  StatefulSet [NAME]

更多 StatefulSet 相关操作可查看 Kubernetes官方指引

1.2.3 - DaomonSet

DaomonSet

DaomonSet

DaemonSet 主要用于部署常驻集群内的后台程序,例如节点的日志采集。DaemonSet 保证在所有或部分节点上均运行指定的 Pod。 新节点添加到集群内时,也会有自动部署 Pod;节点被移除集群后,Pod 将自动回收。

调度说明

若配置了 Pod 的 nodeSelector 或 affinity 参数,DaemonSet 管理的 Pod 将按照指定的调度规则调度。若未配置 Pod 的 nodeSelector 或 affinity 参数,则将在所有的节点上部署 Pod。

DaemonSet 控制台操作指引

创建 DaemonSet

  • 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择需要创建DaemonSet的【业务】下相应的【命名空间】,展开【工作负载】下拉项,进入【DaemonSet】管理页面。如下图所示:

  • 单击【新建】,进入 “新建Workload” 页面。

    根据实际需求,设置 DaemonSet 参数。关键参数信息如下:

    • 工作负载名:输入自定义名称。
    • 标签:给工作负载添加标签
    • 命名空间:根据实际需求进行选择。
    • 类型:选择【DaemonSet】。
    • 数据卷:根据需求,为负载添加数据卷为容器提供存,目前支持临时路径、主机路径、云硬盘数据卷、文件存储NFS、配置文件、PVC,还需挂载到容器的指定路径中
    • 临时目录:主机上的一个临时目录,生命周期和Pod一致
    • 主机路径:主机上的真实路径,可以重复使用,不会随Pod一起销毁
    • NFS盘:挂载外部NFS到Pod,用户需要指定相应NFS地址,格式:127.0.0.1:/data
    • ConfigMap:用户在业务Namespace下创建的ConfigMap
    • Secret:用户在业务namespace下创建的Secret
    • PVC:用户在业务namespace下创建的PVC
    • 实例内容器:根据实际需求,为 DaemonSet 的一个 Pod 设置一个或多个不同的容器。
      • 名称:自定义。
      • 镜像:根据实际需求进行选择。
      • 镜像版本(Tag):根据实际需求进行填写。
      • CPU/内存限制:可根据 Kubernetes 资源限制 进行设置 CPU 和内存的限制范围,提高业务的健壮性。
      • GPU限制:如容器内需要使用GPU,此处填GPU需求
      • 环境变量:用于设置容器内的变量,变量名只能包含大小写字母、数字及下划线,并且不能以数字开头
        • 新增变量:自己设定变量键值对

        • 引用ConfigMap/Secret:引用已有键值对

        • 高级设置:可设置 “工作目录”、“运行命令”、“运行参数”、“镜像更新策略”、“容器健康检查”和“特权级”等参数。这里介绍一下镜像更新策略。

        • 镜像更新策略:提供以下3种策略,请按需选择

          若不设置镜像拉取策略,当镜像版本为空或 latest 时,使用 Always 策略,否则使用 IfNotPresent 策略

          • Always:总是从远程拉取该镜像
          • IfNotPresent:默认使用本地镜像,若本地无该镜像则远程拉取该镜像
          • Never:只使用本地镜像,若本地没有该镜像将报异常
    • imagePullSecrets:镜像拉取密钥,用于拉取用户的私有镜像
    • 节点调度策略:根据配置的调度规则,将Pod调度到预期的节点。支持指定节点调度和条件选择调度
    • 注释(Annotations):给DaemonSet添加相应Annotation,如用户信息等
    • 网络模式:选择Pod网络模式
      • OverLay(虚拟网络):基于 IPIP 和 Host Gateway 的 Overlay 网络方案
      • FloatingIP(浮动 IP):支持容器、物理机和虚拟机在同一个扁平面中直接通过IP进行通信的 Underlay 网络方案。提供了 IP 漂移能力,支持 Pod 重启或迁移时 IP 不变
      • NAT(端口映射):Kubernetes 原生 NAT 网络方案
      • Host(主机网络):Kubernetes 原生 Host 网络方案
  • 单击【创建Workload】,完成创建。

更新 DaemonSet

更新 YAML

  1. 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  2. 选择需要更新的【业务】下相应的命名空间,展开【工作负载】列表,进入【DaemonSet】管理页面。
  3. 在需要更新 YAML 的 DaemonSet 行中,选择【更多】>【编辑YAML】,进入更新 DaemonSet 页面。
  4. 在 “更新DaemonSet” 页面编辑 YAML,并单击【完成】即可更新 YAML。

Kubectl 操作 DaemonSet 指引

YAML 示例

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd-elasticsearch
  namespace: kube-system
  labels:
    k8s-app: fluentd-logging
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
      containers:
      - name: fluentd-elasticsearch
        image: k8s.gcr.io/fluentd-elasticsearch:1.20
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
      terminationGracePeriodSeconds: 30
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers

!以上 YAML 示例引用于 https://kubernetes.io/docs/concepts/workloads/controllers/daemonset, 创建时可能存在容器镜像拉取不成功的情况,仅用于本文介绍 DaemonSet 的组成。

  • kind:标识 DaemonSet 资源类型。
  • metadata:DaemonSet 的名称、Label等基本信息。
  • metadata.annotations:DaemonSet 的额外说明,可通过该参数设置腾讯云 TKE 的额外增强能力。
  • spec.template:DaemonSet 管理的 Pod 的详细模板配置。

更多可查看 Kubernetes DaemonSet 官方文档

Kubectl 创建 DaemonSet

  1. 参考 YAML 示例,准备 DaemonSet YAML 文件。

  2. 安装 Kubectl,并连接集群。操作详情请参考 通过 Kubectl 连接集群

  3. 执行以下命令,创建 DaemonSet YAML 文件。

    kubectl create -f DaemonSet YAML 文件名称
    

    例如,创建一个文件名为 fluentd-elasticsearch.yaml 的 DaemonSet YAML 文件,则执行以下命令:

    kubectl create -f fluentd-elasticsearch.yaml
    
  4. 执行以下命令,验证创建是否成功。

    kubectl get DaemonSet
    

    返回类似以下信息,即表示创建成功。

    NAME       DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR       AGE
    frontend   0         0         0         0            0           app=frontend-node   16d
    

Kubectl 更新 DaemonSet

执行以下命令,查看 DaemonSet 的更新策略类型。

kubectl get ds/<daemonset-name> -o go-template='{{.spec.updateStrategy.type}}{{"\n"}}'

DaemonSet 有以下两种更新策略类型:

  • OnDelete:默认更新策略。该更新策略在更新 DaemonSet 后,需手动删除旧的 DaemonSet Pod 才会创建新的DaemonSet Pod。
  • RollingUpdate:支持 Kubernetes 1.6或更高版本。该更新策略在更新 DaemonSet 模板后,旧的 DaemonSet Pod 将被终止,并且以滚动更新方式创建新的 DaemonSet Pod。

方法一

执行以下命令,更新 DaemonSet。

kubectl edit DaemonSet/[name]

此方法适用于简单的调试验证,不建议在生产环境中直接使用。您可以通过此方法更新任意的 DaemonSet 参数。

方法二

执行以下命令,更新指定容器的镜像。

kubectl set image ds/[daemonset-name][container-name]=[container-new-image]

建议保持 DaemonSet 的其他参数不变,业务更新时,仅更新容器镜像。

Kubectl 回滚 DaemonSet

  1. 执行以下命令,查看 DaemonSet 的更新历史。

    kubectl rollout history daemonset /[name]
    
  2. 执行以下命令,查看指定版本详情。

    kubectl rollout history daemonset /[name] --revision=[REVISION]
    
  3. 执行以下命令,回滚到前一个版本。

    kubectl rollout undo daemonset /[name]
    

    如需指定回滚版本号,可执行以下命令。

    kubectl rollout undo daemonset /[name] --to-revision=[REVISION]
    

Kubectl 删除 DaemonSet

执行以下命令,删除 DaemonSet。

kubectl delete  DaemonSet [NAME]

1.2.4 - Job

Job

Job

Job 控制器会创建 1-N 个 Pod,这些 Pod 按照运行规则运行,直至运行结束。Job 可用于批量计算、数据分析等场景。通过设置重复执行次数、并行度、重启策略等满足业务述求。 Job 执行完成后,不再创建新的 Pod,也不会删除 Pod,您可在 “日志” 中查看已完成的 Pod 的日志。如果您删除了 Job,Job 创建的 Pod 也会同时被删除,将查看不到该 Job 创建的 Pod 的日志。

Job 控制台操作指引

创建 Job

  1. 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。

  2. 选择需要创建 Job 的【业务】下相应的【命名空间】,展开【工作负载】下拉项,进入【 Job】 管理页面。

  3. 单击【新建】,进入 “新建Workload” 页面。如下图所示:

    新建Workload

  4. 根据实际需求,设置 Job 参数。关键参数信息如下:

    • 工作负载名:输入自定义名称。

    • 标签:给工作负载添加标签

    • 命名空间:根据实际需求进行选择。

    • 类型:选择【Job(单次任务)】。

    • Job设置

      • 重复执行次数:Job 管理的 Pod 需要重复执行的次数。
      • 并行度:Job 并行执行的 Pod 数量。
      • 失败重启策略:Pod下容器异常推出后的重启策略。
        • Never:不重启容器,直至 Pod 下所有容器退出。
        • OnFailure:Pod 继续运行,容器将重新启动。
    • 数据卷:根据需求,为负载添加数据卷为容器提供存,目前支持临时路径、主机路径、云硬盘数据卷、文件存储NFS、配置文件、PVC,还需挂载到容器的指定路径中

    • 临时目录:主机上的一个临时目录,生命周期和Pod一致

    • 主机路径:主机上的真实路径,可以重复使用,不会随Pod一起销毁

    • NFS盘:挂载外部 NFS 到 Pod,用户需要指定相应 NFS 地址,格式:127.0.0.1:/data

    • ConfigMap:用户在业务Namespace下创建的ConfigMap

    • Secret:用户在业务namespace下创建的Secret

    • PVC:用户在业务namespace下创建的PVC

    • 实例内容器:根据实际需求,为 Job 的一个 Pod 设置一个或多个不同的容器。

      • 名称:自定义。
      • 镜像:根据实际需求进行选择。
      • 镜像版本(Tag):根据实际需求进行填写。
      • CPU/内存限制:可根据 Kubernetes 资源限制 进行设置 CPU 和内存的限制范围,提高业务的健壮性。
      • GPU限制:如容器内需要使用GPU,此处填GPU需求
      • 环境变量:用于设置容器内的变量,变量名只能包含大小写字母、数字及下划线,并且不能以数字开头
        • 新增变量:自己设定变量键值对

        • 引用ConfigMap/Secret:引用已有键值对

        • 高级设置:可设置 “工作目录”、“运行命令”、“运行参数”、“镜像更新策略”、“容器健康检查”和“特权级”等参数。这里介绍一下镜像更新策略。

        • 镜像更新策略:提供以下3种策略,请按需选择

          若不设置镜像拉取策略,当镜像版本为空或 latest 时,使用 Always 策略,否则使用 IfNotPresent 策略

          • Always:总是从远程拉取该镜像
          • IfNotPresent:默认使用本地镜像,若本地无该镜像则远程拉取该镜像
          • Never:只使用本地镜像,若本地没有该镜像将报异常
    • imagePullSecrets:镜像拉取密钥,用于拉取用户的私有镜像

    • 节点调度策略:根据配置的调度规则,将Pod调度到预期的节点。支持指定节点调度和条件选择调度

    • 注释(Annotations):给Pod添加相应Annotation,如用户信息等

    • 网络模式:选择Pod网络模式

      • OverLay(虚拟网络):基于 IPIP 和 Host Gateway 的 Overlay 网络方案
      • FloatingIP(浮动 IP):支持容器、物理机和虚拟机在同一个扁平面中直接通过IP进行通信的 Underlay 网络方案。提供了 IP 漂移能力,支持 Pod 重启或迁移时 IP 不变
      • NAT(端口映射):Kubernetes 原生 NAT 网络方案
      • Host(主机网络):Kubernetes 原生 Host 网络方案
    • 单击【创建Workload】,完成创建。

      查看 Job 状态

  5. 登录 TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。

  6. 选择需要创建 Job 的业务下相应的【命名空间】,展开【工作负载】下拉项,进入【 Job 】管理页面。

  7. 单击需要查看状态的【 Job 名称】,即可查看 Job 详情。

删除 Job

Job 执行完成后,不再创建新的 Pod,也不会删除 Pod,您可在【业务管理】控制台下的【应用管理】下的 【日志】 中查看已完成的 Pod 的日志。如果您删除了 Job,Job 创建的 Pod 也会同时被删除,将查看不到该 Job 创建的 Pod 的日志。

Kubectl 操作 Job 指引

YAML 示例

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  completions: 2
  parallelism: 2
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4
  • kind:标识 Job 资源类型。
  • metadata:Job 的名称、Label等基本信息。
  • metadata.annotations:Job 的额外说明,可通过该参数设置腾讯云 TKE 的额外增强能力。
  • spec.completions:Job 管理的 Pod 重复执行次数。
  • spec.parallelism:Job 并行执行的 Pod 数。
  • spec.template:Job 管理的 Pod 的详细模板配置。

创建 Job

  1. 参考 YAML 示例,准备 Job YAML 文件。

  2. 安装 Kubectl,并连接集群。操作详情请参考 通过 Kubectl 连接集群

  3. 创建 Job YAML 文件。

    kubectl create -f Job YAML 文件名称
    

    例如,创建一个文件名为 pi.yaml 的 Job YAML 文件,则执行以下命令:

    kubectl create -f pi.yaml
    
  4. 执行以下命令,验证创建是否成功。

    kubectl get job
    

    返回类似以下信息,即表示创建成功。

    NAME      DESIRED   SUCCESSFUL   AGE
    job       1         0            1m
    

删除 Job

执行以下命令,删除 Job。

kubectl delete job [NAME]

1.2.5 - CronJob

CronJob

CronJob

一个 CronJob 对象类似于 crontab(cron table)文件中的一行。它根据指定的预定计划周期性地运行一个 Job,格式可以参考 Cron。 Cron 格式说明如下:

# 文件格式说明
#  ——分钟(0 - 59)
# |  ——小时(0 - 23)
# | |  ——日(1 - 31)
# | | |  ——月(1 - 12)
# | | | |  ——星期(0 - 6)
# | | | | |
# * * * * *

CronJob 控制台操作指引

创建 CronJob

  1. 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。

  2. 选择需要创建CronJob的业务下相应的【命名空间】,展开【工作负载】下拉项,进入【CronJob】管理页面。如下图所示:

  3. 单击【创建】按钮,进入 新建Workload页面。

  4. 根据实际需求,设置 CronJob 参数。关键参数信息如下:

    • 工作负载名:输入自定义名称。
    • 标签:给工作负载添加标签
    • 命名空间:根据实际需求进行选择。
    • 类型:选择【CronJob(按照Cron的计划定时运行)】。
    • 执行策略:根据 Cron 格式设置任务的定期执行策略。
    • Job设置
      • 重复执行次数:Job 管理的 Pod 需要重复执行的次数。
      • 并行度:Job 并行执行的 Pod 数量。
      • 失败重启策略:Pod下容器异常推出后的重启策略。
        • Never:不重启容器,直至 Pod 下所有容器退出。
        • OnFailure:Pod 继续运行,容器将重新启动。
    • 数据卷:根据需求,为负载添加数据卷为容器提供存,目前支持临时路径、主机路径、云硬盘数据卷、文件存储NFS、配置文件、PVC,还需挂载到容器的指定路径中
    • 临时目录:主机上的一个临时目录,生命周期和Pod一致
    • 主机路径:主机上的真实路径,可以重复使用,不会随Pod一起销毁
    • NFS盘:挂载外部NFS到Pod,用户需要指定相应NFS地址,格式:127.0.0.1:/data
    • ConfigMap:用户在业务Namespace下创建的ConfigMap
    • Secret:用户在业务namespace下创建的Secret
    • PVC:用户在业务namespace下创建的PVC
    • 实例内容器:根据实际需求,为 CronJob 的一个 Pod 设置一个或多个不同的容器。
      • 名称:自定义。
      • 镜像:根据实际需求进行选择。
      • 镜像版本(Tag):根据实际需求进行填写。
      • CPU/内存限制:可根据 Kubernetes 资源限制 进行设置 CPU 和内存的限制范围,提高业务的健壮性。
      • GPU限制:如容器内需要使用GPU,此处填GPU需求
      • 环境变量:用于设置容器内的变量,变量名只能包含大小写字母、数字及下划线,并且不能以数字开头
        • 新增变量:自己设定变量键值对

        • 引用ConfigMap/Secret:引用已有键值对

        • 高级设置:可设置 “工作目录”、“运行命令”、“运行参数”、“镜像更新策略”、“容器健康检查”和“特权级”等参数。这里介绍一下镜像更新策略。

        • 镜像更新策略:提供以下3种策略,请按需选择

          若不设置镜像拉取策略,当镜像版本为空或 latest 时,使用 Always 策略,否则使用 IfNotPresent 策略

          • Always:总是从远程拉取该镜像
          • IfNotPresent:默认使用本地镜像,若本地无该镜像则远程拉取该镜像
          • Never:只使用本地镜像,若本地没有该镜像将报异常
    • imagePullSecrets:镜像拉取密钥,用于拉取用户的私有镜像
    • 节点调度策略:根据配置的调度规则,将Pod调度到预期的节点。支持指定节点调度和条件选择调度
    • 注释(Annotations):给Pod添加相应Annotation,如用户信息等
    • 网络模式:选择Pod网络模式
      • OverLay(虚拟网络):基于 IPIP 和 Host Gateway 的 Overlay 网络方案
      • FloatingIP(浮动 IP):支持容器、物理机和虚拟机在同一个扁平面中直接通过IP进行通信的 Underlay 网络方案。提供了 IP 漂移能力,支持 Pod 重启或迁移时 IP 不变
      • NAT(端口映射):Kubernetes 原生 NAT 网络方案
      • Host(主机网络):Kubernetes 原生 Host 网络方案
  5. 单击【创建Workload】,完成创建。

查看 CronJob 状态

  1. 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  2. 选择需要创建CronJob的【业务】下相应的【命名空间】,展开【工作负载】下拉项,进入【CronJob】管理页面。
  3. 单击需要查看状态的 CronJob 名称,即可查看 CronJob 详情。

Kubectl 操作 CronJob 指引

YAML 示例

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure
  • kind:标识 CronJob 资源类型。
  • metadata:CronJob 的名称、Label等基本信息。
  • metadata.annotations:对 CronJob 的额外说明,可通过该参数设置腾讯云 TKE 的额外增强能力。
  • spec.schedule:CronJob 执行的 Cron 的策略。
  • spec.jobTemplate:Cron 执行的 Job 模板。

创建 CronJob

方法一

  1. 参考 YAML 示例,准备 CronJob YAML 文件。

  2. 安装 Kubectl,并连接集群。操作详情请参考 通过 Kubectl 连接集群

  3. 执行以下命令,创建 CronJob YAML 文件。

    kubectl create -f CronJob YAML 文件名称
    

    例如,创建一个文件名为 cronjob.yaml 的 CronJob YAML 文件,则执行以下命令:

    kubectl create -f cronjob.yaml
    

方法二

  1. 通过执行kubectl run命令,快速创建一个 CronJob。

    例如,快速创建一个不需要写完整配置信息的 CronJob,则执行以下命令:

    kubectl run hello --schedule="*/1 * * * *" --restart=OnFailure --image=busybox -- /bin/sh -c "date; echo Hello"
    
  2. 执行以下命令,验证创建是否成功。

    kubectl get cronjob [NAME]
    

    返回类似以下信息,即表示创建成功。

    NAME      SCHEDULE    SUSPEND   ACTIVE    LAST SCHEDULE   AGE
    cronjob   * * * * *   False     0         <none>          15s
    

删除 CronJob

!

  • 执行此删除命令前,请确认是否存在正在创建的 Job,否则执行该命令将终止正在创建的 Job。
  • 执行此删除命令时,已创建的 Job 和已完成的 Job 均不会被终止或删除。
  • 如需删除 CronJob 创建的 Job,请手动删除。

执行以下命令,删除 CronJob。

kubectl delete cronjob [NAME]

1.2.6 - TApp

TApp

TApp

Kubernetes现有应用类型(如:Deployment、StatefulSet等)无法满足很多非微服务应用的需求,比如:操作(升级、停止等)应用中的指定pod、应用支持多版本的pod。如果要将这些应用改造为适合于这些workload的应用,需要花费很大精力,这将使大多数用户望而却步。

为解决上述复杂应用管理场景,TKEStack基于Kubernetes CRD开发了一种新的应用类型TAPP,它是一种通用类型的workload,同时支持service和batch类型作业,满足绝大部分应用场景,它能让用户更好的将应用迁移到Kubernetes集群。

查询TApp可查看更多相关信息

TApp控制台操作指引

创建 TApp

注意:使用前提,在【扩展组件】安装TApp

  • 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择需要创建TApp的【业务】下相应的【命名空间】,展开【工作负载】下拉项,进入【TApp】管理页面。如下图所示:

  • 单击【新建】,进入 “新建Workload” 页面。根据实际需求,设置 TApp 参数。关键参数信息如下,其中必填项为工作负载名实例内容器的名称和镜像

    • 工作负载名:输入自定义名称。
    • 标签:给工作负载添加标签
    • 命名空间:根据实际需求进行选择。
    • 类型:选择【TApp】。
    • 节点异常策略
      • 迁移,调度策略与Deployment一致,Pod会迁移到新的节点
      • 不迁移,调度策略与StatefulSel一致,异常pod不会被迁移
    • 数据卷:根据需求,为负载添加数据卷为容器提供存,目前支持临时路径、主机路径、云硬盘数据卷、文件存储NFS、配置文件、PVC,还需挂载到容器的指定路径中
    • 临时目录:主机上的一个临时目录,生命周期和Pod一致
    • 主机路径:主机上的真实路径,可以重复使用,不会随Pod一起销毁
    • NFS盘:挂载外部NFS到Pod,用户需要指定相应NFS地址,格式:127.0.0.1:/data
    • ConfigMap:用户在业务Namespace下创建的ConfigMap
    • Secret:用户在业务namespace下创建的Secret
    • PVC:用户在业务namespace下创建的PVC
    • 实例内容器:根据实际需求,为 TApp 的一个 Pod 设置一个或多个不同的容器。
      • 名称:自定义
      • 镜像:根据实际需求进行选择
        • 镜像版本(Tag):根据实际需求进行填写,不填默认为latest

        • CPU/内存限制:可根据 Kubernetes 资源限制 进行设置 CPU 和内存的限制范围,提高业务的健壮性(建议使用默认值

        • GPU限制:如容器内需要使用GPU,此处填GPU需求

        • 环境变量:用于设置容器内的变量,变量名只能包含大小写字母、数字及下划线,并且不能以数字开头

        • 新增变量:自己设定变量键值对

        • 引用ConfigMap/Secret:引用已有键值对

        • 高级设置:可设置 “工作目录”、“运行命令”、“运行参数”、“镜像更新策略”、“容器健康检查”和“特权级”等参数。这里介绍一下镜像更新策略。

        • 镜像更新策略:提供以下3种策略,请按需选择

          若不设置镜像拉取策略,当镜像版本为空或 latest 时,使用 Always 策略,否则使用 IfNotPresent 策略

          • Always:总是从远程拉取该镜像
          • IfNotPresent:默认使用本地镜像,若本地无该镜像则远程拉取该镜像
          • Never:只使用本地镜像,若本地没有该镜像将报异常
    • 实例数量:根据实际需求选择调节方式,设置实例数量。
    • 手动调节:直接设定实例个数
    • 自动调节:根据设定的触发条件自动调节实例个数,目前支持根据CPU、内存利用率和利用量出入带宽等调节实例个数
    • 定时调节:根据Crontab 语法周期性设置实例个数
    • imagePullSecrets:镜像拉取密钥,用于拉取用户的私有镜像
    • 节点调度策略:根据配置的调度规则,将Pod调度到预期的节点。支持指定节点调度和条件选择调度
    • 注释(Annotations):给TApp添加相应Annotation,如用户信息等
    • 网络模式:选择Pod网络模式
      • OverLay(虚拟网络):基于 IPIP 和 Host Gateway 的 Overlay 网络方案
      • FloatingIP(浮动 IP):支持容器、物理机和虚拟机在同一个扁平面中直接通过IP进行通信的 Underlay 网络方案。提供了 IP 漂移能力,支持 Pod 重启或迁移时 IP 不变
      • NAT(端口映射):Kubernetes 原生 NAT 网络方案
      • Host(主机网络):Kubernetes 原生 Host 网络方案
    • Service:勾选【启用】按钮,配置负载端口访问

    注意:如果不勾选【启用】则不会创建Service

  • 服务访问方式:选择是【仅在集群内部访问】该负载还是集群外部通过【主机端口访问】该负载

    • 仅在集群内访问:使用 Service 的 ClusterIP 模式,自动分配 Service 网段中的 IP,用于集群内访问。数据库类等服务如 MySQL 可以选择集群内访问,以保证服务网络隔离
    • 主机端口访问:提供一个主机端口映射到容器的访问方式,支持 TCP、UDP、Ingress。可用于业务定制上层 LB 转发到 Node
    • Headless Service:不创建用于集群内访问的ClusterIP,访问Service名称时返回后端Pods IP地址,用于适配自有的服务发现机制。解析域名时返回相应 Pod IP 而不是 Cluster IP
  • 端口映射:输入负载要暴露的端口并指定通信协议类型(容器和服务端口建议都使用80

  • Session Affinity: 点击【显示高级设置】出现,会话保持,设置会话保持后,会根据请求IP把请求转发给这个IP之前访问过的Pod。默认None,按需使用

  • 单击【创建Workload】,完成创建。如下图所示:

    当“运行/期望Pod数量”相等时,即表示 TApp 下的所有 Pod 已创建完成。

更新 TApp

更新 YAML

  • 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择需要更新的【业务】下相应的【命名空间】,展开【工作负载】列表,进入【TApp】管理页面。在需要更新 YAML 的 TApp 行中,单击【更多】>【编辑YAML】,进入“更新 TApp” 页面。如下图所示:

  • 在 “更新TApp” 页面,编辑 YAML,单击【完成】,即可更新 YAML。如下图所示:

更新YAML

调整 Pod 数量

  • 登录 TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择要变更的业务下相应的命名空间,展开工作负载列表,进入 TApp 管理页面。
  • 点击 TApp 列表操作栏的【更新实例数量】按钮。如下图所示:

  • 根据实际需求调整 Pod 数量,如3,单击页面下方的【更新实例数目】即可完成调整。

TApp特色功能-指定pod灰度升级

  • 登录 TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择要变更的业务下相应的【命名空间】,展开【工作负载】列表,进入【 TApp】 管理页面,点击进入要灰度升级的 TApp名称。如下图所示:

  • 如下图标签1所示,可选指定需要灰度升级的pod,然后点击下图中标签2 的【灰度升级】即可升级指定pod。

  • 在弹出的 “回滚资源” 提示框中,单击【确定】即可完成回滚。

    注意:此页面同时可完成指定Pod监控和删除

查询TApp可查看更多相关信息

1.2.7 - 工作负载的请求与限制

工作负载的请求与限制

工作负载的请求与限制

Request:容器使用的最小资源需求,作为容器调度时资源分配的判断依赖。只有当节点上可分配资源量 >= 容器资源请求数时才允许将容器调度到该节点。但 Request 参数不限制容器的最大可使用资源值。 Limit: 容器能使用的资源最大值。

! 更多 LimitRequest 参数介绍,单击 查看详情

CPU 限制说明

CPU 资源允许设置 CPU 请求和 CPU 限制的资源量,以核(U)为单位,允许为小数。

!

  • CPU Request 作为调度时的依据,在创建时为该容器在节点上分配 CPU 使用资源,称为 “已分配 CPU” 资源。
  • CPU Limit 限制容器 CPU 资源的上限,不设置表示不做限制(CPU Limit >= CPU Request)。

内存限制说明

内存资源只允许限制容器最大可使用内存量。以 MiB 为单位,允许为小数。

!

  • 内存 Request 作为调度时的依据,在创建时为该容器在节点上分配内存,称为 “已分配内存” 资源。
  • 内存资源为不可伸缩资源。当节点上所有容器使用内存均超量时,存在 OOM 的风险。因此不设置 Limit 时,默认 Limit = Request,保证容器的正常运作。

CPU 使用量和 CPU 使用率

  • CPU 使用量为绝对值,表示实际使用的 CPU 的物理核数,CPU 资源请求和 CPU 资源限制的判断依据都是 CPU 使用量。
  • CPU 使用率为相对值,表示 CPU 的使用量与 CPU 单核的比值(或者与节点上总 CPU 核数的比值)。

使用示例

一个简单的示例说明 Request 和 Limit 的作用,测试集群包括1个 4U4G 的节点、已经部署的两个 Pod ( Pod1,Pod2 ),每个 Pod 的资源设置为(CPU Requst,CPU Limit,Memory Requst,Memory Limit)=(1U,2U,1G,1G)。(1.0G = 1000MiB) 节点上 CPU 和内存的资源使用情况如下图所示: Alt text 已经分配的 CPU 资源为:1U(分配 Pod1) + 1U(分配 Pod2) = 2U,剩余可以分配的 CPU 资源为2U。 已经分配的内存资源为:1G(分配 Pod1) + 1G(分配 Pod2) = 2G,剩余可以分配的内存资源为2G。 所以该节点可以再部署一个 ( CPU Requst, Memory Requst ) =( 2U,2G )的 Pod 部署,或者部署2个(CPU Requst,Memory Requst) = (1U,1G) 的 Pod 部署。

在资源限制方面,每个 Pod1 和 Pod2 使用资源的上限为 ( 2U,1G ),即在资源空闲的情况下,Pod 使用 CPU 的量最大能达到2U。

服务资源限制推荐

CCS 会根据您当前容器镜像的历史负载来推荐 Request 与 Limit 值,使用推荐值会保证您的容器更加平稳的运行,大大减小出现异常的概率。

推荐算法: 我们首先会取出过去7天当前容器镜像分钟级别负载,并辅以百分位统计第95%的值来最终确定推荐的 Request,Limit 为 Request 的2倍。

Request = Percentile(实际负载[7d],0.95)
Limit = Request * 2

如果当前的样本数量(实际负载)不满足推荐计算的数量要求,我们会相应的扩大样本取值范围,尝试重新计算。例如,去掉镜像 tag,namespace,serviceName 等筛选条件。若经过多次计算后同样未能得到有效值,则推荐值为空。

推荐值为空: 在使用过程中,您会发现有部分值暂无推荐的情况,可能由于以下几点造成: 1. 当前数据并不满足计算的需求,我们需要待计算的样本数量(实际负载)大于1440个,即有一天的数据。 2. 推荐值小于您当前容器已经配置的 Request 或者 Limit。

! 1. 由于推荐值是根据历史负载来计算的,原则上,容器镜像运行真实业务的时间越长,推荐的值越准确。 2. 使用推荐值创建服务,可能会因为集群资源不足造成容器无法调度成功。在保存时,须确认当前集群的剩余资源。 3. 推荐值是建议值,您可以根据自己业务的实际情况做相应的调整。

1.3 - 服务

服务

服务

1.3.1 - Service

Service

Service 定义访问后端 Pod 的访问方式,并提供固定的虚拟访问 IP。您可以在 Service 中通过设置来访问后端的 Pod,不同访问方式的服务可提供不同网络能力。 腾讯云容器服务(TKE)提供以下四种服务访问方式:

访问方式说明
仅在集群内访问
  • 使用 Service 的 ClusterIP 模式,自动分配 Service 网段中的 IP,用于集群内访问。数据库类等服务如 MySQL 可以选择集群内访问,以保证服务网络隔离。
  • 创建完成后的服务可以通过服务名 + 服务端口访问服务。
主机端口访问
  • 提供一个主机端口映射到容器的访问方式,支持 TCP、UDP、Ingress。可用于业务定制上层 LB 转发到 Node。
  • 创建完成后的服务可以通过云服务器 IP+主机端口服务名 + 服务端口访问服务。

集群内进行 Service 访问时,建议不要通过负载均衡 IP 进行访问,以避免出现访问不通的情况。

一般情况下,4层负载均衡(LB)会绑定多台 Node 作为 real server(rs) ,使用时需要限制 client 和 rs 不能存在于同一台云服务器上,否则会有一定概率导致报文回环出不去。 当 Pod 去访问 LB 时,Pod 就是源 IP,当其传输到内网时 LB 也不会做 snat 处理将源 IP 转化成 Node IP,那么 LB 收到报文也就不能判断是从哪个 Node 发送的,LB 的避免回环策略也就不会生效,所有的 rs 都可能被转发。当转发到 client 所在的 Node 上时,LB 就无法收到回包,从而导致访问不通。

集群内访问时,支持Headless Service,解析服务名时直接返回对应Pod IP而不是Cluster IP,可以适配自有的服务发现机制。 两种访问方式均支持Session Affinity,设置会话保持后,会根据请求IP把请求转发给这个IP之前访问过的Pod.

Service 控制台操作指引

创建 Service

  • 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择需要创建 Service 的【业务】下相应的【命名空间】,展开【服务】列表,进入【Service】管理页面。
  • 单击【新建】,进入 “新建 Service” 页面。如下图所示:

  • 根据实际需求,设置 Service 参数。关键参数信息如下:
    • 服务名称:自定义。
    • 命名空间:根据实际需求进行选择。
    • 访问设置:请参考 简介 并根据实际需求进行设置。
  • 单击【创建服务】,完成创建。

更新 Service

更新 YAML

  1. 登录TKEStack,切换到业务管理控制台,选择左侧导航栏中的【应用管理】。
  2. 选择需要创建Service的业务下相应的命名空间,展开服务列表,进入Service管理页面。
  3. 在需要更新 YAML 的 Service 行中,单击【编辑YAML】,进入更新 Service 页面。
  4. 在 “更新Service” 页面,编辑 YAML,单击【完成】,即可更新 YAML。

Kubectl 操作 Service 指引

YAML 示例

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
  type: LoadBalancer
  • kind:标识 Service 资源类型。
  • metadata:Service 的名称、Label等基本信息。
  • spec.type:标识 Service 的被访问形式
    • ClusterIP:在集群内部公开服务,可用于集群内部访问。
    • NodePort:使用节点的端口映射到后端 Service,集群外可以通过节点 IP:NodePort 访问。
    • LoadBalancer:使用腾讯云提供的负载均衡器公开服务,默认创建公网 CLB, 指定 annotations 可创建内网 CLB。
    • ExternalName:将服务映射到 DNS,仅适用于 kube-dns1.7及更高版本。

创建 Service

  1. 参考 YAML 示例,准备 StatefulSet YAML 文件。

  2. 安装 Kubectl,并连接集群。操作详情请参考 通过 Kubectl 连接集群

  3. 执行以下命令,创建 Service YAML 文件。

    kubectl create -f Service YAML 文件名称
    

    例如,创建一个文件名为 my-service.yaml 的 Service YAML 文件,则执行以下命令:

    kubectl create -f my-service.yaml
    
  4. 执行以下命令,验证创建是否成功。

    kubectl get services
    

    返回类似以下信息,即表示创建成功。

    NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
    kubernetes   ClusterIP   172.16.255.1   <none>        443/TCP   38d
    

更新 Service

方法一

执行以下命令,更新 Service。

kubectl edit service/[name]

方法二

  1. 手动删除旧的 Service。

  2. 执行以下命令,重新创建 Service。

    kubectl create/apply
    

删除 Service

执行以下命令,删除 Service。

kubectl delete service [NAME]
.params{margin-bottom:0px !important;}  

1.3.2 - Ingress

Ingress

Ingress 是允许访问到集群内 Service 的规则的集合,您可以通过配置转发规则,实现不同 URL 可以访问到集群内不同的 Service。

1.4 - 配置管理

配置管理

配置管理

1.4.1 - ConfigMap

ConfigMap

通过 ConfigMap 您可以将配置和运行的镜像进行解耦,使得应用程序有更强的移植性。ConfigMap 是有 key-value 类型的键值对,您可以通过控制台的 Kubectl 工具创建对应的 ConfigMap 对象,可以通过挂载数据卷、环境变量或在容器的运行命令中使用 ConfigMap。 ConfigMap 有两种使用方式,创建负载时做为数据卷挂载到容器和作为环境变量映射到容器。

ConfigMap 控制台操作指引

创建 ConfigMap

  • 登录TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择需要创建ConfigMap的【业务】下相应的【命名空间】,展开【配置管理】列表,进入ConfigMap管理页面。
  • 单击【新建】,进入 “新建ConfigMap” 页面。如下图所示:

新建ConfigMap

  • 根据实际需求,设置 ConfigMap 参数。关键参数信息如下:
    • 名称:自定义。
    • 命名空间:根据实际需求进行选择命名空间类型
    • 定义变量名和变量值。
  • 单击【创建ConfigMap】,完成创建。

更新 ConfigMap

  1. 登录TKEStack,切换到业务管理控制台,选择左侧导航栏中的【应用管理】。

  2. 选择需要创建ConfigMap的业务下相应的命名空间,展开配置管理列表,进入ConfigMap管理页面。

  3. 在需要更新 YAML 的 ConfigMap 行中,单击【编辑YAML】,进入更新 ConfigMap 页面。

  4. 在 “更新ConfigMap” 页面,编辑 YAML,单击【完成】,即可更新 YAML。

    如需修改 key-values,编辑 YAML 中 data 的参数值,单击【完成】,即可完成更新。

Kubectl 操作 ConfigMap 指引

YAML 示例

apiVersion: v1
data:
  key1: value1
  key2: value2
  key3: value3
kind: ConfigMap
metadata:
  name: test-config
  namespace: default
  • data:ConfigMap 的数据,以 key-value 形式呈现。
  • kind:标识 ConfigMap 资源类型。
  • metadata:ConfigMap 的名称、Label等基本信息。
  • metadata.annotations:ConfigMap 的额外说明,可通过该参数设置腾讯云 TKE 的额外增强能力。

创建 ConfigMap

方式一:通过 YAML 示例文件方式创建

  1. 参考 YAML 示例,准备 ConfigMap YAML 文件。

  2. 安装 Kubectl,并连接集群。操作详情请参考 通过 Kubectl 连接集群

  3. 执行以下命令,创建 ConfigMap YAML 文件。

    kubectl create -f ConfigMap YAML 文件名称
    

    例如,创建一个文件名为 web.yaml 的 ConfigMap YAML 文件,则执行以下命令:

    kubectl create -f web.yaml
    
  4. 执行以下命令,验证创建是否成功。

    kubectl get configmap
    

    返回类似以下信息,即表示创建成功。

    NAME          DATA      AGE
    test          2         39d
    test-config   3         18d
    

方式二:通过执行命令方式创建

执行以下命令,在目录中创建 ConfigMap。

kubectl create configmap <map-name> <data-source>
  • <map-name>:表示 ConfigMap 的名字。
  • <data-source>:表示目录、文件或者字面值。

更多参数详情可参见 Kubernetes configMap 官方文档

使用 ConfigMap

方式一:数据卷使用 ConfigMap 类型

YAML 示例如下:

apiVersion: v1
 kind: Pod
 metadata:
   name: nginx
 spec:
   containers:
     - name: nginx
       image: nginx:latest
       volumeMounts:
        name: config-volume
        mountPath: /etc/config
   volumes:
        name: config-volume
        configMap:
          name: test-config ## 设置 ConfigMap 来源
          ## items:  ## 设置指定 ConfigMap 的 Key 挂载
          ##   key: key1  ## 选择指定 Key
          ##   path: keys ## 挂载到指定的子路径
   restartPolicy: Never

方式二:环境变量中使用 ConfigMap 类型

YAML 示例如下:

apiVersion: v1
 kind: Pod
 metadata:
   name: nginx
 spec:
   containers:
     - name: nginx
       image: nginx:latest
       env:
         - name: key1
           valueFrom:
             configMapKeyRef:
               name: test-config ## 设置来源 ConfigMap 文件名
               key: test-config.key1  ## 设置该环境变量的 Value 来源项
   restartPolicy: Never

1.4.2 - Sercet

Sercet

Sercet

Secret 可用于存储密码、令牌、密钥等敏感信息,降低直接对外暴露的风险。Secret 是 key-value 类型的键值对,您可以通过控制台的 Kubectl 工具创建对应的 Secret 对象,也可以通过挂载数据卷、环境变量或在容器的运行命令中使用 Secret。

Secret 控制台操作指引

创建 Secret

  • 登录 TKEStack,切换到【业务管理】控制台,选择左侧导航栏中的【应用管理】。
  • 选择需要创建 Secret 的【业务】下相应的【命名空间】,展开【配置管理】列表,进入 Secret 管理页面。
  • 单击【新建】,进入“新建 Secret ”页面。
  • 在“新建 Secret ”页面,根据实际需求,进行如下参数设置。如下图所示:

  • 名称:请输入自定义名称。
  • Secret类型:提供【Opaque】和【Dockercfg】两种类型,请根据实际需求进行选择。
    • Opaque:适用于保存秘钥证书和配置文件,Value 将以 base64 格式编码。
    • Dockercfg:适用于保存私有 Docker Registry 的认证信息。
  • 生效范围:提供以下两种范围,请根据实际需求进行选择。
    • 存量所有命名空间:不包括 kube-system、kube-public 和后续增量命名空间。
    • 指定命名空间:支持选择当前集群下一个或多个可用命名空间。
  • 内容:根据不同的 Secret 类型,进行配置。
    • 当 Secret 类型为【Opaque】时:根据实际需求,设置变量名和变量值。
    • 当 Secret 类型为【Dockercfg】时:
      • 仓库域名:请根据实际需求输入域名或 IP。

      • 用户名:请根据实际需求输入第三方仓库的用户名。

      • 密码:请根据实际需求设置第三方仓库的登录密码。

        如果本次为首次登录系统,则会新建用户,相关信息写入 ~/.dockercrg 文件中。

  • 单击【创建 Secret】,即可完成创建。

使用 Secret

Secret 在 Workload中有三种使用场景: 1. 数据卷使用 Secret 类型 2. 环境变量中使用 Secret 类型 3. 使用第三方镜像仓库时引用

更新 Secret

  1. 登录 TKEStack,切换到业务管理控制台,选择左侧导航栏中的【应用管理】。

  2. 选择需要创建 Secret 的业务下相应的命名空间,展开配置管理列表,进入 Secret 管理页面。

  3. 在需要更新 YAML 的 Secret 行中,单击【编辑YAML】,进入更新 Secret 页面。

  4. 在“更新Secret”页面,编辑 YAML,并单击【完成】即可更新 YAML。

    如需修改 key-values,则编辑 YAML 中 data 的参数值,并单击【完成】即可完成更新。

Kubectl 操作 Secret 指引

创建 Secret

方式一:通过指定文件创建 Secret

  1. 依次执行以下命令,获取 Pod 的用户名和密码。

    $ echo -n 'username' > ./username.txt
    $ echo -n 'password' > ./password.txt
    
  2. 执行 Kubectl 命令,创建 Secret。

    $ kubectl create secret generic test-secret --from-file=./username.txt --from-file=./password.txt
    secret "testSecret" created
    
  3. 执行以下命令,查看 Secret 详情。

    kubectl describe secrets/ test-secret
    

方式二:YAML 文件手动创建

? 通过 YAML 手动创建 Secret,需提前将 Secret 的 data 进行 Base64 编码。

apiVersion: v1
kind: Secret
metadata:
  name: test-secret
type: Opaque
data:
  username: dXNlcm5hbWU=  ## 由echo -n 'username' | base64生成
  password: cGFzc3dvcmQ=  ## 由echo -n 'password' | base64生成

使用 Secret

方式一: 数据卷使用 Secret 类型

YAML 示例如下:

apiVersion: v1
 kind: Pod
 metadata:
   name: nginx
 spec:
   containers:
     - name: nginx
       image: nginx:latest
       volumeMounts:
        name: secret-volume
        mountPath: /etc/config
   volumes:
        name: secret-volume
        secret:
          name:  test-secret ## 设置 secret 来源
          ## items:  ## 设置指定 secret的 Key 挂载
          ##   key: username  ## 选择指定 Key
          ##   path: group/user ## 挂载到指定的子路径
          ##   mode: 256  ## 设置文件权限
   restartPolicy: Never

方式二: 环境变量中使用 Secret 类型

YAML 示例如下:

apiVersion: v1
 kind: Pod
 metadata:
   name: nginx
 spec:
   containers:
     - name: nginx
       image: nginx:latest
       env:
         - name: SECRET_USERNAME
           valueFrom:
             secretKeyRef:
               name: test-secret ## 设置来源 Secret 文件名
               key: username  ## 设置该环境变量的 Value 来源项
   restartPolicy: Never

方法三:使用第三方镜像仓库时引用

YAML 示例如下:

apiVersion: v1
 kind: Pod
 metadata:
   name: nginx
 spec:
   containers:
     - name: nginx
       image: nginx:latest
   imagePullSecrets:
   - name: test-secret ## 设置来源 Secret 文件名
   restartPolicy: Never

1.5 - 存储

存储

存储

1.5.1 - PV和PVC

PV和PVC

PersistentVolume(PV):集群内的存储资源。例如,节点是集群的资源。PV 独立于 Pod 的生命周期,根据不同的 StorageClass 类型创建不同类型的 PV。 PersistentVolumeClaim(PVC):集群内的存储请求。例如,PV 是 Pod 使用节点资源,PVC 则声明使用 PV 资源。当 PV 资源不足时,PVC 也可以动态创建 PV。

1.5.2 - StorageClass

StorageClass

StorageClass 描述存储的类型,集群管理员可以为集群定义不同的存储类别。可通过 StorageClass 配合 PersistentVolumeClaim 可以动态创建需要的存储资源。

1.6 - 事件

事件

日志针对的是容器。包括了 Kuberntes 集群的运行容器的日志情况和各类资源的调度情况,对维护人员日常观察资源的变更以及定位问题均有帮助。

日志控制台操作指引

  • 登录 TKEStack,切换到【业务管理】控制台,点击【应用管理】,选择【日志】。
  • 进入“日志”页面。
  • 可以按照不用的命名空间和资源类型进行筛选。

注意:Kubernetes 默认只将最近一个小时的事件存储在 ETCD 中,若想实现事件的持久化存储和查询操作

您可以参考 事件持久化 将事件导入外部存储,实现事件的持久化存储

1.7 - 日志

日志

时间针对的是负载。Kubernetes Events 包括了 Kuberntes 集群的运行和各类资源的调度情况,对维护人员日常观察资源的变更以及定位问题均有帮助。

Event 控制台操作指引

  • 登录 TKEStack,切换到【业务管理】控制台,点击【应用管理】中的【事件】,进入“事件”页面。
  • 可以按照不用的命名空间和资源类型进行筛选。

您可以参考 日志采集 将日志导入外部存储,实现日志的高级管理。

2 - 业务管理

业务管理

这里用户可以管理业务。

更改业务成员

  1. 登录 TKEStack。

  2. 切换至 【业务管理】控制台,点击【业务管理】。

  3. 在“业务管理”页面中,可以看到已创建的业务列表。鼠标移动到要修改的业务上(无需点击),成员列会出现修改图标按钮。如下图所示: 修改图标按钮

    注意:修改业务成员仅限状态为Active的业务,这里可以新建和删除成员。

查看业务监控

  1. 登录 TKEStack。

  2. 切换至 【业务管理】控制台,点击【业务管理】。

  3. 在“业务管理”页面中,可以看到已创建的业务列表。点击监控按钮,如下图所示:

    监控按钮

  4. 在右侧弹出窗口里查看业务监控情况,如下图所示:

    业务监控详情

删除业务

  1. 登录 TKEStack。

  2. 切换至 【业务管理】控制台,点击【业务管理】。

  3. 在“业务管理”页面中,可以看到已创建的业务列表。点击删除按钮,如下图所示:

    删除业务

    注意:删除业务成员仅限状态为Active的业务

对业务的操作

  • 登录 TKEStack。
  • 在【业务管理】控制台的【业务管理】中,单击【业务id】。如下图所示:

业务id

a. 业务信息: 在这里可以对业务名称、关联的集群、关联集群的资源进行限制等操作。

业务信息

b. 成员列表: 在这里可以对业务名称、关联的集群、关联集群的资源进行限制等操作。

业务信息

c. 子业务: 在这里可以新建本业务的子业务通过导入子业务将已有业务变成本业务的子业务

业务信息

d. 业务下Namespace列表: 这里可以管理业务下的Namespace

业务信息

​ 单击【新建Namespace】。在“新建Namespace”页面中,填写相关信息。如下图所示:

新建空间列表

名称:不能超过63个字符,这里以new-ns为例

集群my-business业务中的集群,这里以global集群为例

资源限制*:这里可以限制当前命名空间下各种资源的使用量,可以不设置。

3 - 组织资源

组织资源

组织资源

3.1 - 镜像仓库管理

镜像仓库管理

这里用户可以管理镜像仓库。

注意:TKEStack的【业务管理】控制台不支持命名空间的创建,可以在【平台管理】下的【组织资源】下的【镜像仓库管理】新建命名空间。

删除命名空间

  1. 登录 TKEStack。
  2. 切换至 【业务管理】控制台,选择 【组织资源】->【仓库管理】。点击列表最右侧【删除】按钮。如下图所示:
  3. 点击【确认】

镜像上传

  • 登录 TKEStack。
  • 切换至 【业务管理】控制台,选择 【组织资源】->【仓库管理】,查看“命名空间”列表。点击列表中命名空间【名称】。如下图所示:

  • 此时进入了“镜像列表”页面,点击【镜像上传指引】按钮。如下图所示:

    注意:此页面可以通过上传的镜像最右边的【删除】按钮来删除上传的镜像

  • 根据指引内容,在物理节点上执行相应命令。如下图所示:

3.2 - Helm模板

Helm模板

应用功能是 TKEStack 集成的 Helm 3.0 相关功能,为您提供创建 helm chart、容器镜像、软件服务等各种产品和服务的能力。已创建的应用将在您指定的集群中运行,为您带来相应的能力。

模板

  1. 登录 TKEStack

  2. 切换至 【平台管理】控制台,选择 【组织资源】->【 Helm模板】,点击【模板】 1. 所有模板:包含下列所有模板 2. 用户模板:权限范围为“指定用户”的仓库下的所有模板 3. 业务模板:权限范围为“指定业务”的仓库下的所有模板 4. 公共模板:权限范围为“公共”的仓库下的所有模板

    image-20201203144524973

仓库

  1. 登录 TKEStack

  2. 切换至 【平台管理】控制台,选择 【组织资源】->【 Helm模板】,点击【仓库】

  3. 点击【新建】按钮,如下图所示: 新建Chart包命名空间

    • 在弹出的 “新建仓库” 页面,填写 仓库 信息,如下图所示:

      image-20201203144754466

    • 仓库名称: 仓库名字,不超过60个字符

    • 权限访问

      • 指定用户:选择当前仓库可以被哪些平台的用户访问
      • 指定业务:选择当前仓库可以被哪些平台的业务访问,业务下的成员对该仓库的访问权限在【业务管理】中完成
      • 公共:平台所有用户都能访问该仓库
    • 导入第三方仓库: 若已有仓库想导入 TKEStack 中使用,请勾选

      • 第三方仓库地址:请输入第三方仓库地址
      • 第三方仓库用户名:若第三方仓库开启了鉴权,需要输入第三方仓库的用户名
      • 第三方仓库密码:若第三方仓库开启了鉴权,需要输入第三方仓库的密码
    • 仓库描述: 请输入仓库描述,不超过255个字符

  4. 单击【确认】按钮

    删除仓库

  5. 登录 TKEStack

  6. 切换至 【平台管理】控制台,选择 【组织资源】-> 【 Helm 模板】,点击【仓库】,查看 “helm模板仓库”列表

  7. 点击列表最右侧【删除】按钮,如下图所示:

    Chart包命名空间删除按钮

    Chart 上传指引

  8. 登录 TKEStack

  9. 切换至 【平台管理】控制台,选择 【组织资源】-> 【 Helm模板】,点击【仓库】,查看 “helm模板仓库”列表

  10. 点击列表最右侧【上传指引】按钮,如下图所示:

    Chart包命名空间名称

  11. 根据指引内容,在物理节点上执行相应命令,如下图所示:

    Chart上传指引内容

同步导入仓库

  1. 登录 TKEStack

  2. 切换至 【平台管理】控制台,选择 【组织资源】->【 Helm模板】,点击【仓库】

  3. 点击导入仓库的【同步仓库】按钮,如下图所示:

    image-20201203151341971

3.3 - 访问凭证

访问凭证

这里用户可以管理自己的凭据。

新建访问凭证

  1. 登录 TKEStack。
  2. 切换至 【业务管理】控制台,选择【组织资源】->【访问凭证】,点击【新建】按钮。
  3. 在弹出“创建访问凭证”页面,填写凭证信息。如下图所示:
  • 凭证描述:描述当前凭证信息
  • 过期时间:填写过期时间,选择小时/分钟为单位
  1. 单击【确认】按钮

停用/启用/删除访问凭证

  1. 登录 TKEStack。

  2. 切换至 【业务管理】控制台,选择 【组织资源】-> 【访问凭证】,查看“访问凭证”列表。单击列表右侧【禁用】/【启用】/【删除】按钮。如下图所示:

    注意:点击【禁用】之后,【禁用】按钮就变成了【启用】

  3. 单击【确认】按钮

4 - 监控与告警

监控与告警

监控与告警

4.1 - 设置告警

设置告警

概念

这里用户配置平台告警。

前提条件

  • 需要设置告警的命名空间所在的集群,应该先在【扩展组件】安装Prometheus组件

操作步骤

新建告警设置

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择【监控&告警】-> 【告警设置】,查看“告警设置”列表。
  • 选择相应【项目】和【namespace】,点击【新建】按钮。如下图所示:

新建告警

  • 在“新建策略”页面填写告警策略信息。如下图所示:

新建告警策略

  • 告警策略名称: 输入告警策略名称,最长60字符
  • 策略类型: 选择告警策略应用类型
    • 集群: 集群监控告警
    • Pod: Pod 监控告警
      • 告警对象: 选择Pod相关的告警对象,支持对namespace下不同对deployment、stateful和daemonset 进行监控报警
        • 按工作负载选择: 选择namespace下的某个工作负载
        • 全部选择: 不区分namespace,全部监控
    • 节点: 节点监控告警
  • 统计周期: 选择数据采集周期,支持1、2、3、4、5分钟
  • 指标: 选择告警指标,支持对监测值与指标值进行【大于/小于】比较,选择结果持续周期。如下图:

指标设置

  • 接收组: 选择接收组,当出现满足条件当报警信息时,向组内人员发送消息。接收组需要先在 通知设置 创建
  • 通知方式: 选择通知渠道和消息模版。通知渠道 和 消息模版需要先在 通知设置 创建
    • 添加通知方式 如需要添加多种通知方式,点击该按钮。
      1. 单击【提交】按钮。

复制告警设置

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【告警设置】,查看告警设置列表。
  • 选择相应【项目】和【namespace】,点击“告警设置”列表最右侧的【复制】按钮。如下图所示:

告警复制按钮

  • 在复制策略页面,编辑告警策略信息。

  • 单击【提交】按钮。

    编辑告警设置

  • 登录 TKEStack。

  • 切换至 【业务管理】控制台,选择 【监控&告警】->【告警设置】,查看告警设置列表。

  • 选择相应【项目】和【namespace】,点击【告警名称】。如下图所示:

告警名称

  • 在“告警策略详情”页面,单击【基本信息】右侧的【编辑】按钮。如下图所示:

告警编辑

  • 在更新策略页面,编辑策略信息。

  • 单击【提交】按钮。

    删除告警设置

  • 登录 TKEStack。

  • 切换至 【业务管理】控制台,选择 【监控&告警】->【告警设置】,查看“告警设置”列表。

  • 选择相应【项目】和【namespace】,点击列表最右侧的【删除】按钮。如下图所示:

告警删除

  • 在弹出的删除告警窗口,单击【确定】按钮。

4.2 - 通知设置

通知设置

概念

这里用户配置平台通知。

操作步骤

这部分和【平台管理】控制台下【监控&告警】下的【通知设置】完全一致。故这里使用【平台管理】控制台下的截图。

通知渠道

新建通知渠道

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【通知设置】->【通知渠道】,查看“通知渠道”列表。
  • 点击【新建】按钮。如下图所示:

新建通知渠道按钮

  • 在“新建通知渠道”页面填写渠道信息。如下图所示:

新建通知渠道

  • 名称: 填写渠道名称
  • 渠道: 选择渠道类型,输入渠道信息
  • 邮件: 邮件类型
    • email: 邮件发送放地址
    • password: 邮件发送方密码
    • smtpHost: smtp IP地址
    • smtpPort: smtp端口
    • tls: 是否tls加密
  • 短信: 短信方式
    • appKey: 短信发送方的appKey
    • sdkAppID: sdkAppID
    • extend: extend 信息
  • 微信公众号: 微信公众号方式
    • appID: 微信公众号appID
    • appSecret: 微信公众号app密钥
  • 单击【保存】按钮。

编辑通知渠道

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【通知设置】->【通知渠道】,查看“通知渠道”列表。
  • 单击渠道名称。如下图所示:

渠道名称

  • 在“基本信息”页面,单击【基本信息】右侧的【编辑】按钮。如下图所示:

渠道编辑按钮

  • 在“更新渠道通知”页面,编辑渠道信息。
  • 单击【保存】按钮。

删除通知渠道

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【通知设置】->【通知渠道】,查看“通知渠道”列表。
  • 选择要删除的渠道,点击【删除】按钮。如下图所示:

删除渠道

  • 单击删除窗口的【确定】按钮。

通知模板

新建通知模版

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【通知设置】->【通知模板】,查看“通知模板”列表。
  • 点击【新建】按钮。如下图所示:

新建通知模版

  • 在“新建通知模版”页面填写模版信息。如下图所示:

通知模版

  • 名称: 模版名称
  • 渠道: 选择已创建的渠道
  • body: 填写消息body体
  • header: 填写消息标题
  • 单击【保存】按钮。

编辑通知模版

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【通知设置】->【通知模板】,查看“通知模板”列表。
  • 单击模版名称。如下图所示:

模版名称

  • 在基本信息页面,单击【基本信息】右侧的【编辑】按钮。如下图所示:

模版编辑按钮

  • 在“更新通知模版”页面,编辑模版信息。
  • 单击【保存】按钮。

删除通知模版

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【通知设置】->【通知模板】,查看"通知模板"列表。
  • 选择要删除的模版,点击【删除】按钮。如下图所示:

删除模版

  • 单击删除窗口的【确定】按钮。

接收人

新建接收人

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【通知设置】->【接收人】,查看"接收人"列表。
  • 点击【新建】按钮。如下图所示:

新建接收人

  • 在“新建接收人”页面填写模版信息。如下图所示:

接收人

  • 显示名称: 接收人显示名称
  • 用户名: 接收人用户名
  • 移动电话: 手机号
  • 电子邮件: 接收人邮箱
  • 微信OpenID: 接收人微信ID
  • 单击【保存】按钮。

编辑接收人信息

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【通知设置】->【接收人】,查看“接收人”列表。
  • 单击接收人名称。如下图所示:

接收人名称

  • 在“基本信息”页面,单击【基本信息】右侧的【编辑】按钮。如下图所示:

接收人编辑按钮

  • 在“更新接收人”页面,编辑接收人信息。
  • 单击【保存】按钮。

删除接收人

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【通知设置】->【接收人】,查看“接收人”列表。
  • 选择要删除的接收人,点击【删除】按钮。如下图所示:

  • 单击删除窗口的【确定】按钮。

接收组

新建接收组

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【通知设置】->【接收组】,查看“接收组”列表。
  • 点击【新建】按钮。如下图所示:

新建接收组

  • 在“新建接收组”页面填写模版信息。如下图所示:

接收组

  • 名称: 接收组显示名称
  • 接收组: 从列表里选择接收人。如没有想要的接收人,请在接收人里创建。
  • 单击【保存】按钮。

编辑接收组信息

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【通知设置】->【接收组】,查看“接收组”列表。
  • 单击接收组名称。如下图所示:

接收组名称

  • 在“基本信息”页面,单击【基本信息】右侧的【编辑】按钮。如下图所示:

接收组编辑按钮

  • 在“更新接收组”页面,编辑接收组信息。
  • 单击【保存】按钮。

删除接收组

  • 登录 TKEStack。
  • 切换至【业务管理】控制台,选择 【监控&告警】->【通知设置】->【接收组】,查看“接收组”列表。
  • 选择要删除的接收组,点击【删除】按钮。如下图所示:

删除接收组

  • 单击删除窗口的【确定】按钮。

5 - 运维中心

运维中心

运维中心

5.1 - Helm应用

Helm应用

应用功能是 TKEStack 集成的 Helm 3.0 相关功能,为您提供创建 helm chart、容器镜像、软件服务等各种产品和服务的能力。已创建的应用将在您指定的集群中运行,为您带来相应的能力。

新建 Helm 应用

  • 登录 TKEStack
  • 切换至【平台管理】控制台,选择【运维中心】->【 Helm 应用】
  • 选择相应【集群】,单击【新建】按钮,如下图所示:

新建 Helm 按钮

  • 在“新建 Helm 应用”页面填写Helm应用信息,如下图所示:

新建 Helm 应用

  • 应用名称: 输入应用名,1~63字符,只能包含小写字母、数字及分隔符("-"),且必须以小写字母开头,数字或小写字母结尾
  • 运行集群: 选择应用所在集群
  • 命名空间: 选择应用所在集群的命名空间
  • 类型: 当前仅支持 HelmV3
  • Chart: 选择需要部署的 chart
  • Chart版本: 选择 chart 的版本
  • 参数: 更新时如果选择不同版本的 Helm Chart,参数设置将被覆盖
  • 拟运行: 会返回模板渲染清单,即最终将部署到集群的 YAML 资源,不会真正执行安装
  • 单击【完成】按钮

删除 Helm 应用

  1. 登录 TKEStack
  2. 切换至【平台管理】控制台,选择【运维中心】->【 Helm 应用】
  3. 点击【删除】

image-20201203150729694

查看 Helm 应用资源列表

  1. 登录 TKEStack
  2. 切换至【平台管理】控制台,选择【运维中心】->【 Helm 应用】
  3. 点击【应用名】后,点击【资源列表】,可查看该应用所有 Kubernetes 资源对象

查看 Helm 应用详情

  1. 登录 TKEStack
  2. 切换至【平台管理】控制台,选择【运维中心】->【 Helm 应用】
  3. 点击【应用名】后,点击【应用详情】

image-20201203150904452

查看 Helm 应用版本历史

  1. 登录 TKEStack
  2. 切换至【平台管理】控制台,选择【运维中心】->【 Helm 应用】
  3. 点击【应用名】后,点击【版本历史】,可查看该应用所部署的历史版本。可以通过选择不同的版本进行参数对比查看其版本区别

image-20201203151027616

5.2 - 日志采集

日志采集

TKESTack 提供的集群内日志采集功能,支持将集群内服务或集群节点特定路径文件的日志发送至 Kafka、Elasticsearch 等消费端,支持采集容器标准输出日志,容器内文件日志以及主机内文件日志。更提供事件持久化、审计等功能,实时记录集群事件及操作日志记录,帮助运维人员存储和分析集群内部资源生命周期、资源调度、异常告警等情况

日志收集功能需要为每个集群手动开启。日志收集功能开启后,日志收集组件 logagent 会在集群内以 Daemonset 的形式运行。用户可以通过日志收集规则配置日志的采集源和消费端,日志收集 Agent 会从用户配置的采集源进行日志收集,并将日志内容发送至用户指定的消费端。需要注意的是,使用日志收集功能需要您确认 Kubernetes 集群内节点能够访问日志消费端。

  • 采集容器标准输出日志 :采集集群内指定容器的 Stderr 和 Stdout 日志。,采集到的日志信息将会以 JSON 格式输出到用户指定的消费端,并会自动附加相关的 Kubernetes metadata, 包括容器所属 Pod 的 label 和 annotation 等信息。
  • 采集容器内文件日志 :采集集群内指定容器内文件路径的日志,用户可以根据自己的需求,灵活的配置所需的容器和路径,采集到的日志信息将会以 JSON 格式输出到用户指定的消费端, 并会附加相关的 Kubernetes metadata,包括容器所属 pod 的 label 和 annotation 等信息。
  • 采集主机内文件日志 :采集集群内所有节点的指定主机文件路径的日志,logagent 会采集集群内所有节点上满足指定路径规则的文件日志,以 JSON 格式输出到用户指定的输出端, 并会附加用户指定的 metadata,包括日志来源文件的路径和用户自定义的 metadata。

注意:日志采集对接外部 Kafka 或 Elasticsearch,该功能需要额外开启,位置在集群 基本信息 下面,点击开启“日志采集”服务

使用日志采集服务

业务管理侧

  • 登录 TKEStack
  • 切换至【业务管理】控制台,选择 【运维中心】->【日志采集】
  • 选择相应【业务】和【命名空间】,单击【新建】按钮,如下图所示:

  • 在“新建日志采集”页面填写日志采集信息,如下图所示:

  • 收集规则名称: 输入规则名,1~63字符,只能包含小写字母、数字及分隔符("-"),且必须以小写字母开头,数字或小写字母结尾
  • 业务: 选择所属业务(业务管理侧才会出现)
  • 集群: 选择所属集群(平台管理侧才会出现)
  • 类型: 选择采集类型
    • 容器标准输出: 容器 Stderr 和 Stdout 日志信息采集
      • 日志源: 可以选择所有容器或者某个 Namespace 下的所有容器/工作负载
        • 所有容器: 所有容器
        • 指定容器: 某个 Namespace 下的所有容器或者工作负载
    • 容器文件路径: 容器内文件内容采集
      • 日志源: 可以采集具体容器内的某个文件路径下的文件内容

        • 工作负载选项: 选择某个 Namespace 下的某种工作负载类型下的某个工作负载
        • 配置采集路径: 选择某个容器下的某个文件路径
        • 文件路径若输入stdout,则转为容器标准输出模式
        • 可配置多个路径。路径必须以/开头和结尾,文件名支持通配符(*)。文件路径和文件名最长支持63个字符
        • 请保证容器的日志文件保存在数据卷,否则收集规则无法生效,详见指定容器运行后的日志目录
    • 节点文件路径: 收集节点上某个路径下的文件内容
      • 日志源: 可以采集具体节点内的某个文件路径下的文件内容
        • 收集路径: 节点上日志收集路径。路径必须以/开头和结尾,文件名支持通配符(*)。文件路径和文件名最长支持63个字符
      • metadata: key:value 格式,收集的日志会带上 metadata 信息上报给消费端
  • 消费端: 选择日志消费端
    • Kafka:
      • 访问地址: Kafka IP 和端口
      • 主题(Topic): Kafka Topic 名
    • Elasticsearch:
      • Elasticsearch 地址: ES 地址,如:http://190.0.0.1:200

        注意:当前只支持未开启用户登录认证的 ES 集群

      • 索引: ES索引,最长60个字符,只能包含小写字母、数字及分隔符("-"、"_"、"+"),且必须以小写字母开头

  • 单击【完成】按钮

平台管理侧

在平台管理侧也支持日志采集规则的创建,创建方式和业务管理处相同。详情可点击平台侧的日志采集

指定容器运行后的日志目录

LogAgent 除了支持日志规则的创建,也支持指定容器运行后的日志目录,可实现日志文件展示和下载。

前提:需要在创建负载时挂载数据卷,并指定日志目

创建负载以后,在容器内的/data/logdir目录下的所有文件可以展示并下载,例如我们在容器的/data/logdir下新建一个名为a.log的文件,如果有内容的话,也可以在这里展示与下载

6 -

Helm应用

概念

这里业务端用户可以管理通过 helm 创建的应用。

操作步骤

新建Helm应用

  1. 登录 TKEStack。
  2. 切换至 【业务管理】控制台,选择【 Helm应用】。
  3. 选择相应【业务】和【namespace】,单击【新建】按钮。如下图所示:
  4. 在“新建Helm应用”页面填写Helm应用信息。如下图所示:
  • 应用名: 输入应用名,1~63字符,只能包含小写字母、数字及分隔符("-"),且必须以小写字母开头,数字或小写字母结尾
  • 命名空间: 选择该应用运行的命名空间
  • Chart_Url: 输入Chart 文件地址
  • 类型: 选择应用类型
  • 公有: 公有类型
  • 私有: 私有类型
    • 用户名: 私有用户名
    • 密码: 私有密码
  • Key-Value: 通过Key-Value替换Chart包中默认配置。
  1. 单击【完成】按钮。