Kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制Pod的具体状态和行为
1、Deployment:适合无状态的服务部署
2、StatefullSet:适合有状态的服务部署
3、DaemonSet:一次部署,所有的node节点都会部署,例如一些典型的应用场景:
- 运行集群存储 daemon,例如在每个Node上运行 glusterd、ceph
- 在每个Node上运行日志收集 daemon,例如 fluentd、 logstash
- 在每个Node上运行监控 daemon,例如 Prometheus Node Exporter
4、Job:一次性的执行任务
5、Cronjob:周期性的执行任务
- deployment
- 副本 replicas 去设置启动多个少实例
- spec: 设置容器相关的信息: 镜像,cpu设置多少, 端口映射、 挂载
- 更新策略:
- 我升级版本了。 如果我停掉之前的版本,然后上线新的版本, 有一段时间服务不可用
- 滚动更新就可以不用停止服务
如何获取某个pod的deployment
kubectl get deployments --namespace=shop -l "app=user-service" -o yaml > ./user-service.yaml
官方文档
https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/