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