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

K8s与Helm实战:从入门到精通

Kubernetes 简介

Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。最初由 Google 设计并捐赠给云原生计算基金会(CNCF),现已成为容器编排领域的事实标准。

核心功能

  • 自动化容器部署:支持声明式配置和自动化部署,减少人工干预。
  • 弹性伸缩:根据负载动态调整应用实例数量,优化资源利用率。
  • 服务发现与负载均衡:自动分配流量至健康容器,确保服务高可用性。
  • 自我修复:监控容器状态,自动重启或替换故障实例。
  • 存储编排:支持多种存储系统(如本地存储、云存储)的动态挂载。

核心组件

  • Master 节点:包含 API Server、Scheduler、Controller Manager 等组件,负责集群管理。
  • Worker 节点:运行容器化应用,包含 Kubelet(代理)和 Kube-proxy(网络代理)。
  • Pod:最小调度单元,包含一个或多个共享资源的容器。
  • Service:定义一组 Pod 的访问策略,提供稳定 IP 和 DNS 名称。

流程图

典型应用场景

  • 微服务架构中管理数百个服务的生命周期。
  • 混合云或多云环境下实现应用的可移植性。
  • 持续集成/持续交付(CI/CD)流水线中的自动化部署。

学习资源推荐

  • 官方文档:kubernetes.io
  • 实践工具:Minikube(本地单节点集群)、kubectl(命令行工具)。

Kubernetes 通过抽象底层基础设施,使开发者能够专注于应用逻辑,提升运维效率。

Helm 是 Kubernetes 的包管理工具

Helm 是 Kubernetes 的包管理工具,用于简化应用的部署和管理。以下是 Helm 的常见使用场景和示例,涵盖安装、配置、模板化、依赖管理等核心功能。

流程图

Helm 基础操作示例

安装 Helm

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

添加仓库

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

搜索 Chart

helm search repo nginx

安装 Chart

helm install my-nginx bitnami/nginx

列出已安装的 Release

helm list

卸载 Release

helm uninstall my-nginx


Helm 自定义配置示例

覆盖默认值
创建 values.yaml 文件:

replicaCount: 3
image:repository: nginxtag: "1.21.0"

通过文件安装:

helm install my-nginx bitnami/nginx -f values.yaml

命令行覆盖值

helm install my-nginx bitnami/nginx --set replicaCount=3


Helm 模板开发示例

创建 Chart

helm create myapp

模板变量
templates/deployment.yaml 中使用变量:

apiVersion: apps/v1
kind: Deployment
metadata:name: {{ .Release.Name }}-deployment
spec:replicas: {{ .Values.replicaCount }}

条件判断

{{- if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: {{ .Release.Name }}-ingress
{{- end }}

循环遍历

env:
{{- range $key, $value := .Values.env }}- name: {{ $key }}value: {{ $value | quote }}
{{- end }}


Helm 依赖管理示例

添加依赖
Chart.yaml 中声明依赖:

dependencies:- name: mysqlvers
http://www.xdnf.cn/news/1149949.html

相关文章:

  • MySQL数据丢失救援办法
  • 物联网iot、mqtt协议与华为云平台的综合实践(万字0基础保姆级教程)
  • 抖音回应:没有自建外卖,就是在团购的基础上增加的配送功能
  • 游戏开发日志
  • Android回调机制入门
  • Ambiguity-Resolved Waveform Design for Cell-free OFDM-Based ISAC Systems
  • QuecPython-正则表达式
  • 研华PCI-1285/1285E 系列------(一概述)
  • LVS(Linux virtual server)-实现四层负载均衡
  • Spring Boot 与微服务详细总结
  • 软件测试理论02—测试流程体系
  • 云端成本治理利器:亚马逊云科技智能仪表盘(AWS Cost Intelligence Dashboard)深度解析
  • 练习三:熟知前端知识
  • Django3 - Web前端开发基础 HTML、CSS和JavaScript
  • web.m3u8流媒体视频处理
  • 服装公司生产管理系统,如何实战提升生产效率?
  • 张量交换维度(转置),其实是交换了元素的排列顺序
  • 如何实现电脑自动关机与定时任务管理
  • ABP VNext + Temporal:分布式工作流与 Saga
  • react+antd 可拖拽模态框组件
  • 尚庭公寓-----day2 业务功能实现
  • 物联网系统中的可视化大屏定义
  • 华为仓颉编程语言语法简介与示例
  • React 的 `cache()` 函数
  • 医疗AI与融合数据库的整合:挑战、架构与未来展望(下)
  • Java行为型模式---状态模式
  • 6-大语言模型—预训练:数据处理
  • SpringBoot项目部署至云服务器
  • simulink系列之汽车应用层信号处理
  • Django母婴商城项目实践(九)- 商品列表页模块