Centos 7 k8s Deployment新副本控制器
一、概念
Kubernetes提供了一种更加简单的更新RC和Pod的机制,叫做Deployment。通过在Deployment中描述你所期望的集群状态,Deployment Controller会将在现在的集群状态在一个可控的速度下逐步更新成你所期望的集群状态,Deployment 主要职责同样是为了保证pod的数量和健康,90%的功能与Replication Controller完全一样,可以看做新一代的Replication Controller。但是,它又具备了Replication Controller之外的新特性。
Replication Controller全部功能:Deployment继承了上面描述的Replication Controller全部功能。
事件和状态查看:可以查看Deployment的升级详细进度和状态。
回滚:档升级pod镜像或者相关参数的时候发现问题,可以使用回滚操作回滚带上一个稳定的版本或者指定的版本。
版本记录:每一次对Deployment的操作,都能保存下来,给予后续可能的回滚使用。
暂停和启动:对于每一次升级,都能够随时暂停和启动。
多种升级方案:Recreate-----删除所有已存在的pod,重新创建新的。RollingUpdate----滚动升级,逐步替换的策略,同事滚动升级时,支持更多的附加参数,例如设置最大不可用pod数量,最小升级间隔时间等等。
二、配置实例
1、修改配置命令
[root@k8s-master ~]# vim nginx-deployment.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 template: metadata: labels: app: web spec: containers: - name: web image: 192.168.125.130:5000/nginx:1.19 ports: - containerPort: 80
2、基于配置文件创建容器
[root@k8s-master ~]# kubectl create -f nginx-deployment.yaml [root@k8s-master ~]# kubectl get all NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deploy/nginx-deployment 3 3 3 2 17s NAME DESIRED CURRENT READY AGE rc/nginx2 3 3 3 18h NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes 10.254.0.1 <none> 443/TCP 3d NAME DESIRED CURRENT READY AGE rs/nginx-deployment-3637952344 3 3 2 16s NAME READY STATUS RESTARTS AGE po/nginx 1/1 Running 1 21h po/nginx-deployment-3637952344-50pgk 0/1 ContainerCreating 0 16s po/nginx-deployment-3637952344-js979 1/1 Running 0 16s po/nginx-deployment-3637952344-ltwfm 1/1 Running 0 16s po/nginx2-516gh 1/1 Running 1 18h po/nginx2-p56cf 1/1 Running 1 18h po/nginx2-v6t11 1/1 Running 1 18h
3、升级版本
[root@k8s-master ~]# kubectl edit nginx-deployment 修改配置文件,所有的配置文件都存放在etcd里面
随即就会创建基于1.13版本的容器
4、记录版本
[root@k8s-master ~]# kubectl delete deployment nginx-deployment [root@k8s-master ~]# kubectl create -f nginx-deployment.yaml --record 创建容器,加上描述参数
[root@k8s-master ~]# kubectl get rs -o wide 查看容器名称,标签
5、降级版本
[root@k8s-master ~]# kubectl set image deploy nginx-deployment web=192.168.125.130:5000/nginx:1.13 [root@k8s-master ~]# kubectl get all NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deploy/nginx-deployment 3 3 3 3 6m NAME DESIRED CURRENT READY AGE rc/nginx2 3 3 3 18h NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes 10.254.0.1 <none> 443/TCP 3d NAME DESIRED CURRENT READY AGE rs/nginx-deployment-3150364498 3 3 3 31s rs/nginx-deployment-3637952344 0 0 0 6m NAME READY STATUS RESTARTS AGE po/nginx 1/1 Running 1 22h po/nginx-deployment-3150364498-79c79 1/1 Running 0 29s po/nginx-deployment-3150364498-bfkmj 1/1 Running 0 31s po/nginx-deployment-3150364498-k72dn 1/1 Running 0 31s po/nginx2-516gh 1/1 Running 1 18h po/nginx2-p56cf 1/1 Running 1 18h po/nginx2-v6t11 1/1 Running 1 18h
6、回滚版本
[root@k8s-master ~]# kubectl rollout history deployment nginx-deployment 查看历史版本 deployments "nginx-deployment" REVISION CHANGE-CAUSE 1 kubectl create -f nginx-deployment.yaml --record 2 kubectl set image deploy nginx-deployment web=192.168.125.130:5000/nginx:1.13 [root@k8s-master ~]# kubectl rollout undo deployment nginx-deployment --to-revision=1 回滚到历史1的版本 deployment "nginx-deployment" rolled back [root@k8s-master ~]#
7、简单快捷命令
[root@k8s-master ~]# kubectl delete -f nginx-deployment.yaml 删除容器
[root@k8s-master ~]# kubectl run nginx --image=192.168.125.130:5000/nginx:1.19 --replicas=5 --record 命令创建容器
[root@k8s-master ~]# kubectl set image deploy nginx nginx=192.168.125.130:5000/nginx:1.13 修改容器版本
8、几种升级、降级的操作
三、pha组件安装
pha可以管理Deployment,也可以管理RC,是副本之上的资源。
[root@k8s-master ~]# kubectl autoscale deployment nginx --max=8 --min=2 --cpu-percent=80