当前位置: 首页 > 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.lryc.cn/news/593548.html

相关文章:

  • 第五章 用Java实现JVM之运行时数据区
  • Linux内核设计与实现 - 第5章 系统调用
  • 堆堆堆,咕咕咕
  • Java行为型模式---中介者模式
  • 【办公类-107-02】20250719视频MP4转gif(削减MB)
  • Triton的核心概念与简单入门
  • 突破研究边界!探索OpenAI o3与o4-mini模型的无限可能
  • Attu-Milvus向量数据库可视化工具
  • 《Linux系统配置实战:NTP时间同步与SSH免密登录全流程指南》​​
  • Linux练习二
  • 低代码平台ToolJet实战总结
  • 网络大提速,RDMA,IB,iWrap
  • windows docker-03-如何一步步学习 docker
  • 游戏开发日志
  • SurfaceView、TextureView、SurfaceTexture 和 GLSurfaceView
  • eNSP综合实验(DNCP、NAT、TELET、HTTP、DNS)
  • 西门子 S7-1500 PLC 电源选型指南:系统电源与负载电源的核心区别
  • 【Linux服务器】-zabbix通过proxy进行分级监控
  • 【初识数据结构】CS61B中的基本图算法:DFS, BFS, Dijkstra, A* 算法及其来历用法
  • JavaSE-接口
  • 枚举类高级用法
  • 嵌入式学习-PyTorch(8)-day24
  • Ubuntu20.04 samba配置
  • 读书笔记:最好使用C++转型操作符
  • UE5制作小地图
  • CSS篇——第二章 六十五项关键技能(下篇)
  • Django3 - Web前端开发基础 HTML、CSS和JavaScript
  • 【C语言进阶】题目练习(3)
  • 【RK3576】【Android14】摄像头MIPI开发调试
  • Android Auto 即将推出新功能