K8S笔记-Controller-Deployment(无状态)
myluzh 发布于 阅读:482 Kubernetes
0x01 概述和应用场景
1.什么是Controller?
*在集群上管理和运行容器的对象
2.Pod跟Controller的关系?
Pod是通过Controller来实现应用的运维(比如伸缩,滚动升级等)
Pod和Controller之间通过label标签建立关系(selector)
3.Deployment应用场景
部署无状态应用(应用场景:web服务 微服务)
管理Pod和ReplicaSet
*部署滚等升级等功能
0x02 发布应用
# 1.导出yaml文件
[root@master deployment]# kubectl create deployment web --image=nginx --dry-run=client -o yaml > web.yaml
# 2.通过yaml部署
[root@master deployment]# kubectl apply -f web.yaml
# 3.生成 对外暴露端口svc yaml
[root@master deployment]# kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml > web-svc.yaml
# 4.应用svc yaml
[root@master deployment]# kubectl apply -f web-svc.yaml
# 5.查看svc端口号
[root@master deployment]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
web1 NodePort 10.0.0.59 <none> 80:39098/TCP 3m31s
0x03 升级回滚和弹性伸缩
# 应用升级 -> 修改镜像tag
[root@master deployment]# kubectl set image deployment web nginx=nginx:1.15
deployment.apps/web image updated
# 查看升级状态
[root@master deployment]# kubectl rollout status deployment web
deployment "web" successfully rolled out
# 查看历史版本
[root@master deployment]# kubectl rollout history deployment web
deployment.apps/web
REVISION CHANGE-CAUSE
1 <none>
2 <none>
# 回滚到上一个版本
[root@master deployment]# kubectl rollout undo deployment web
deployment.apps/web rolled back
# 弹性伸缩 修改pod数量
[root@master deployment]# kubectl scale deployment web --replicas=3
deployment.apps/web scaled