k8s常用工作负载
工作负载控制器(Workload Controllers)时k8s的一个抽象的概念,用于更高级层次对象,部署和管理Pod,常用于工作负载控制器:
Deployment:无状态应用部署
StatefulSet:有状态应用部署
DaemonSet:确保所有node运行同一个pod
job:一次性任务
Cronjob:定时任务
控制器的作用:
管理pod对象
使用标签与pod关联
控制器实现了pod的运维,列如滚动更新、伸缩、副本管理、维护pod状态等。
Deployment的功能:
管理pod和ReplicaSet
具体由上线部署、副本设定、滚动升级、回滚等功能
提供声明时更新、列如只更新的一个新的lmage
流程:
应用程序—部署—升级—回滚—下线
Deployment部署
[root@master manifest]# cat test2.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
namespace: default
spec:
replicas: 5
selector:
matchLabels:
app: apache
template:
metadata:
labels:
app: apache
spec:
containers:
- image: sktystwd/apache:v0.1
imagePullPolicy: IfNotPresent
name: httpd
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
web-6bcd5cffd7-8jfjx 1/1 Running 0 6s
web-6bcd5cffd7-gmmqq 1/1 Running 0 6s
web-6bcd5cffd7-lnfl4 1/1 Running 0 6s
web-6bcd5cffd7-x67cb 1/1 Running 0 6s
web-6bcd5cffd7-zh869 1/1 Running 0 6s
Deployment滚动升级
[root@master manifest]# cat test2.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
namespace: default
spec:
replicas: 5
strategy:
rollingUpdate:
maxSurge: 30%
maxUnavailable: 30%
type: RollingUpdate
selector:
matchLabels:
app: apache
template:
metadata:
labels:
app: apache
spec:
containers:
- image: sktystwd/apache:v0.2
imagePullPolicy: IfNotPresent
name: httpd
maxSurge:滚动更新过程中最大pod副本数,确保在更新时启动的pod数量比期望(replicas)pod数量最大多出25%
maxUnavailable:滚动更新过程中最大不可