
Kubernetes服务之“运行单实例的有状态服务”
在环境中创建一个Persistent Volume (PV) 创建一个MySQL的Deployment 以DNS名称的方式,将MySQL服务暴露给集群中的其它Pod 在Google Compute Engine执行以下命令创建一个20GB的磁盘: 配置一个Persistent Volume(PV),它将引用刚刚创建的mysql-disk: 创建PV: 使用Kubernetes Deployment配置文件配置一个有状态服务,并使用Persistent Volume Claim(PVC)连接已经存在的PV。以下配置文件定义了一个将PV挂载到 将上述YAML文件应用到Kubernetes集群中: 查看Deployment的详细信息: 查看创建的Pod: 查看PV和PVC的状态: 服务配置允许集群中的其他Pod访问数据库。服务选项 如需更新Deployment的镜像或其他部分,可以使用 注意事项: 删除 Deployment 和 Service: 删除 PVC 和 PV: 如果是使用Google Compute Engine 的磁盘,还需要删除磁盘:
发布日期:2025-04-03 13:20:49
浏览次数:11
分类:精选文章
本文共 2988 字,大约阅读时间需要 9 分钟。
Kubernetes服务之“运行单实例的有状态服务”
Target:
Before you begin:
- 您需要一个Kubernetes集群,并安装了kubectl命令行工具。如果您没有集群,您可以使用Minikube创建。
- 我们将使用一个Persistent Volume(PV)来存储数据。以下步骤将使用Google Compute Engine 的GCEPersistentDisk示例,但其他类型的PV也都可以正常工作。
Creating the Disk:
gcloud compute disks create --size=20GB mysql-disk
apiVersion: v1kind: PersistentVolumemetadata: name: mysql-pvspec: capacity: storage: 20Gi accessModes: - ReadWriteOnce gcePersistentDisk: pdName: mysql-disk fsType: ext4
kubectl create -f https://k8s.io/docs/tasks/run-application/gce-volume.yaml
Deploying MySQL:
/var/lib/mysql
的MySQL数据库,并创建了一个20GB的PVC:apiVersion: v1kind: Servicemetadata: name: mysqlspec: ports: - port: 3306 selector: app: mysql clusterIP: None---apiVersion: v1kind: PersistentVolumeClaimmetadata: name: mysql-pv-claimspec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi---apiVersion: apps/v1beta1kind: Deploymentmetadata: name: mysqlspec: strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql:5.6 name: mysql env: - 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
kubectl create -f https://k8s.io/docs/tasks/run-application/mysql-deployment.yaml
kubectl describe deployment mysql
kubectl get pods -l app=mysql
kubectl describe pv mysql-pvkubectl describe pvc mysql-pv-claim
Accessing the MySQL Instance:
clusterIP: None
使得服务的DNS名称直接解析为Pod的IP地址。由于我们只运行一个Pod,并且不会增加Pod的数量,这是一种最佳的配置方式。2.运行一个MySQL客户端连接到MySQL服务:kubectl run -it --rm --image=mysql:5.6 mysql-client -- mysql -h-p
如果连接成功,这就意味着有状态的MySQL数据库已成功启动和运行。
Updating the Deployment:
kubectl apply
命令进行操作:kubectl apply -f https://k8s.io/docs/tasks/run-application/mysql-deployment.yaml
- 不进行扩展:这只适用于单实例应用。上述PV只能映射到一个Pod。对于有状态的集群应用,请使用StatefulSet。
- 使用策略
type: Recreate
:在Deployment YAML配置中使用该策略。它告诉Kubernetes不要使用滚动更新。由于滚动更新在这里不会工作,所以不会有多个Pod同时运行。策略Recreate
会在使用新的配置创建一个新的Pod时删除之前的Pod。
Deleting the Deployment:
kubectl delete deployment,svc mysql
kubectl delete pvc mysql-pv-claimkubectl delete pv mysql-pv
gcloud compute disks delete mysql-disk
以上步骤涵盖了从创建PV到部署MySQL服务,再到访问和管理的全过程。通过这些步骤,您可以在Kubernetes集群中成功运行一个有状态的单实例MySQL服务。
发表评论
最新留言
不错!
[***.144.177.141]2025年05月13日 08时11分14秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2025版网络工程11个高含金量证书(非常详细)零基础入门到精通,收藏这篇就够了
2025-03-30
2025自学成为黑客必读的5本书籍,带你从小白进阶成大佬
2025-03-30
20万高薪专业-网络安全(非常详细)零基础入门到精通,收藏这一篇就够了
2025-03-30
23张图告诉你组建一个网络需要用到哪些硬件设备?路由器、交换机、防火墙是不是就够了?
2025-03-30
24 WEB漏洞-文件上传之WAF绕过及安全修复_阿里云盾waf绕过怎么修复
2025-03-30
#12 btrfs文件系统
2025-03-30
#3194. 去月球
2025-03-30
$route 和 $router详解、区别、示例代码
2025-03-30
$scope angular在controller之外调用
2025-03-30
&和&&的区别
2025-03-30
(ios实战)单个ViewControl适配不同ios版本xib文件实现
2025-03-30
(type interface {}) to type string
2025-03-30
(五)java多线程之Lock类
2025-03-30
asp.net MVC 强类型视图表单Ajax提交的注意事项
2025-03-30
canvas设置文字阴影
2025-03-31
Centos 5.3 ADSL拨号组建中小型企业网络
2025-03-31
Centos 5.8 安装后不能使用ifconfig
2025-03-31
Centos 6 & 7 LVM 逻辑盘卷管理
2025-03-31