1、无状态和有状态区别
- 无状态:
- 认为Pod都是一样的
- 部署没有顺序要求
- 不用考虑在哪个node运行
- 随意进行伸缩和扩展
- (StatefulSet)有状态:
- 无状态的因素有需要考虑到
- 让每个Pod独立,保持Pod启动顺序和唯一性
- 唯一的网络标识符,持久存续
- 有序部署,比如Mysql主从
2、 部署有状态应用
- 无头Service
- ClusterIP: none
- ClusterIP: none
(1) 实例演示
apiVersion: v1
kind: Service
metadata:
name: web01-satefulset
labels:
app: web01-satefulset
spec:
clusterIP: None
selector:
app: web01-satefulset
ports:
- port: 80
name: web
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web01-satefulset
namespace: default
spec:
serviceName: web01-satefulset
replicas: 3
selector:
matchLabels:
app: web01-satefulset
template:
metadata:
labels:
app: web01-satefulset
spec:
containers:
- name: web01-satefulset
image: nginx:1.14
ports:
- containerPort: 80
经查勘 有三个pod,每个都是唯一名称,无头的Service
deployment和statefulSet区别:有身份的(唯一标识的)
- 根据主机名+按照一定规则生成域名
- 每个Pod有唯一主机名
- 格式 主机名称.service名称.名称空间.svc.cluster.local
- Web01-statefulset-().web01.default.svc.cluster.local
- 格式 主机名称.service名称.名称空间.svc.cluster.local