Kubernetes pod 控制器 之 Deployment

1.基本概念

 

 新版本选择器必须要选择的

说白了就是,我匹配的你必须要有,多了不管,少了不干,要是匹配标签写两个,必须两个全全匹配

2.实验一

创建 1.deployment.yaml文件 

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
  app: myapp-deploy
 name: myapp-deploy
spec:
 replicas: 1
 selector:
  matchLabels:
   app: myapp-deploy
 template:
  metadata:
   labels:
    app: myapp-deploy
  spec:
   containers:
     - image: wangyanglinux/myapp:v1.0
       name: myapp
kubectl apply -f 1.deployment.yaml

不写replicas 默认值为1

kubectl get deployment [deployment名] -o yaml

将deployment的详细清单打印出来

修改副本数量

kubectl scale deployment [deployment名字] --replicas=10
kubectl scale deployment myapp-deploy --replicas=10

当前版本是1.0版

我们想升级为2.0

 

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
  app: myapp-deploy
 name: myapp-deploy
spec:
 replicas: 1
 selector:
  matchLabels:
   app: myapp-deploy
 template:
  metadata:
   labels:
    app: myapp-deploy
  spec:
   containers:
     - image: wangyanglinux/myapp:v2.0
       name: myapp

直接将版本改为2.0

kubectl apply -f 1.deployment.yaml

就更新了

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
  app: myapp-deploy
 name: myapp-deploy
spec:
 selector:
  matchLabels:
   app: myapp-deploy
 template:
  metadata:
   labels:
    app: myapp-deploy
  spec:
   containers:
     - image: wangyanglinux/myapp:v3.0
       name: myapp

 执行

kubectl replace -f 1.deployment.yaml

重新替换 就变成一个 了 

版本号 为 3.0

对比我现在的资源清单 与 我已经运行的资源清单运行出来的对象 发生了哪些变化 

kubectl diff -f 1.deployment.yaml

   

deployment 下面管控这 rs 由rs 去管理pod 当实现更新的时候 他会滚动更新 来逐渐替换下面的pod这就是 apply的原理

 金丝雀部署 黑白 蓝绿部署

​​​​左边这个rs 是不会删除的 如果需要回滚到上一个版本 它可以利用上一个版本的 rs 回滚到上一个版本

deployment 实际本质 就是 管理rs 滚动更新 或者滚动回滚 

如果 用RS 只能 全部重新创建 ,不能实现滚动回滚

 

1.kubectl create -f deployment.yaml --record

--record 基于这个一个deployment 资源清单 去实现我们创建  并记录我们当前的命令 在我回滚的时候  给到一个信息提示的作用 现在也可以不加

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
  app: deployment-demo
 name: deployment-demo
spec:
 replicas: 5
 selector:
  matchLabels:
   app: deployment-demo
 template:
  metadata:
   labels:
    app: deployment-demo
  spec:
   containers:
     - image: wangyanglinux/myapp:v1.0
       name: deployment-demo-container

我们改成 2.0版本

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
  app: deployment-demo
 name: deployment-demo
spec:
 replicas: 5
 selector:
  matchLabels:
   app: deployment-demo
 template:
  metadata:
   labels:
    app: deployment-demo
  spec:
   containers:
     - image: wangyanglinux/myapp:v2.0
       name: deployment-demo-container

 create 报错

 因为已经创建过了 不允许重复创建

资源对象已经有了 就不会去创建的

先基于此文件删除对应的deployment对象

kubectl delete -f 2.deployment.yaml

再看看apply命令

kubectl apply -f 2.deployment.yaml

 

 2.scale 改变pod 的副本数量 扩缩容

 3.autoscale


[root@k8s-master01 deployment]#  kubectl top pod
error: Metrics API not available
现在暂时没办法测

 查看pod的资源使用情况

kubectl top pod

4.set image

更新容器的镜像 

kubectl set image 类型/类型名 容器名=镜像名

 创建一个service 名字 会匹配 app= {service名} 的pod 做对应的负载均衡

 kubectl create svc clusterip deployment-demo --tcp=80:80

现在版本已经变成 25%~25% 

kubectl get deployment deployment-demo -o yaml

 

Recreate:适合可以容忍短暂停机的场景,更新速度快,但会有停机时间。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值