当前位置: 首页 > news >正文

k8s-无状态应用和有状态应用

k8s-无状态应用和有状态应用

  • 一、无状态应用
  • 二、有状态应用
  • 总结


一、无状态应用

Stateless Application

(1)是指该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例对于同一个请求响应的结果是完全一致的

(2)多个实例可以共享相同的持久化数据。例如:nginx实例,tomcat实例等

(3)相关的k8s资源有:ReplicaSet、ReplicationController、Deployment等,由于是无状态服务,所以这些控制器创建的pod序号都是随机值。并且在缩容的时候并不会明确缩容某一个pod,而是随机的,因为所有实例得到的返回值都是一样,所以缩容任何一个pod都可以

  • 随便访问那个pod都会得到一样的结果
  • pod的序号是随机的
  • 缩容的时候是随机进行的,删除或者增加,顺序是随机的

一个简单的 nginx 部署(无状态)

[root@k8s-1 pod]# cat nginx-deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginxcompany: sc
spec:replicas: 10selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latestports:- containerPort: 80
[root@k8s-1 pod]# kubectl apply -f nginx-deployment.yaml 
deployment.apps/nginx-deployment created
[root@k8s-1 pod]# kubectl get pod 
NAME                               READY   STATUS              RESTARTS   AGE
nginx-deployment-8d545c96d-6khpw   0/1     ContainerCreating   0          5s
nginx-deployment-8d545c96d-6tkm4   0/1     ContainerCreating   0          5s
nginx-deployment-8d545c96d-8n5mq   0/1     ContainerCreating   0          5s
nginx-deployment-8d545c96d-94g4f   0/1     ContainerCreating   0          5s
nginx-deployment-8d545c96d-96f7p   0/1     ContainerCreating   0          5s
nginx-deployment-8d545c96d-k487j   0/1     ContainerCreating   0          5s
nginx-deployment-8d545c96d-mzqsg   0/1     ContainerCreating   0          5s
nginx-deployment-8d545c96d-qg9bb   0/1     ContainerCreating   0          5s
nginx-deployment-8d545c96d-rxppb   0/1     ContainerCreating   0          5s
nginx-deployment-8d545c96d-tq28d   0/1     ContainerCreating   0          5s

观察以上启动的pod的名字是随机的,没有按照顺序产生:

无状态的业务: web
1.不需要保存数据
2.pod产生的顺序是随机的
3.缩容的时候是随机进行的,删除或者增加,顺序是随机的


二、有状态应用

Stateful Application

有状态服务 可以说是 需要数据存储功能的服务、或者指多线程类型的服务,队列等。(mysql数据库、kafka、zookeeper等)

特点:

  • 实例按顺序进行创建、更新或销毁,不是随机的
  • pod的编号是有顺序的
  • 每个实例都需要有自己独立的持久化存储

简单的 StatefulSet 部署

[root@k8s-1 pod]# cat mysql.yaml 
apiVersion: v1
kind: Service
metadata:name: mysql-svclabels:app: mysql
spec:ports:- port: 3306targetPort: 3306nodePort: 30036type: NodePortselector:app: mysql
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: mysql-db
spec:selector:matchLabels:app: mysql # 必须匹配 .spec.template.metadata.labelsserviceName: "mysql-svc"replicas: 3 # 默认值是 1minReadySeconds: 3 # 默认值是 0template:metadata:labels:app: mysql # 必须匹配 .spec.selector.matchLabelsspec:terminationGracePeriodSeconds: 5containers:- name: mysqlimage: mysql:latestimagePullPolicy: IfNotPresentenv:- name: MYSQL_ROOT_PASSWORDvalue: "sc@123456"ports:- containerPort: 3306name: mysql-port
[root@k8s-1 pod]# kubectl apply -f mysql.yaml 
service/mysql-svc created
statefulset.apps/mysql-db created
[root@k8s-1 pod]# kubectl get pod 
NAME                               READY   STATUS    RESTARTS   AGE
mysql-db-0                         1/1     Running   0          15s
mysql-db-1                         1/1     Running   0          9s
mysql-db-2                         1/1     Running   0          3s[root@k8s-1 pod]# kubectl delete -f mysql.yaml 
service "mysql-svc" deleted
statefulset.apps "mysql-db" deleted
[root@k8s-1 ~]# kubectl get pod -w
NAME                               READY   STATUS    RESTARTS   AGE
mysql-db-2                         1/1     Terminating   0          66s
mysql-db-1                         1/1     Terminating   0          75s
mysql-db-0                         1/1     Terminating   0          81s

总结

  • 无状态应用适合不需要持久化数据、实例可随意替换的场景,部署和扩展更简单
  • 有状态应用适合依赖持久化数据或稳定身份的场景,需要严格的实例管理和存储保障
http://www.dtcms.com/a/440135.html

相关文章:

  • 个人域名的网站wordpress 强制换行
  • 网站导航为什么用ul列表做企业宣传网站建设图示
  • 微信公众号里的小网站怎么做的du制作网站
  • 北京网站推广价格从seo角度谈网站建设
  • 美团网网站建设 费用最好网站设计案例
  • 建设工程的招标网站有哪些龙游做网站
  • 网站功能模块设计自己做响应式网站难吗
  • 网站分析报告范文网站建设怎么寻找客户
  • 互联网公司怎么找网站建设客户wordpress 子菜单项
  • wordpress网站实现微信登录wordpress嵌入淘宝商品
  • 长沙有哪些网站建设公司好罗湖做网站的公司哪家好
  • 学做网站需要学什么杭州企业建站程序
  • 单页面的网站模板网络推广内容策划
  • 象山做网站三个字公司名字聚财
  • 张店制作网站最好的小说网站排名
  • 建设银行网站怎么开通手机通知做打井宣传广告找什么网站
  • PPT实现颜色复刻的方式方法
  • 手机版网站建设价格织梦个人网站模板
  • 营销型企业网站分个人网站源代码下载
  • 大模型-显存优化策略篇
  • 网站系统修改字体设计欣赏网站
  • 网站制作软件排名沙县建设局网站
  • 杭州一起做网站搬家网站怎么做
  • 国外网站流量查询苏州住房建设建局官方网站
  • 装饰公司做网站免费域名注册查询入口
  • 泰安网站开发seo好学吗
  • 酒店协会网站集静态模板深圳成豪设计
  • 网站首页按钮图片注册公司银行开户需要多少钱
  • 上海网站建设网站制wordpress按颜色搜索
  • 网站为什么要维护如何做一个购物网站