y50.第三章 Kubernetes从入门到精通 -- k8s实战案例(二三)

该博客介绍了如何在Kubernetes中使用StatefulSet搭建MySQL主从架构,包括StatefulSet的组成部分、镜像准备、创建PV、验证Pod状态以及进行高可用测试,如删除Master和Slave节点后的恢复能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

9.2 实战案例之MySQL 主从架构

https://kubernetes.io/zh/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/

https://www.kubernetes.org.cn/statefulset

基于StatefulSet实现:

https://kubernetes.io/zh/docs/tasks/run-application/run-replicated-stateful-application/

Pod调度运行时,如果应用不需要任何稳定的标示、有序的部署、删除和扩展,则应该使用一组无状态副本的控制器来部署应用,例如 Deployment 或 ReplicaSet更适合无状态服务需求,而StatefulSet适合管理所有有状态的服务,比如MySQL、MongoDB集群等。基于StatefulSet 实现的MySQL 一主多从架构
在这里插入图片描述

StatefulSet本质上是Deployment的一种变体,在v1.9版本中已成为GA版本,它为了解决有状态服务的问题,它所管理的Pod拥有固定的Pod名称,启停顺序,在StatefulSet中,Pod名字称为网络标识(hostname),还必须要用到共享存储。
在Deployment中,与之对应的服务是service,
### 关于 Kubernetes实战案例和使用场景 Kubernetes 是一种强大的容器编排工具,广泛应用于微服务架构的应用程序管理。下面是一些常见的 Kubernetes 实战案例及其具体应用场景。 #### 1. **Web 应用的部署** 通过 Kubernetes 中的核心资源对象 `Deployment` 和 `Service`,可以轻松实现 Web 应用的自动化部署和负载均衡。例如,在官方示例项目中提供了多个标准功能的最小化实例[^1]。这些例子展示了如何创建一个简单的 HTTPD 或 Nginx 容器,并将其作为服务对外暴露[^2]。 配置文件通常如下所示: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: web-deployment spec: replicas: 3 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - name: web-container image: nginx:latest --- apiVersion: v1 kind: Service metadata: name: web-service spec: selector: app: web ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer ``` 上述配置定义了一个由三个副本组成的 Nginx 部署以及相应的服务来访问它[^5]。 #### 2. **Pod 调度策略优化** 为了提高集群利用率并减少单节点过载的风险,可以通过设置亲和性和反亲和性规则来进行更精细的调度控制。比如在某些情况下希望同一应用的不同 Pod 不被安排到同一个物理机上以增强高可用性: ```yaml affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: "app" operator: In values: - "web" topologyKey: "kubernetes.io/hostname" ``` 此片段表明如果标签为 `"app=web"` 的 Pods 存在于某个主机,则新启动的相关 Pod 将不会分配给该主机。 #### 3. **监控与日志收集** 对于生产环境中的应用程序来说,实时监控其运行状态至关重要。Prometheus 结合 Grafana 可以为用户提供详细的性能指标图表;而 Fluentd 则负责统一采集各组件的日志数据上传至 Elasticsearch 进行存储查询分析。这类集成方案往往也需要借助 Helm Chart 工具快速安装完成。 命令如: `kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/setup/...` 同时也可以自定义 PrometheusRule 对象来自动生成告警规则[^4]。 #### 4. **CI/CD 流水线构建** Jenkins X 是基于 Jenkins 构建的一个开源 CI/CD 平台,专为云原生开发设计,默认支持 GitOps 模型操作 K8s 集群上的工作负载更新迭代过程完全遵循声明式的 YAML 文件描述方式从而简化流程复杂程度提升效率降低人为错误发生几率。 --- ### 总结 以上列举了几种典型的 Kubernetes 使用场景及其实现方法,涵盖了从基础的服务搭建到高级的功能扩展等多个方面。每一步都依赖清晰合理的资源配置才能达到预期效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Raymond运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值