无状态和有状态
无状态
Deployment
- 认为Pod 都是一样的。javademo1-6fb64c4664-dj4dh、javademo1-6fb64c4664-dj54s 它们的内容是一样的。
- 没有顺序要求,先启第一个还是启第二个无所谓
- 不用考虑在哪个 node 上运行
- 随意进行伸缩和扩展
有状态
- 无状态的因素都要考虑到
- 让每个 pod 独立,保持pod启动顺序和唯一性
- 唯一的网络标识符,持久存储
- 有些,比如MySQL 主从,先启主,再启从
部署有状态应用
无头的Service, ClusterIP: none
- SatefulSet 部署无状态应用
Deployment 和 Statefulset 区别:有身份的(唯一标识的)
根据主机名+一定规则生成域名
每个Pod有唯一主机名
唯一域名:
格式:主机名称.Service名称.命名空间.svc.cluster.local
nginx-statefulset-0.nginx.default.svc.cluster.local
部署守护进程 DaemonSet
在每一个 node 上运行一个 pod,新加入的 node 也同样运行在一个pod 里面
job(一次性任务)
[root@k8smaster ~]# kubectl get job
cronjob(定时任务)