保证pod高可用的方式,解决rc的痛点:
如果想要升级rc,rc升级成功后,rc标签变为新的label2,和service的label不匹配了,导致service下没有pod。
这时候需要手动改svc的配置文件
kubectl edit svc ${svcname}
所以rc在版本升级的时候会造成的问题的是他的svc短时间无法访问,deployment可以解决这个文件。
删除rc的时候会自动删除pod自由。
deployment yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: xxxx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: xxxx
spec:
containers:
- name: nginx
image: dockerhubaddr/xxxx:versionnum
ports:
- containerPort: 80
deployment不会像rc一样起pod,deployment会起一个rs,rs再去起pod。
创建service
kubectl expose deployment ${deploymentname} --port=80 --type=NodePort
# 查看所有资源
kubectl get all -o wide
# 修改deployment
kubectl edit deployment ${deploymentname}
修改deployment后再查看所有自由信息,发现rs有改变
# deployment回滚
kubectl rollout undo deployment ${deploymentname}
# 查看deployment历史版本
kubectl rollout history deployment ${deploymentname}
# 如果想看到每个历史版本的镜像版本,就在发布的时候使用命令行
kubectl run ${deploymentname} --image=addr/xxxx:versionnum --replicas=3 --record
# 升级发布新版本
kubectl set image deploy ${deploymentname} ${容器名字}=镜像版本
# 如何查询容器名字,使用
kubectl get all -o wide
# 回滚到指定版本
kubectl rollout undo deployment ${deploymentname} --to-reversion=${版本号} # 一般是数字1,2,3等