一个Nginx应用生命周期(K8S)

一个Nginx应用生命周期:

我会从应用的一个生命周期来介绍最简单的k8s实战操作。

创建:

指定deployment名字为web
kubectl create deployment web --image=nginx 
查看pod状态
[root@master ~]# kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-65f88748fd-bnhg5   1/1     Running   1          15h
web-5bc9bd5b8d-fk6dh     1/1     Running   0          5m56s
# kubectl get deploy
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   1/1     1            1           15h
web     1/1     1            1           6m41s

发布:

暴露端口:

web相关的创建完了,接下来要暴露端口,用expose来暴露

# kubectl expose deployment web --port=80 --target-port=80 --name=nginx-service --type=NodePort

指定类型名称是deployment,暴露资源为web,内网端口为80,容器内端口为80 ,协议默认TCP,名字起名字为nginx-service,类型指定为NodePod。

查看一下pod和service
[root@master ~]# kubectl get pods,svc
NAME                         READY   STATUS    RESTARTS   AGE

pod/web-5bc9bd5b8d-fk6dh     1/1     Running   0          10m

NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
service/kubernetes      ClusterIP   10.1.0.1       <none>        443/TCP        17h

service/nginx-service   NodePort    10.1.24.179    <none>        80:31334/TCP   7m34s

NodePort是访问NodeIP+随机端口的模式

访问:

31334端口

在这里插入图片描述

当然,也可以使用任意node主机的ip访问。

更新

如果我们有新的应用变化,要更新应用,我们要进行升级发布。k8s也提供了相关的机制。是基于镜像级别的更新迭代。

查看当前的镜像版本

首先,对于我们这次模拟来说,先看看现在使用的Nginx版本是什么

#kubectl describe pod web-5bc9bd5b8d-fk6dh

C:\Users\admin\AppData\Roaming\Typora\typora-user-images\1561018926095.png

获得信息:这个镜像是nginx,但是版本没有表明,也没有关系,我们就当他是某一个版本

查看历史版本
[root@master ~]# kubectl rollout history deployment/web
deployment.extensions/web 
REVISION  CHANGE-CAUSE
1         <none>

我们可以看出只有一个版本。

更新应用

从浏览器的头信息可以指定,现在nginx是1.17版本。

在这里插入图片描述

方法1、编辑创建pod所管理的yaml文件
kubectl edit deployment/web

找到镜像相关的部分,修改它,保存即可。

(除了在命令行,在dashboard里面也是通过这种方式更新)

方法2、使用单条命令

指定deployment web 的nginx镜像的版本更换为1.12版本。(因为我们默认创建的是最新版本。)

kubectl set image deployment web nginx=nginx:1.12

再一次查看版本记录:

# kubectl rollout history deployment/web
deployment.extensions/web 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>

有两个记录了。

验证:

重新访问页面。发现头信息标识,版本已经变成1.12了

在这里插入图片描述

回滚

假如。发现现在的应用版本出问题,可以回滚到上一个版本。或者以前指定的版本。

有以下两条指令:

回滚到上一个版本
#kubectl rollout undo deployment/web 

deployment.extensions/web rolled back
回滚到指定的某一个版本
#kubectl rollout history deployment/web --revision=1
验证:

重新访问,发现以及回滚到之前的版本了。

在这里插入图片描述

删除

发现应用以及不需要了,可以删除掉。分为两个步骤:

删除deployment
kubectl delete deploy/web
删除service
kubectl delete svc/nginx-service
查看结果
[root@master ~]# kubectl get deploy,svc
NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/nginx   1/1     1            1           16h

NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.1.0.1       <none>        443/TCP        18h
service/nginx        NodePort    10.1.233.243   <none>        80:31239/TCP   16h

以及不存在我们部署的web应用,也无法访问了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值