kubernetes-- 负载
k8s 多种负载的使用:
- deployment :无状态服务, 如微服务、提供多副本等功能
- StatusfulSet:有状态, 如redis提供稳定的存储、网络等功能
- DeamonSet:守护进程, 比如:日志收集组件,每台机器有且只有一份
- job/Cronjob: 定时任务, 如指定时间运行
Deployment
控制Pod,使Pod拥有多副本,自愈,扩缩容等能力
# 创建pod kubectl create deployment mytomcat --image=tomcat:8.5.68
多副本
kubectl create deployment mytomcat --image=nginx --replicas=3
查看
apiVersion: apps/v1 kind: Deployment metadata: labels: app: my-dep name: my-dep spec: replicas: 3 selector: matchLabels: app: my-dep template: metadata: labels: app: my-dep spec: containers: - image: nginx name: nginx
扩缩容能力
# 扩容2台 kubectl scale --replicas=5 deployment/my-dep # 缩容3台 kubectl scale --replicas=2 deployment/my-dep
自愈&故障转移
- 停机
- 删除pod
- 容器崩溃
- 节点机器宕机
- .......
滚动更新
# 热升级
kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record # 查看状态
kubectl rollout status deployment/my-dep
# 第二种热升级(修改yaml)
kubectl edit deployment/my-dep
版本回退
#历史记录 kubectl rollout history deployment/my-dep #查看某个历史详情 kubectl rollout history deployment/my-dep --revision=2 #回滚(回到上次) kubectl rollout undo deployment/my-dep #回滚(回到指定版本) kubectl rollout undo deployment/my-dep --to-revision=2
更多:
除了Deployment,k8s还有 StatefulSet
、DaemonSet
、Job
等 类型资源。我们都称为 工作负载
。
有状态应用使用 StatefulSet
部署,无状态应用使用 Deployment
部署
https://kubernetes.io/zh/docs/concepts/workloads/controllers/