简介
本全面指南探讨了构建 Kubernetes 部署的关键方面,为开发人员和 DevOps 专业人员提供了有效设计、配置和扩展容器化应用程序的基本技术。通过理解 Kubernetes 部署的基本原理,读者将深入了解如何创建弹性且灵活的云原生基础设施。
本全面指南探讨了构建 Kubernetes 部署的关键方面,为开发人员和 DevOps 专业人员提供了有效设计、配置和扩展容器化应用程序的基本技术。通过理解 Kubernetes 部署的基本原理,读者将深入了解如何创建弹性且灵活的云原生基础设施。
Kubernetes 部署是一种关键资源,它为 Pod 和 ReplicaSet 提供声明式更新。它允许你定义应用程序的期望状态,从而实现更改的自动且可控的推出。
部署规范定义了应用程序应如何部署和管理。以下是一个基本示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
Kubernetes 支持多种部署策略:
策略 | 描述 | 用例 |
---|---|---|
重新创建 | 在创建新 Pod 之前终止所有现有 Pod | 适用于能够容忍停机时间的应用程序 |
滚动更新 | 逐步用新 Pod 替换旧 Pod | 大多数生产环境的首选策略 |
蓝绿部署 | 维护两个相同的环境 | 允许即时回滚和零停机部署 |
用于管理部署的基本 kubectl 命令:
## 创建部署
kubectl apply -f deployment.yaml
## 查看部署
kubectl get deployments
## 描述特定部署
kubectl describe deployment nginx-deployment
## 扩展部署
kubectl scale deployment nginx-deployment --replicas=5
## 更新部署镜像
kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1
在使用 Kubernetes 部署时,LabEx 提供全面的实践环境,以有效地练习和学习部署技术。
ConfigMaps 允许你将配置与容器镜像解耦:
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
DATABASE_URL: postgresql://mydb.example.com
LOG_LEVEL: info
安全地处理敏感信息:
apiVersion: v1
kind: Secret
metadata:
name: app-secrets
type: Opaque
data:
DB_PASSWORD: base64编码的密码
API_KEY: base64编码的API密钥
模式 | 描述 | 用例 |
---|---|---|
不可变配置 | 不可更改的配置 | 可预测的部署 |
动态重新加载 | 运行时配置更新 | 灵活的应用程序 |
模板化配置 | 参数化配置 | 灵活的部署 |
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-deployment
spec:
template:
spec:
containers:
- name: myapp
env:
- name: ENVIRONMENT
valueFrom:
configMapKeyRef:
name: env-config
key: environment
LabEx 提供全面的环境,用于实践复杂的 Kubernetes 配置场景。
## 创建 ConfigMap
kubectl create configmap my-config --from-literal=key1=value1
## 应用配置
kubectl apply -f config.yaml
## 查看 ConfigMaps
kubectl get configmaps
## 描述特定的 ConfigMap
kubectl describe configmap app-config
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: web-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 70
扩展类型 | 描述 | 关键指标 |
---|---|---|
基于 CPU | 根据 CPU 利用率进行扩展 | CPU 使用百分比 |
基于内存 | 根据内存消耗进行扩展 | 内存使用情况 |
自定义指标 | 使用特定于应用程序的指标进行高级扩展 | 请求速率、队列长度 |
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: web-app-vpa
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: web-app
updatePolicy:
updateMode: "Auto"
## 手动扩展
kubectl scale deployment web-app --replicas=5
## 查看当前扩展状态
kubectl get hpa
## 描述水平 Pod 自动扩展器
kubectl describe hpa web-app-hpa
LabEx 提供交互式环境,用于实践和理解复杂的 Kubernetes 扩展场景。
掌握 Kubernetes 部署需要深入理解配置技术、扩展策略和架构最佳实践。本教程为你提供了基础知识,以便设计出强大、可扩展的 Kubernetes 部署,使其能够适应动态计算需求,同时在云原生环境中保持高性能和可靠性。