Myluzh Blog

Strive to become a dream architect.

K8S笔记-Controller-Deployment(无状态)

发布时间: 2023-9-13 文章作者: myluzh 分类名称: 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

标签: k8s controller deployment

发表评论