在kubernetes中运行单节点有状态MySQL应用

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 前提需求 / Rquirements 现成的kubernetes集群 持久存储-PersistentVolume 持久存储容量声明-PersistentVolumeClaim 创建yaml文件 / Create YAML file https://raw.

前提需求 / Rquirements

  • 现成的kubernetes集群
  • 持久存储-PersistentVolume
  • 持久存储容量声明-PersistentVolumeClaim

创建yaml文件 / Create YAML file

https://raw.githubusercontent...

分别创建 Service、PersistentVolumeClaim、Deployment

apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: None --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi --- apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql:5.6 name: mysql env:  # Use secret in real usage - name: MYSQL_ROOT_PASSWORD value: password ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim

对于PersistentVolumeClaim中Access Modes的解释:

k8s不会真正检查存储的访问模式或根据访问模式做访问限制,只是对真实存储的描述,最终的控制权在真实的存储端。目前支持三种访问模式:

  • ReadWriteOnce – PV以read-write 挂载到一个节点
  • ReadWriteMany – PV以read-write 方式挂载到多个节点
  • ReadOnlyMany – PV以read-only 方式挂载到多个节点

部署YAML文件 / Deploy the Deployment

kubectl create -f https://k8s.io/docs/tasks/run-application/mysql-deployment.yaml
or
kubectl create -f mysql-deployment.yaml

查看Deployment的详细信息

kubectl describe deployment mysql

查看Deployment的pods信息

kubectl get pods -l app=mysql

检查PersistentVolumeClaim的信息

kubectl describe pvc mysql-pv-claim

进入MySQL实例 / Connet to MySQL

启动一个MySQL客户端服务并连接到MySQL

kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- mysql -h mysql -ppassword

升级MySQL应用 / Upgrade MySQL

可以使用 kubectl apply 命令对Deployment中的image或者其它部分进行升级;

针对有状态应用StatefulSet, 需要注意以下几点:

  • Don’t scale the app

This setup is for single-instance apps only. The underlying PersistentVolume can only be mounted to one Pod. For clustered stateful apps, see the StatefulSet documentation.

  • Use strategy: type: Recreate

in the Deployment configuration YAML file. This instructs Kubernetes to not use rolling updates. Rolling updates will not work, as you cannot have more than one Pod running at a time. The Recreate  strategy will stop the first pod before creating a new one with the updated configuration

删除Deployment / Delete the ployment

Delete the deployed objects by name:

kubectl delete deployment,svc mysql
kubectl delete pvc mysql-pv-claim
本文转自SegmentFault- 在kubernetes中运行单节点有状态MySQL应用
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
存储 运维 Kubernetes
批处理及有状态等应用类型在 K8S 上应该如何配置?
批处理及有状态等应用类型在 K8S 上应该如何配置?
|
17天前
|
关系型数据库 MySQL 数据库
运行flyway报错, MySQL 5.6 is no longer supported by Flyway Community Edition
运行flyway报错, MySQL 5.6 is no longer supported by Flyway Community Edition
18 1
|
6天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
11 4
|
7天前
|
JSON Kubernetes Go
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
17 0
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
|
10天前
|
关系型数据库 MySQL
如何解决cmd命令窗口无法运行mysql命令的问题
如何解决cmd命令窗口无法运行mysql命令的问题
7 0
|
18天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
14 0
|
29天前
|
边缘计算 Kubernetes 负载均衡
容器编排技术在云计算中的应用
随着云计算技术的飞速发展,容器编排技术作为一种重要的部署和管理工具,正在逐渐成为云计算领域的热门话题。本文将介绍容器编排技术在云计算中的应用,探讨其在提高应用程序部署效率、资源利用率以及系统可靠性方面的优势,并分析其未来发展趋势。
|
30天前
|
人工智能 自然语言处理 Kubernetes
LLM 技术图谱(LLM Tech Map)& Kubernetes (K8s) 与AIGC的结合应用
LLM 技术图谱(LLM Tech Map)& Kubernetes (K8s) 与AIGC的结合应用
60 0
|
1月前
|
Kubernetes 网络协议 Java
在Kubernetes上运行Flink应用程序时
【2月更文挑战第27天】在Kubernetes上运行Flink应用程序时
32 10
|
2月前
|
关系型数据库 MySQL 数据库
如何正确的把Mysql迁移至其他机器上运行
如何正确的把Mysql迁移至其他机器上运行