2月4日java假期学习读书笔记

一、学习目标
了解Kubernetes的高级特性(StatefulSet、DaemonSet、Job、CronJob)。
掌握如何使用StatefulSet管理有状态应用。
学习如何使用DaemonSet部署集群级别的守护进程。
二、学习内容
(一)StatefulSet

  1. StatefulSet简介
    StatefulSet用于管理有状态应用,如数据库、消息队列等。
    它支持稳定的网络标识、有序部署和扩展、持久化存储等。
  2. 创建StatefulSet
    StatefulSet YAML文件:
    yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: my-statefulset
spec:
serviceName: "my-service"
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image
ports:
- containerPort: 80
volumeClaimTemplates:

  • metadata:
    name: my-storage
    spec:
    accessModes: [ "ReadWriteOnce" ]
    resources:
    requests:
    storage: 1Gi
    部署StatefulSet:
    bash

kubectl apply -f my-statefulset.yaml
(二)DaemonSet

  1. DaemonSet简介
    DaemonSet用于在集群的每个节点上运行一个Pod副本,通常用于部署集群级别的守护进程(如日志收集器、监控代理等)。
  2. 创建DaemonSet
    DaemonSet YAML文件:
    yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:
name: my-daemonset
spec:
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image
ports:
- containerPort: 80
部署DaemonSet:
bash

kubectl apply -f my-daemonset.yaml
(三)Job和CronJob

  1. Job
    Job用于运行一次性的任务,如数据迁移、批量处理等。
    Job YAML文件:
    yaml

apiVersion: batch/v1
kind: Job
metadata:
name: my-job
spec:
template:
spec:
containers:
- name: my-container
image: my-image
command: ["sh", "-c", "echo 'Hello, Job!'"]
restartPolicy: Never
部署Job:
bash

kubectl apply -f my-job.yaml
2. CronJob
CronJob用于运行定时任务,如定期备份、定时清理等。
CronJob YAML文件:
yaml

apiVersion: batch/v1
kind: CronJob
metadata:
name: my-cronjob
spec:
schedule: "*/1 * * * *" # 每分钟运行一次
jobTemplate:
spec:
template:
spec:
containers:
- name: my-container
image: my-image
command: ["sh", "-c", "echo 'Hello, CronJob!'"]
restartPolicy: OnFailure
部署CronJob:
bash

kubectl apply -f my-cronjob.yaml
(四)CI/CD集成

  1. CI/CD简介
    CI/CD(持续集成/持续部署)是一种软件开发实践,用于自动化代码构建、测试和部署。
    常用的CI/CD工具包括Jenkins、GitLab CI、GitHub Actions等。
  2. Jenkins集成
    安装Jenkins:
    bash

kubectl create -f https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/deploy/crd.yaml
kubectl create -f https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/deploy/rbac.yaml
kubectl create -f https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/deploy/operator.yaml
配置Jenkins:
创建Pipeline项目,配置源码仓库和构建脚本。
示例Pipeline脚本:
groovy

pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Deploy') {
steps {
sh 'kubectl apply -f deployment.yaml'
}
}
}
}
(五)实际练习:部署一个有状态应用并设置定时任务

  1. 创建StatefulSet
    编写StatefulSet YAML文件,部署有状态应用。
  2. 创建CronJob
    编写CronJob YAML文件,设置定时任务。
  3. 运行和测试
    部署StatefulSet和CronJob,验证有状态应用和定时任务是否正常运行。
    三、学习心得
    StatefulSet的重要性
    StatefulSet支持有状态应用的稳定运行,适用于数据库、消息队列等场景。
    它提供了稳定的网络标识和持久化存储,确保数据安全。
    DaemonSet的作用
    DaemonSet用于在每个节点上运行守护进程,适用于日志收集、监控代理等场景。
    它确保每个节点上都有一个Pod副本,支持集群级别的任务。
    Job和CronJob的使用场景
    Job用于运行一次性任务,CronJob用于运行定时任务。
    它们支持灵活的任务调度,适合数据处理、定期备份等场景。
    CI/CD集成的重要性
    CI/CD工具(如Jenkins)可以自动化代码构建、测试和部署,提高开发效率。
    它支持持续集成和持续部署,确保代码的高质量和快速迭代。
    实践的重要性
    通过实际部署有状态应用和定时任务,我更好地理解了Kubernetes的高级特性。
    实践可以帮助快速发现和解决问题,加深对知识点的理解。
posted @ 2025-02-19 23:57  头发少的文不识  阅读(19)  评论(0)    收藏  举报