【kubernetes笔记】k8s_controller控制器(06)

Page content

这一篇整理了controller相关的内容。

1.应用的无状态和有状态部署

1) 无状态

  • 认为Pod都是一样的
  • 没有顺序要求
  • 不用考虑在哪个node运行
  • 随意进行伸缩和扩展

2) 有状态

  • 上面无状态的因素都需要考虑
  • 让每个Pod独立,保持Pod启动顺序和唯一性
  • 唯一的网络标识符,持久存储
  • 有序,比如mysql主从

2.部署有状态应用

无头service
ClusterIP: none

apiVersion: v1 
kind: Service  
metadata:  
  name: nginx
  labels:
    app: nginx
spec: 
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
  ... ...

SatefulSet部署有状态应用

apiVersion: v1 
kind: StatefulSet  
metadata:  
  name: nginx
  ... ...

statefulset比起deployment
有身份(唯一标识) ==>
主机名(每个Pod有唯一主机名,唯一域名) + 规则
格式: 主机名称.service名称.命名空间.svc.cluster.local
(nginx-statefulset-0.nginx.default.svc.cluster.local)

3.部署守护进程DaemonSet

可以在每个node上运行一个pod,新加入的node也同样运行在一个pod里面
比如在每个Node节点安装数据采集工具

4.job和cronJob

job一次性任务

apiVersion: v1 
kind: Job  
metadata:  
  ... ...

cronjob定时任务

apiVersion: v1 
kind: CronJob  
metadata: 
  name: hello
spec:
  schedule: "*/1 * * * *"
  ... ...

欢迎大家的意见和交流

email: li_mingxie@163.com