Kubernetes 官方文档
  • 前言
  • 词汇表
  • 概念
    • 概述
      • 组件
      • 对象
        • 理解 Kubernetes 对象
        • 管理 Kubernetes 对象
        • 对象名称和 ID
        • 标签(Label)和选择算符(Selector)
        • 命名空间(Namespace)
        • 注解(Annotation)
        • 字段选择器
        • Finalizers
        • 属主与附属
    • 架构
      • 节点
    • 工作负载
      • 工作负载资源
        • Job
    • 服务、负载均衡和网络
      • 服务
        • 服务定义
        • 无头服务(Headless Service)
        • 发布服务
    • 配置
      • 配置最佳实践
    • 策略
      • 资源配额
    • 调度、抢占和驱逐
      • Kubernetes 调度器
    • 集群管理
      • 证书
      • 管理资源
        • 组织资源配置
        • kubectl 中的批量操作
        • 有效地使用标签
        • 金丝雀部署
        • 更新标签
      • 集群网络系统
  • 任务
    • 管理集群
      • 手动生成证书
    • 运行应用
      • Pod 水平自动扩缩容
        • HPA 是如何工作的?
      • HPA 演练
        • 创建 HPA
        • 附录
    • TLS
      • 管理集群中的 TLS 认证
  • 参考
    • API 访问控制
      • 使用 RBAC 鉴权
        • API 对象
        • 默认 Roles 和 Role Bindings
        • 初始化与预防权限提升
        • 命令行工具
        • ServiceAccount 权限
        • EndpointSlices 和 Endpoints 写权限
        • 从 ABAC 升级
    • 组件工具
      • kube-scheduler
    • 调度
      • 调度器配置
      • 调度策略
    • 网络参数
      • Service 所用的协议
      • 虚拟 IP 和服务代理
    • 命令行工具 (kubectl)
  • 博客
    • 移除 Dockershim 的常见问题
由 GitBook 提供支持
在本页
  • 准备开始
  • 运行 php-apache 服务器并暴露服务

这有帮助吗?

在GitHub上编辑
  1. 任务
  2. 运行应用

HPA 演练

上一页HPA 是如何工作的?下一页创建 HPA

最后更新于2年前

这有帮助吗?

(简称 HPA)自动更新工作负载资源(例如,Deployment 或 StatefulSet),目的是自动扩缩容工作负载以满足需求。

本文档将引导完成启用 HorizontalPodAutoscaler 以自动管理Web 应用程序扩缩容的示例。此示例工作负载是运行一些 PHP 代码的 Apache httpd。

准备开始

必须拥有一个 Kubernetes 集群,同时 Kubernetes 集群必须带有 kubectl 命令行工具。建议在至少有两个节点的集群上运行本教程,且这些节点不是控制平面。

Kubernetes 版本必须不低于 1.23 版本,可以使用 kubectl version 命令查看当前 Kubernetes 版本。

按照本演练进行操作,需要一个部署并配置了 Metrics Server 的集群。Kubernetes Metrics Server 从集群中的 kubelets 采集资源指标,并通过 Kubernetes API 公开这些指标,使用 apiserver 添加代表指标读数的新资源。

要了解如何部署 Metrics Server,请参阅 Metrics-server 文档。

运行 php-apache 服务器并暴露服务

为了演示 HorizontalPodAutoscaler,首先需要启动一个 Deployment,使用 hpa-example 镜像运行一个容器,然后使用以下清单文件将其暴露为一个 Service。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-apache
spec:
  selector:
    matchLabels:
      run: php-apache
  replicas: 1
  template:
    metadata:
      labels:
        run: php-apache
    spec:
      containers:
      - name: php-apache
        image: registry.k8s.io/hpa-example
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 500m
          requests:
            cpu: 200m
---
apiVersion: v1
kind: Service
metadata:
  name: php-apache
  labels:
    run: php-apache
spec:
  ports:
  - port: 80
  selector:
    run: php-apache

运行命令:

kubectl apply -f https://k8s.io/examples/application/php-apache.yaml

输出

deployment.apps/php-apache created
service/php-apache created
HorizontalPodAutoscaler