k8s笔记2--基于k8s的服务开发、部署、维护介绍

随着 k8s 的快速发展,越来越多的企业开始拥抱云原生,企业服务上云已经成为一种趋势。在这种情况下,服务的开发、部署、维护也随之发生了些许变化,本文主要对这种变化加以介绍。

1 基础流程

传统应用的开发基本为:应用开发|测试->应用部署到物理->维护(发新版本)。
k8s环境下的应用开发更新为:应用开发|测试->编写Dockerfile|打包发布到dockerhub->通过原生deployment或企业平台部署服务->维护(更新deployment或者企业维护流程更新应用)。

2 服务开发

  1. 业务开发人员在本地开发调试、测试服务
  2. 编写Dockerfile打包应用为镜像,
  3. 发布到相应的dockerhub中(考虑到安全原因,企业一般会自建dockerhub)。

3 服务部署

一般而言,服务最好部署为2路(以下称为service-A,service-B),以便于实现不停服更新|维护。

在条件苛刻的情况下,可能只有一套k8s,此时服务部署方式:
分别编写service-A 和 service-B的k8s deployment,并配置好服务的启动命令参数 和 所需cpu、内存等资源,以及日志输出方式;
service-A 和 service-B 部署成功后,再部署一个 service-all的 service,该service 主要用于匹配service-A 和 service-B 的pod,并确定内部端口和外部端口,提供一个外部可见的ip:port。

若企业自身有人力资源,可以开发一套自己的服务部署平台,此时服务部署方式:
用户选择k8s集群和服务的namespace(下文简称ns);
选择服务标签、子网,填写服务名称、cpu资源、内存资源、容器命令、环境变量等信息,确定后即可部署服务;
部署时候可以进一步确定服务是否需要内外网LB、内外网域名,设置LB端口和代理模式(TCP、HTTP、HTTPS等),创建服务维护流程。
创建成功后,提供内外网域名、端口 和 维护流程给应用开发人员即可。

4 服务维护

服务维护一般指的是对服务的参数、环境变量调整,发布新版本;维护的时候一般通过AB服交替维护,从而实现不停服维护。

4.1 常见服务维护流程

service-A 维护:
1)A 服务断开LB
2)A 服务sleep 60s(可以根据实际情况设置,该操作可以确保A上已有的请求正常执行完成)
3)A 服务容器副本缩容为1
4)A 服务镜像更新
5)A 服务环境变量更新
6)A 服务恢复副本为 n
7)A 服务恢复LB
service-B 维护:
1)B 服务断开LB
2)B 服务sleep 60s(可以根据实际情况设置)
3)B 服务容器副本缩容为1
4)B 服务镜像更新
5)B 服务环境变量更新
6)B 服务恢复副本为 n
7)B 服务恢复LB

4.2 不停服维护说明

与 3 服务部署对应,此处分两种情况介绍服务维护流程。
1)条件苛刻的情况下
条件苛刻时候可能没有专门的域名、LB配置管理工具,也没有一键维护服务生成API;因此需要自己通过k8s 的 service 实现安全不停服更新,简单来说就是维护A服务的时候不匹配到该服务,维护结束后恢复对其匹配,A服务维护完成后再以同样方法维护B服务。

此处以 p1项目的 flask-api 为案例,截取核心参数 labels 加以说明。
serviceName 配置(第一路):

application:
  dnsPolicy: ClusterFirst
  labels:
    project: p1
    app_label_a: flask-api-deployment-a
    app_label: flask-api-deployment

serviceName-1 配置(第二路):

application:
  dnsPolicy: ClusterFirst
  labels:
    project: p1
    app_label_b: flask-api-deployment-b
    app_label: flask-api-deployment

serviceName-all 配置(该service提供对外访问接口):
该配置下会同时匹配到 第一路 和 第二路。

k8sService:
  selector:
    project: p1
    app_label: flask-api-deployment

断开第一路时 serviceName-all 配置:

k8sService:
  selector:
    project: p1
    app_label_b: flask-api-deployment-b
    app_label: flask-api-deployment

断开第二路时 serviceName-all 配置:

k8sService:
  selector:
    project: p1
    app_label_a: flask-api-deployment-a
    app_label: flask-api-deployment

2)具备流程维护平台的情况下
直接在维护流程平台上封装 断开LB,休眠,容器副本更新,镜像更新,环境变量更新,恢复LB等操作,每次只需要填写服务的参数即可快速新建一个维护流程(也可以在服务部署的末尾直接用API生成)。

5 说明

本文对k8s环境下的服务开发、部署、维护加以说明,不针对具体k8s案例,也不针对具体工具平台。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昕光xg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值