【kubernetes笔记】k8s_controller控制器(05)

Page content

这一篇整理了控制器controller(deployment)相关的内容。

1.控制器controller

集群中管理和运行容器的对象。

2.控制器controller和Pod关系

  • Pod是通过Controller实现应用的运维(伸缩,滚动升级等等…)
  • Pod和Controller之间通过Label标签建立联系(selector)

3.deployment的应用场景

  • 部署无状态应用
  • 管理Pod和ReplicaSet
  • 部署,滚动升级等功能
  • 应用在web服务,微服务等等…

4.使用deployment部署应用yaml

apiVersion: v1 
kind: Pod  
metadata:  
  name: test
spec: 
  replicas: 1
  selector:
    matchLables: 
      app: web
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: web
  ... ...

第一步: 导出yaml文件

$kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml

第二步: 使用yaml部署应用

$kubectl create apply -f web.yaml

deployment.apps/web created

第三步: 对外发布(暴露对外端口号)

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

$kubectl apply -f web1.yaml

5.应用升级回滚和弹性伸缩

5.1 应用升级

$kubectl set image deployment web nginx=nginx:1.15
deployment.apps/web image updated

#查看升级状态
$kubectl rollout status deployment web
deployment "web" successfully rolled out


#查看升级版本
$kubectl rollout history deployment web

5.2 回滚

回滚到上一个版本

$kubectl rollout undo deployment web

回滚都指定版本

$kubectl rollout undo deployment web --to-revision=2

5.3 弹性伸缩

$kubectl scale deployment web --replicas=10

欢迎大家的意见和交流

email: li_mingxie@163.com