Deployment
控制Pod,使Pod拥有多副本、自愈、扩缩容等能力。
# 两种创建Pod的方式
kubectl run mynginx --image=nginx
kubectl create deployment mytomcat --image=tomcat:8.5.68
# 删除部署方式
kubectl get deploy
kubectl delete deploy mytomcat
多副本能力
kubectl create deployment my-dep --image=nginx --replicas=3
不同的副本可能会部署到不同节点。
通过资源配置文件方式创建deployment:
apiVersion: 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
扩缩容能力
# 扩容
kubectl scale deploy/my-dep --replicas=5
# 缩容
kubectl scale deploy/my-dep --replicas=3
# 编辑yaml文件实现扩缩容
kubectl edit deploy my-dep
自愈能力&故障转移
使用deployment部署的应用,不怕应用崩溃和机器宕机。
如果应用崩溃,会重新启动一个Pod,即自愈能力,可以用docker stop
测试。
如果发生宕机,Pod会转移到其他机器上去运行,即故障转移,可以关闭某个节点测试。
# 实时监控Pod状态
kubectl get pod -w
滚动更新
kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record
不停机更新,直到全部更换为新版本:
版本回退
# 历史记录
kubectl rollout history deployment/my-dep
# 查看某个历史详情
kubectl rollout history deployment/my-dep --reversion=2
# 回滚(回到上次)
kubectl rollout undo deployment/my-dep
kubectl rollout undo deployment/my-dep --to-reversion=2
# 回滚(回到指定版本)
总结
除了Deployment,k8s还有StatefulSet、DaemonSet、Job等类型资源,我们都称为工作负载。