k8s-deployment-5
1.概述deployment
deployment作用和RC是相同的,都是保证k8s的高可用。deployment与RC的区别也很明显,deployment主要解决了RC的一个缺点。
RC缺点:RC在滚动升级后标签名会改变,这个时候service的标签记录的还是RC升级前的标签,因此升级后的pod容器将不能被外界访问。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
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/
3.deploayment 升级
deploayment升级版本直接编辑配置文件内容,然后保存。即可实现自动升级。
# nginx-deployment:需要升级的deployment名称。
kubectl edit deployment nginx-deployment
修改nginx版本号为1.15,保存文件后将自动升级。
- 查看所有资源
deployment升级后会增加一个rs
4.deploayment 回滚
# nginx-deployment: 要回滚哪个deployment的名称
kubectl rollout undo deployment nginx-deployment
- 查看deployment有哪些l历史版本
kubectl rollout history deployment nginx-deployment
下面图中显示2和3都是历史版本记录,但是后面版本号显示none。这和我们发布版本的方式有关系,如果希望看到每个记录的版本号,就看下命令方式发版。
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
- 查看历史记录显示升级记录
5.3.回滚到指定版本
# --to-revision=1:指定回退到哪个版本
kubectl rollout undo deployment nginx --to-revision=1