k8s-deployment-5

1.概述deployment

deployment作用和RC是相同的,都是保证k8s的高可用。deployment与RC的区别也很明显,deployment主要解决了RC的一个缺点。

RC缺点:RC在滚动升级后标签名会改变,这个时候service的标签记录的还是RC升级前的标签,因此升级后的pod容器将不能被外界访问。deployment就是来解决升级后不能被外界访问的缺点。

k8s删除已停止的容器 k8s删除deployment_回滚

2.创建deployment

2.1.创建deployment文件
#创建存储deployment目录
mkdir deploy
cd deploy

# 创建deployment文件
vim nginx-deploy.yaml
# 创建deployment
kubectl create -f nginx-deploy.yaml
apiVersion: extensions/v1beta1
kind: Deployment #资源类型
metadata:
  name: nginx-deployment  #资源名称
spec:
  replicas: 3  # 副本数
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: 172.16.8.111:5000/nginx:1.13
        ports:
        - containerPort: 80
2.2.查看deployment创建过程

deployment首先会创建一个rs 然后通过rs创建pod

k8s删除已停止的容器 k8s删除deployment_回滚_02

2.3.命令方式创建svc

deployment 创建好了之后,还需要svc实现pod容器被外界访问,下面就通过命令方式创建svc

# nginx-deployment:是创建deployment的名称
kubectl expose deployment nginx-deployment --port=80 --type=NodePort
  • 查看新创建的svc
  • 访问pod容器
# 任意node节点地址+端口号访问nginx
http://172.16.8.112:31047/

k8s删除已停止的容器 k8s删除deployment_nginx_03

3.deploayment 升级

deploayment升级版本直接编辑配置文件内容,然后保存。即可实现自动升级。

# nginx-deployment:需要升级的deployment名称。
kubectl edit deployment nginx-deployment

修改nginx版本号为1.15,保存文件后将自动升级。

k8s删除已停止的容器 k8s删除deployment_k8s删除已停止的容器_04

  • 查看所有资源
    deployment升级后会增加一个rs

4.deploayment 回滚

# nginx-deployment: 要回滚哪个deployment的名称
kubectl rollout undo deployment nginx-deployment
  • 查看deployment有哪些l历史版本
kubectl rollout history deployment nginx-deployment

下面图中显示2和3都是历史版本记录,但是后面版本号显示none。这和我们发布版本的方式有关系,如果希望看到每个记录的版本号,就看下命令方式发版。

k8s删除已停止的容器 k8s删除deployment_nginx_05

5.deployment命令方式发布

5.1.deployment命令发布
# nginx:是给deployment起的一个名称
# replicas=3:创建的副本数
# --record:显示历史版本记录
kubectl run nginx --image=172.16.8.111:5000/nginx:1.13 --replicas=3 --record
  • 查看历史版本记录
5.2.deployment升级
# deploy nginx:升级的deploy的名称是nginx
# nginx=:是下面图中pod的名称nginx
# 172.16.8.111:5000/nginx:1.15:镜像地址
kubectl set image deploy nginx nginx=172.16.8.111:5000/nginx:1.15

k8s删除已停止的容器 k8s删除deployment_nginx_06

  • 查看历史记录显示升级记录
5.3.回滚到指定版本
# --to-revision=1:指定回退到哪个版本
kubectl rollout undo deployment nginx --to-revision=1

k8s删除已停止的容器 k8s删除deployment_nginx_07