devOps学习

一些知识点

XXX


一、基础概念与流程

  1. 什么是 DevOps?核心目标是什么?

    • DevOps:一种结合开发(Dev)与运维(Ops)的文化与实践,强调自动化、协作和持续交付。
    • 核心目标:缩短软件交付周期,提高部署频率,确保系统稳定性和快速故障恢复。
  2. CI/CD 流程的具体步骤?

    • 持续集成(CI):代码提交后自动触发构建、测试(单元测试、集成测试)。
    • 持续交付/部署(CD):将通过测试的代码自动部署到测试/生产环境。
    • 工具链示例:GitLab CI、Jenkins、GitHub Actions、Argo CD。
  3. 基础设施即代码(IaC)的优势及常用工具?

    • 优势:版本控制、环境一致性、快速重建。
    • 工具:Terraform(多云编排)、Ansible(配置管理)、AWS CloudFormation(AWS 专用)。

二、工具与实践

  1. Jenkins Pipeline 如何实现多阶段部署?

    • 示例 Jenkinsfile
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      pipeline {
      agent any
      stages {
      stage('Build') {
      steps { sh 'mvn clean package' }
      }
      stage('Test') {
      steps { sh 'mvn test' }
      }
      stage('Deploy to Staging') {
      when { branch 'main' }
      steps { sh 'kubectl apply -f staging.yaml' }
      }
      }
      }
  2. Docker 与虚拟机的区别?

    Docker 虚拟机(VM)
    共享宿主机内核,轻量级 独立内核,资源占用高
    秒级启动 分钟级启动
    隔离性较弱(基于进程/命名空间) 完全隔离(Hypervisor)
  3. Kubernetes 中如何实现滚动更新?

    • 通过 Deployment 配置:
      1
      2
      3
      4
      5
      6
      spec:
      strategy:
      type: RollingUpdate
      rollingUpdate:
      maxSurge: 1 # 允许超出副本数的最大 Pod 数
      maxUnavailable: 0 # 更新期间不可用 Pod 的最大数量

三、监控与日志

  1. Prometheus + Grafana 的监控流程?

    • Prometheus:定时拉取目标服务的指标数据(通过 exporter)。
    • Grafana:可视化监控面板,支持 PromQL 查询。
    • 告警:通过 Alertmanager 配置规则(如 CPU 使用率 > 80%)。
  2. ELK/EFK 日志系统的组成及作用?

    • Elasticsearch:分布式搜索和分析引擎,存储日志。
    • Logstash/Fluentd:日志收集、过滤和转发。
    • Kibana:可视化日志数据并分析。
  3. 如何排查 Kubernetes Pod 的日志问题?

    1
    2
    kubectl logs <pod-name> -c <container-name>  # 查看指定容器日志
    kubectl describe pod <pod-name> # 查看 Pod 事件详情

四、云与自动化

  1. Terraform 的核心概念?

    • Provider:定义云平台(如 AWS、Azure)。
    • Resource:声明基础设施组件(如 EC2 实例)。
    • State 文件:记录当前基础设施状态,用于增量更新。
  2. AWS/Azure/GCP 常用服务有哪些?

    • 计算:EC2(AWS)、VM(Azure)、Compute Engine(GCP)。
    • 存储:S3(AWS)、Blob Storage(Azure)、Cloud Storage(GCP)。
    • 容器服务:EKS(AWS)、AKS(Azure)、GKE(GCP)。
  3. 如何实现跨云容灾?

    • 策略:数据多云备份(如 S3 跨区域复制)、应用多区域部署、DNS 流量切换(如 Route 53)。

五、安全与合规

  1. DevSecOps 的核心实践?

    • 左移安全:在 CI/CD 流程中集成安全扫描(如 SAST、DAST)。
    • 工具链:SonarQube(代码质量)、Trivy(容器漏洞扫描)、Vault(密钥管理)。
  2. Kubernetes 如何管理敏感信息?

    • Secret 对象:存储密码、令牌等敏感数据(Base64 编码)。
    • 加密方案:使用 Kubernetes 的 etcd 加密或外部 Vault 集成。

六、高频场景题

  1. 如何优化 CI/CD 管道的执行速度?

    • 并行执行测试任务。
    • 使用缓存(如 Maven/Gradle 依赖缓存)。
    • 拆分大型单体管道为多个小任务。
  2. 部署失败如何快速回滚?

    • Kuberneteskubectl rollout undo deployment/<name>
    • Terraformterraform apply -auto-approve -refresh=false -backup=backup.tfstate -state=previous.tfstate
  3. 如何实现蓝绿发布或金丝雀发布?

    • 蓝绿发布:通过负载均衡切换流量到新版本。
    • 金丝雀发布:逐步将小部分流量导入新版本(如 Istio 流量权重)。

七、进阶问题

  1. 什么是 GitOps?核心工具是什么?

    • GitOps:以 Git 作为唯一声明式基础设施和应用的来源,实现自动化同步。
    • 工具:Argo CD、Flux CD。
  2. 服务网格(Service Mesh)的作用?

    • 处理服务间通信的治理(如流量管理、熔断、链路追踪),与业务代码解耦。
    • 工具:Istio、Linkerd。
  3. Serverless 架构的优缺点?

    • 优点:无需管理服务器,按需付费,自动扩缩容。
    • 缺点:冷启动延迟,调试困难,供应商锁定风险。