当前位置: 首页 > news >正文

Helm、HPA 与 Rancher:Kubernetes(十) 生态核心工具详解

一、Helm:Kubernetes 包管理利器

1.1 Helm 概述

Helm 是 Kubernetes 的官方包管理工具,类似于传统 Linux 系统中的 YUM 或 APT。它通过打包的方式简化了 Kubernetes 应用的部署和管理,支持版本控制和动态配置。

​核心价值:​

  • 简化微服务化项目的容器部署和管理

  • 支持应用发布的版本控制

  • 提供模板化配置,动态生成 K8s 资源清单

1.2 Helm 核心概念

概念

说明

类比

​Chart​

Helm 软件包(TAR 格式),包含一组 K8s 资源 YAML 文件

类似于 RPM/DEB 包

​Repository​

Chart 仓库,Web 服务器存储 Chart 包

类似 YUM 源

​Release​

使用 Chart 在集群中部署的应用实例

应用程序的版本实例

1.3 Helm 版本演进

​Helm2(C/S 架构):​

  • 客户端:helm

  • 服务端:Tiller(部署在 kube-system 命名空间)

  • 安全隐患:Tiller 通常拥有集群所有权限

​Helm3(重大改进):​

  • 移除 Tiller 组件

  • 类似 kubectl,直接使用 kubeconfig 文件权限

  • 提升安全性和简化架构

1.4 Helm 实战部署

安装配置
# 下载并安装 Helm
wget https://github.com/helm/helm/tags
tar -zxvf helm-v3.6.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm# 启用命令补全
source <(helm completion bash)
仓库管理
# 添加常用仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add stable http://mirror.azure.cn/kubernetes/charts# 更新和查看
helm repo update
helm repo list# 搜索 Chart
helm search repo stable
应用部署示例
# 安装 Redis
helm install my-redis bitnami/redis -n default# 查看发布状态
helm list
helm status my-redis# 卸载发布
helm uninstall my-redis

1.5 自定义 Chart 开发

Chart 目录结构
nginx/
├── Chart.yaml          # Chart 元数据
├── values.yaml         # 配置值文件
└── templates/          # 模板目录├── deployment.yaml├── service.yaml├── ingress.yaml└── _helpers.tpl    # 模板助手
自定义部署流程
# 创建 Chart
helm create nginx# 修改配置
vim nginx/values.yaml
# 调整镜像、副本数、服务类型等参数# 打包和验证
helm lint nginx
helm package nginx# 部署测试
helm install nginx ./nginx --dry-run --debug
helm install nginx ./nginx -n default
升级与回滚
# 应用升级
helm upgrade nginx nginx# 查看历史
helm history nginx# 版本回滚
helm rollback nginx 1

1.6 Harbor 作为 Helm 仓库

# 安装 push 插件
helm plugin install https://github.com/chartmuseum/helm-push# 添加 Harbor 仓库
helm repo add harbor http://192.168.10.19/chartrepo/chart_repo# 推送 Chart
helm push nginx harbor

二、HPA:自动弹性伸缩

2.1 HPA 工作原理

HPA(Horizontal Pod Autoscaling)基于资源利用率自动调整 Pod 副本数量,实现应用的水平扩展。

​监控机制:​

  • 周期性检测 Pod CPU 使用率(默认30秒)

  • 通过 metrics-server 获取资源度量数据

  • 动态调整 Replication Controller/Deployment 的 Pod 数量

2.2 部署 metrics-server

# 加载镜像
docker load -i metrics-server.tar# Helm 部署
helm repo add stable https://charts.helm.sh/stable
helm install metrics-server stable/metrics-server -n kube-system -f metrics-server.yaml

2.3 HPA 实战演示

# hpa-pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: php-apache
spec:replicas: 1template:spec:containers:- name: php-apacheimage: gcr.io/google_containers/hpa-exampleresources:requests:cpu: 200m
# 创建 HPA 控制器
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10# 压力测试
kubectl run -it load-generator --image=busybox /bin/sh
# 在容器内执行:while true; do wget -q -O- http://php-apache; done# 监控扩展过程
kubectl get hpa -w

2.4 资源限制策略

Pod 级别限制
resources:limits:cpu: "2"memory: 1Girequests:cpu: 250mmemory: 250Mi
命名空间级别配额
apiVersion: v1
kind: ResourceQuota
metadata:name: compute-resources
spec:hard:pods: "20"requests.cpu: "2"requests.memory: 1Gilimits.cpu: "4"limits.memory: 2Gi

三、Rancher:多集群管理平台

3.1 Rancher 简介

Rancher 是企业级多集群 Kubernetes 管理平台,支持混合云环境的集中管理。

​核心特性:​

  • 简化 K8s 集群部署和管理

  • 提供直观的 Web UI 界面

  • 支持多集群统一管理

  • 内置监控和告警功能

3.2 Rancher 部署

# 运行 Rancher 容器
docker run -d --restart=unless-stopped \-p 80:80 -p 443:443 \--privileged \--name rancher \rancher/rancher:v2.5.7

3.3 集群管理流程

  1. ​访问 Web 界面​​:http://192.168.10.23

  2. ​导入现有集群​​:通过令牌方式接入已存在的 K8s 集群

  3. ​执行导入命令​​:

curl --insecure -sfL https://192.168.10.23/v3/import/xxx.yaml | kubectl apply -f -

3.4 Rancher 应用管理示例

创建命名空间
  • 名称:dev

  • 描述:开发环境

部署应用
# 通过 UI 创建 Deployment
Namespace: dev
Name: nginx-dev
Replicas: 3
Container Image: nginx:1.14
Labels: app=nginx
创建服务
# NodePort 服务配置
Service Type: NodePort
Namespace: dev  
Name: nginx-dev
Port: 80 → 80
Node Port: 30180
Selector: app=nginx

四、总结对比

4.1 工具定位对比

工具

主要功能

适用场景

​Helm​

K8s 应用包管理

应用打包、版本管理、模板化部署

​HPA​

自动弹性伸缩

应对流量波动、资源优化

​Rancher​

多集群管理平台

企业级管理、简化运维、可视化

4.2 最佳实践建议

Helm 使用建议
  1. ​Chart 设计​​:合理组织模板文件,提高复用性

  2. ​版本管理​​:利用 Helm 的版本控制实现可靠部署

  3. ​安全考虑​​:使用 Helm 3 避免 Tiller 的安全风险

HPA 配置要点
  1. ​指标选择​​:除 CPU 外,可考虑自定义指标

  2. ​冷却时间​​:合理设置扩缩容冷却周期避免抖动

  3. ​资源预留​​:确保有足够资源供扩展使用

Rancher 管理策略
  1. ​集群规划​​:根据业务需求合理规划多集群架构

  2. ​权限管理​​:利用 Rancher 的 RBAC 进行精细权限控制

  3. ​监控集成​​:充分利用内置监控和告警功能

4.3 综合应用场景

在实际生产环境中,这三个工具通常协同工作:

  • 使用 ​​Rancher​​ 统一管理多个 K8s 集群

  • 通过 ​​Helm​​ 实现应用的标准化部署和版本管理

  • 配置 ​​HPA​​ 确保应用能够根据负载自动弹性伸缩

这种组合为企业提供了完整的 Kubernetes 应用管理解决方案,从基础设施管理到应用部署再到运行时弹性,覆盖了云原生应用的完整生命周期。

http://www.dtcms.com/a/507011.html

相关文章:

  • Docker常见问题
  • 拟合优度:模型与数据的契合之度
  • 理解 Python 的有序字典 OrderedDict
  • 狙击生态的演化史:从抢跑到模型套利
  • 用C语言实现外观模式
  • Git三路合并算法的弊端
  • 网站模板文件扫描工作招聘58同城
  • 网站建设上线问题企业网站的推广方法有哪些
  • LeetCode:207. 课程表
  • Oracle EBS ERP开发——报表生成Excel标准模板设计
  • CANoe基础讲解02:掌握CANoe Trace窗口
  • Kanass V1.3.3版本发布,支持在线安装与消息配置
  • 第十七篇:本地模型部署:使用DeepSeek开源模型进行离线推理
  • 【STM32项目开源】基于STM32的智能家居环境监测系统
  • 串口AT指令控制EC20连接MQTT服务器
  • 如何实现企业网站推广的系统性网站建设腾讯课堂
  • 全网营销型的网站wordpress 开源吗
  • 常见Linux环境变量深度解析
  • Jetson上安装TensorRT
  • 开发避坑指南(62):解决URLDecoder:Illegal hex characters in escape (%) pattern 异常
  • DAX分列年月日
  • 【开题答辩实录分享】以《自然灾害隐患点管理信息系统》为例进行答辩实录分享
  • dpdk如何与内核进行交互——vdev的用法
  • 丝杆模组如何满足高精度加工设备的高要求?
  • 咋做网站泉州网络推广专员
  • 【STL——vector容器】
  • 如何做网站流量统计网站建设公司中企动力
  • 练习python题目小记(三)
  • 技术视角下的财务自动化:如何用最优TCO评估RPA机器人的性价比?
  • C++ 模板再升级:非类型参数、特化技巧(含全特化与偏特化)、分离编译破解