无状态和有状态

无状态

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(定时任务)