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