第一周学习总结
一、学习目标
了解Kubernetes的资源管理特性(HPA、Resource Quotas、Namespace)。
掌握如何使用Horizontal Pod Autoscaler(HPA)自动扩展Pod。
学习如何使用Resource Quotas管理资源配额。
二、学习内容
(一)Horizontal Pod Autoscaler(HPA)
- HPA简介
HPA是Kubernetes的自动扩展功能,可以根据CPU使用率或其他自定义指标自动调整Pod副本的数量。
它支持水平扩展,适用于负载变化较大的应用。 - 创建HPA
HPA YAML文件:
yaml
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: my-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-deployment
minReplicas: 2
maxReplicas: 10
metrics:
• type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
部署HPA:
bash
kubectl apply -f my-hpa.yaml
(二)Resource Quotas - Resource Quotas简介
Resource Quotas用于限制命名空间(Namespace)中的资源使用量,如CPU、内存、Pod数量等。
它可以帮助避免资源滥用,确保集群的稳定运行。 - 创建Resource Quotas
Resource Quotas YAML文件:
yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: my-resource-quota
namespace: my-namespace
spec:
hard:
pods: "10"
requests.cpu: "2"
requests.memory: "1Gi"
limits.cpu: "4"
limits.memory: "2Gi"
部署Resource Quotas:
bash
kubectl apply -f my-resource-quota.yaml
(三)Namespace - Namespace简介
Namespace用于将集群资源划分为多个虚拟子集群,便于资源隔离和管理。
它支持多租户环境,适用于开发、测试和生产环境的隔离。 - 创建Namespace
Namespace YAML文件:
yaml
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
部署Namespace:
bash
kubectl apply -f my-namespace.yaml
(四)CI/CD集成(GitLab CI/GitHub Actions) - GitLab CI
GitLab CI是一个集成的CI/CD工具,支持自动化构建、测试和部署。
配置GitLab CI:
在项目根目录下创建.gitlab-ci.yml文件:
yam
stages:
• build
• deploy
build:
stage: build
script:
- mvn clean package
deploy:
stage: deploy
script: - kubectl apply -f deployment.yaml
- GitHub Actions
GitHub Actions是一个自动化工具,支持CI/CD流程。
配置GitHub Actions:
在项目根目录下创建.github/workflows/main.yml文件:
yaml
name: CI/CD Pipeline
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11' - name: Build with Maven
run: mvn clean package
deploy:
runs-on: ubuntu-latest
steps: - name: Deploy to Kubernetes
run: kubectl apply -f deployment.yaml
(五)实际练习:部署一个自动扩展的Spring Boot应用
- 创建Namespace
创建一个Namespace,用于隔离资源。 - 部署应用
创建Deployment和Service YAML文件,部署Spring Boot应用。 - 创建HPA
创建HPA YAML文件,配置自动扩展规则。 - 运行和测试
部署应用和HPA,通过负载测试验证自动扩展功能。
三、学习心得
HPA的作用
HPA可以根据负载自动调整Pod副本数量,确保应用的高可用性和性能。
它支持灵活的扩展策略,适用于动态负载的应用。
Resource Quotas的重要性
Resource Quotas可以限制资源使用量,避免资源滥用,确保集群的稳定运行。
它支持细粒度的资源管理,适用于多租户环境。
Namespace的用途
Namespace用于资源隔离和管理,便于开发、测试和生产环境的划分。
它支持多租户环境,确保资源的安全性和独立性。
CI/CD集成的优势
GitLab CI和GitHub Actions提供了强大的自动化能力,支持持续集成和持续部署。
它们可以自动化构建、测试和部署流程,提高开发效率和代码质量。
实践的重要性
通过实际部署一个自动扩展的Spring Boot应用,我更好地理解了Kubernetes的资源管理特性。
实践可以帮助快速发现和解决问题,加深对知识点的理解。
浙公网安备 33010602011771号