Kubernetes核心技术之Controller

什么是Controller

Controllern不像Pod,是虚拟出来的概念,Controller是实际存在的,是k8s在集群上管理和运行容器的对象

Pod和Controller的关系

Pod是通过Controller实现应用的运维,比如伸缩、滚动升级等等

Pod和Controller是如何取得联系

Pod和Controller之间是通过labei标签建立联系

Kubernetes核心技术之Controller

Deployment控制器应用场景

  • 部署无状态应用

  • 管理Pod和副本ReplicaSet数量

  • 部署,滚动升级等功能

应用场景:web服务、微服务部署等

yaml文件字段说明

 比较全面的yaml的文件字段说明

Deployment控制器部署应用

第一步导出yaml文件

  • kubectl create deployment web1 --image=nginx --dry-run -o yaml > web1.yaml

然后我们会得到一个web1.yaml文件如下所示

Kubernetes核心技术之Controller

第二部使用yaml部署应用

  • kubectl apply -f web1.yaml

然后我们一直等待,等待他运行成功

  • Kubernetes核心技术之Controller

第三部对外发布(暴露端口)

  • kubectl expose deployment web1 --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml > web1Expose.yaml

然后我们可以看到一个部署文件:web1Expose.yaml

我们将其部署,将Nginx应用进行发布,进行端口暴露

  • kubectl apply -f web1Expose.yaml

  • kubectl get pods,svc

  • Kubernetes核心技术之Controller

  • 这个时候已经发布成功,我们可以通过三个节点,只要是30339端口即可访问Nginx服务

应用升级&回滚

下面我们初始化一下环境,将刚刚部署的pod删掉,先删pod ,再删Deployment

  • kubectl get pods   

    • kubectl delete pod podName

  • kubectl get deployments

    • kubectl delete deployment depName

  • 修改刚刚我们导出的web1.yaml文件

    • 副本数量修正为2

    • Nginx的镜像指定版本为1.14

Kubernetes核心技术之Controller

  • 使用yaml部署应用

    • kubectl apply -f web1.yaml

    • 然后我们去诸多node节点查看相应的镜像版本信息

      • Kubernetes核心技术之Controller

应用版本升级(过程分析)

  • 从刚刚我们的操作中,我们部署了两台版本为1.14的Nginx,现在我们要对其进行升级到1.15

  • kubectl set image deployment web1 nginx=nginx:1.15

    • Kubernetes核心技术之Controller

  • 我们可以查看升级状态

    • kubectl rollout status deployment 应用名称

      • Kubernetes核心技术之Controller

  • 过程分析:升级过程中为什么对外暴露的服务不会停止

Kubernetes核心技术之Controller

应用版本回滚

  • 就是刚刚查看是否升级成功的命名把status改成history即可查看所有版本信息

    • kubectl rollout history deployment web1.

      • Kubernetes核心技术之Controller

  • 版本回滚到上一个版本

    • kubectl rollout undo deployment web1

    • Kubernetes核心技术之Controller

  • 版本回滚到指定版本

    • kubectl rollout undo deployment web1 --to-reversion=2

    • Kubernetes核心技术之Controller

应用的弹性伸缩

就使用我们刚刚部署的Nginx做列子,我们对其副本伸缩

  • kubectl scale deployment web1 --replicas=10

    • Kubernetes核心技术之Controller 

.

 

 

Kubernetes核心技术之Controller

上一篇:Netty源码分析


下一篇:.net core 发布时 IIS 站点 提示:文件名 web.config 错误:配置文件的 xml 格式不正确