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

发布于:2025-07-20 ⋅ 阅读:(20) ⋅ 点赞:(0)

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: nginx
  tag: "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: mysql
    vers

网站公告

今日签到

点亮在社区的每一天
去签到