【k8s应用管理】kubernetes HPA+rancher

文章目录

  • Kubernetes HPA部署指南
    • 概述
    • 部署metrics-server
    • 部署HPA
  • Rancher 管理 Kubernetes 集群指南
    • 实验环境
    • 安装及配置 Rancher

Kubernetes HPA部署指南

概述

Kubernetes HPA(Horizontal Pod Autoscaling)可以根据Pod的CPU利用率自动调整Deployment、Replication Controller或ReplicaSet中的Pod数量。本文将指导您如何部署HPA,包括前置条件(metrics-server的部署)和HPA的实际部署。

部署metrics-server

metrics-server是Kubernetes集群资源使用情况的聚合器,为HPA、kubectl top等提供数据。

  1. 上传并加载metrics-server镜像
    在所有Node节点上,将metrics-server.tar镜像包上传到/opt目录,并加载镜像:
    cd /opt/
    docker load -i metrics-server.tar
    
  2. 使用Helm安装metrics-server
    • 添加Helm仓库并更新:
      mkdir /opt/metrics
      cd /opt/metrics
      helm repo remove stable
      helm repo add stable https://charts.helm.sh/stable
      # 或者使用国内镜像
      # helm repo add stable http://mirror.azure.cn/kubernetes/charts
      helm repo update
      
    • 拉取metrics-server chart并修改配置:
      helm pull stable/metrics-server
      vim metrics-server.yaml
      
      在metrics-server.yaml中,修改以下参数:
      args:
      - --logtostderr
      - --kubelet-insecure-tls
      - --kubelet-preferred-address-types=InternalIP
      image:
        repository: k8s.gcr.io/metrics-server-amd64
        tag: v0.3.2
      
    • 使用Helm安装metrics-server:
      helm install metrics-server stable/metrics-server -n kube-system -f metrics-server.yaml
      
    • 验证安装:
      kubectl get pods -n kube-system | grep metrics-server
      kubectl top node
      kubectl top pods --all-namespaces
      

部署HPA

  1. 上传并加载测试镜像
    将hpa-example.tar镜像文件上传到所有节点的/opt目录,并加载镜像:
    cd /opt
    docker load -i hpa-example.tar
    
    验证镜像是否加载成功:
    docker images | grep hpa-example
    
  2. 创建测试Pod资源
    创建用于测试的Deployment和Service:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        run: php-apache
      name: php-apache
    spec:
      replicas: 1
      selector:
        matchLabels:
          run: php-apache
      template:
        metadata:
          labels:
            run: php-apache
        spec:
          containers:
          - image: mirrorgooglecontainers/hpa-example
            name: php-apache
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 80
            resources:
              requests:
                cpu: 200m
              limits:
                cpu: 500m
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: php-apache
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        run: php-apache
    
    应用配置文件:
    kubectl apply -f hpa-pod.yaml
    
  3. 创建HPA控制器
    使用kubectl autoscale命令创建HPA控制器:
    kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
    
  4. 测试HPA
    • 创建一个测试客户端容器:
      kubectl run -it load-generator --image=busybox /bin/sh
      
    • 在测试客户端中增加负载:
      while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done
      
    • 在另一个窗口中观察HPA状态:
      kubectl get hpa -w
      
    • 如果CPU性能较好导致负载节点上升不到10个,可再创建一个测试客户端同时测试:
      kubectl run -i --tty load-generator1 --image=busybox /bin/sh
      # while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done
      
    • 观察Pod状态,确认Pod数量是否根据负载自动调整:
      kubectl get pods
      
  • HPA扩容时,负载节点数量上升速度较快;但回收时,负载节点数量下降速度较慢(默认冷却时间5分钟),以防止因网络波动等原因导致误判。
  • 确保metrics-server正常运行,否则HPA无法获取Pod的CPU利用率信息。
  • 根据实际需求调整HPA的阈值、最小和最大Pod数量等参数。

Rancher 管理 Kubernetes 集群指南

Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,支持在混合云和本地数据中心集中部署与管理 Kubernetes 集群,确保集群的安全性,并加速企业数字化转型。
Rancher 的官网地址: https://docs.rancher.cn/。
Rancher 与 Kubernetes 的区别:

  • Kubernetes (k8s): 容器调度与编排系统,专注于管理应用容器。
  • Rancher: 基于 Kubernetes 构建,但不仅管理应用容器,更重要的是能够管理 Kubernetes 集群本身。Rancher 2.x 底层使用 Kubernetes 作为调度引擎,通过封装,使得用户在不熟悉 Kubernetes 概念的情况下也能轻松部署容器到 Kubernetes 集群中。

实验环境

  • 控制节点/master01: 192.168.80.10
  • 工作节点/node01: 192.168.80.11
  • 工作节点/node02: 192.168.80.12
  • Rancher 节点/rancher: 192.168.80.13

安装及配置 Rancher

  1. 安装 Rancher

    • 在所有节点上下载 rancher-agent 镜像:
      docker pull rancher/rancher-agent:v2.5.7
      
    • 在 Rancher 节点上下载 rancher 镜像并运行:
      docker pull rancher/rancher:v2.5.7
      docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged --name rancher rancher/rancher:v2.5.7
      
    • 检查 Rancher 容器是否运行:
      docker ps -a | grep rancher
      
  2. 登录 Rancher 平台

    • 在浏览器中访问 http://192.168.80.13,忽略安全警告。
    • 登录后,可选择将界面语言设置为中文。
  3. 管理已存在的 Kubernetes 集群

    • 在 Rancher 中选择【添加集群】,点击【导入】。
    • 设置【集群名称】为 k8s-cluster,点击【创建】。
    • 复制并执行导入命令(绕过证书检查):
      curl --insecure -sfL [RANCHER_IMPORT_URL] | kubectl apply -f -
      
    • 在 Kubernetes 控制节点上执行上述命令,并验证 cattle-system 命名空间中的 Pod 状态。
  4. 部署监控系统

    • 在 Rancher 中点击【启用监控以查看实时监控】。
    • 选择【监控组件版本】为 0.2.1,点击【启用监控】。
    • 等待监控部署完成(约10分钟)。
  5. 使用 Rancher 仪表盘管理 Kubernetes 集群

    • 创建命名空间
      • 点击左侧菜单【Namespaces】,再点击右侧【Create】。
      • 输入【Name】为 dev,点击【Create】。
    • 创建 Deployment 资源
      • 点击左侧菜单【Deployments】,再点击右侧【Create】。
      • 选择【Namespace】为 dev,输入【Name】为 nginx-dev,设置【Replicas】为 3。
      • 配置容器镜像为 nginx:1.14,并选择【Pull Policy】为 IfNotPresent
      • 添加标签 app=nginx
      • 点击【Create】。
    • 创建 Service
      • 点击左侧菜单【Services】,再点击右侧【Create】。
      • 选择【Node Port】类型,设置【Namespace】为 dev,输入【Name】为 nginx-dev
      • 配置端口映射,设置【Node Port】为 30180
      • 添加选择器 app=nginx
      • 点击【Create】。
    • 访问 Service:
      • 通过访问 http://:30180 来访问内部的 nginx 页面。

你可能感兴趣的:(kubernetes,rancher,容器,运维,云原生)