前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小公司快速k8s cicd部署方案心得

小公司快速k8s cicd部署方案心得

作者头像
怀朔
发布2022-05-29 11:47:51
1.2K0
发布2022-05-29 11:47:51
举报
文章被收录于专栏:运维入门时间

1

kubenetes产生背景

kubernetes —— 工业级的容器编排平台,简称K8S(“k-s之间有8个字母),因为有了这个编排工具之后,不仅在给运维大大提升了运维的效率,也给应用稳定性提供了有力的保障。解决了出现容器时 、容器 网络 及运维管理成本。

2

快速给公司应用赋能

2.1、自动调度(调度)

通过 k8s 中的调度器这个组件来实现的,当你提交了容器镜像之后,k8s 通过调度器来观察这个容器所需要的资源(eg:cup、mem),然后根据这些条件(过滤、筛选)将容器放置在集群中一个合适的节点上,完成自动部署!

并且它会通过调度机制混合 关键性应用和非关键性应用的工作负载于同一节点上,以便提高资源利用率。调度过程:等待调度 —— 正在调度 —— 调度完成!

2.2、自动恢复(自愈)

容器(探针方式livenessProbe、readinessProbe)故障后的自动重启、节点故障后重新调度容器!以及集群内节点的的健康状态检查!

livenessProbe:指示容器是否正在运行。如果存活探测失败,则 kubelet 会杀死容器,并且容器将受到其 重启策略 的影响。如果容器不提供存活探针,则默认状态为 Success。

readinessProbe:指示容器是否准备好服务请求。如果就绪探测失败,端点控制器将从与 Pod 匹配的所有 Service 的端点中删除该 Pod 的 IP 地址。初始延迟之前的就绪状态默认为 Failure。如果容器不提供就绪探针,则默认状态为 Success。

2.2.1 探针三种方式

使用exec方式检查

使用httpGet方式检查

使用tcpSocket方式检查

pod的重启策略restartpolicy:Always OnFailure Never

2.3、水平扩展(水平伸缩)

k8s有业务负载检查的功能,它会检测这个业务所承担的负载,如果这个业务对CPU 内存 ,利用率太高或响应时间太长 自定义扩容方式 ,它可以对这个业务进行自动HPA 扩容!!

另外引入一个新型概念,在云厂商的基础上,解决好资源池 、网络的问题,可以直接引入auto scale,定义好池子进行node节点扩容。注意购买机器付费模式。

2.4、服务发现 与 负载均衡

k8s 通过其附加组件之一的 kubeDNS(CoreDNS)为系统内置了服务发现功能!

它会为每个 service 配置 DNS 名称,并且允许集群内的客户端可以直接使用此名称发出访问请求!

而 service 则通过 iptables 或 ipvs 内建了负载均衡机制!

2.5、自动发布 和 回滚

k8s 支持 “灰度” 更新应用程序或配置信息。

它会监控 更新过程中应用程序的健康状态!以确保他不会在同一时刻杀死所有的实例,而此过程一旦有故障发生,则 立刻自动执行 回滚 操作!

回滚(RollBack) —— 指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为!

发布这个动作可以结合jenkins pipeline 或者 手工 组装yaml文件方式从而达到业务的预期效果。

2.6、密钥 和 配置管理

k8s的 ConfigMap 实现了 配置数据和 docker镜像解耦。需要时,仅对配置做出变更而无须重新构建 docker镜像。对于用户所依赖的一些敏感数据(eg:用户名、密码、连接配置中心),k8s 专门提供了 Secret对象 为其解耦!既便利了应用的快速开发和交付,又提高了安全保障!

2.7、存储编排

k8s 支持 pod对象 按需 自动挂载不同类型的存储系统。在有状态的情况下 挂载你需要的磁盘及方式,目前最好的方式 推荐无状态情况用k8s 有状态还是先私有化部署 尤其是数据库之类的 目前来看 问题还是相对比较多的。具体不展开 可以探讨

3

运作K8S的基础组件

3.1、镜像仓库

不同云厂商采用不同的云镜像仓库产品,自建harbor也是可以的。设计的时候主要提供2个想法,方法一、尽量使用内网pull push镜像 这样会加速部署的时间和网络问题 方法二、在全球化部署的过程中,尽量支持镜像可以多region 分发的

3.2、jenkins

自建或者k8s继承都可以,注意接入ldap之后的权限控制及最新的api使用

3.3、maven仓库

java项目需要

3.4、gitlab仓库

代码仓库需要,以group方式命令,以名字+时间+分支功能点命名分支名

3.5、dockerfile

注意选用合适的基础操作系统和dockerefile编写的点,减少容器大小问题

3.6、kubectl 客户端

注意选择跟自己k8s版本合适的kubectl 客户端

3.7、kubenetes 集群

推荐使用v1.18以上的版本,不同的云厂商有不同的问题 。自己做选择

对你没有看错 除了一个K8S的集群 和 镜像仓库,其他该有的基础架构在没有上K8S的时候 ,还是有的。所以上K8S大家不要觉得有多难。你们需要的只是一个懂K8S的人 和 跟大家能解释清楚的一个人而已。

4

CICD 构建流程图运作

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维入门时间 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档