云原生架构思想入门

文章探讨了云原生架构的发展,从Docker的容器化技术,到Kubernetes(K8s)的集群管理和服务编排,再到KubeSphere的可视化操作平台,最后介绍了ServiceMesh如Istio如何解决服务治理的问题。这些技术简化了服务部署和管理,但也带来了复杂性,尤其是服务间的通信和多语言栈支持。
摘要由CSDN通过智能技术生成

云原生架构架构比起微服务架构,更专注的是服务部署层面。
从docker-->k8s-->kubesphere-->Service Mesh。

docker 基本概念:
1 容器:镜像运行时的实体 容器就是将软件打包成标准化单元,以用于开发、交付和部署。
2 镜像(Image):一个特殊的文件系统。
3 仓库(Repository):集中存放镜像文件的地方。
4 数据卷:映射容器存储的数据。

docker 基本语法:
1 docker images 查看全部镜像。
2 docker ps [-qa]。 -a:查看全部的容器,包括没有运行的 -q:只查看容器的标识id。
3 docker logs -f 容器id  查看容器的日志。
4 docker build dockerfile文件  构建镜像文件并运行。
5 docker-compose up -d 管理容器。

docker 如何部署服务
1 打包上传jar包。
2 制作镜像 build dockerfile。
3 推送镜像 push。
4 集群应用部署 dockercompose。

docker 优缺点:
1 docker资源利用率更高:开销更小,启动速度更快。
2 降低部署中间件的学习成本。
3 避免环境(开发 预发布 生产)因素导致的不可预期问题。
4 缺点:服务多了不便于管理。
5 缺点:部署繁琐。

k8s 基本概念: 
1 k8s:在docker的基础上做了封装,属于编排工具,便于管理多服务。
2 pod:k8s最小工作单位(即一组容器) artifact hub。
3 kubeadm:用来初始化集群的指令。
4 kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
5 kubectl:用来与集群通信的命令行工具。
6 dashboard:控制台界面。
7 使用工作负载创建pod,如:
7.1: deployment无状态应用部署,比如微服务,提供多副本等功能。
7.2: stateset 有状态应用部署,比如redis,提供稳定的存储,网络等功能。
7.3: daemonset 守护型应用部署,比如日志收集组件,每个机器都运行一份。
7.4: job,cronjob 定时任务部署,比如垃圾清理组件,可以在指定时间运行。
8 service pod的服务发现与负载均衡 根据标签暴露部署,每个pod都存在一个唯一标签。通过暴露的端口转发。
8.1: 通过clusterip暴露,只能在集群内部访问。
8.2: 通过nodeport暴露,集群外网也可以访问。
9 ingress 属于service的入库,service属于pod的入口,等同于ng转发到service。
9.1 限制流量。
9.2 统一service的IP端口调度。
10 挂载(一般挂载在独立的文件服务器 如nfs)。
10.1 挂载目录用pv pvc(可以是动态数据存储,和静态数据存储,静态需要提前配置好pc池)。
10.2 挂载配置文件用configmap。
10.3 挂载密文用secrets。
11 metrics-service:用于监控系统指标(如cpu 内存)kubectl top nodes,kubectl top pods。


k8s 基本语法:
1 kubectl run nginx --image=nginx --port=80 创建 Pod。
2 kubectl get pod --all-namespaces和kubectl get pods -A  查看所有ns空间的pod。
3 kubectl apply -f demo-pod.yaml 创建Pod资源。
4 kubectl apply -f demo-deployment.yaml  创建Deployment资源。
5 kubectl apply -f demo-service.yaml  创建Service资源。
6 kubectl apply -f demo-ingress.yaml 创建ingress资源。
7 kubectl apply -f demo-pvc.yaml 等。
apply是覆盖 create是创建新的。

ks 如何部署服务,基于docker。同样需要以下操作。
1 打包上传jar包。
2 制作镜像 build dockerfile。
3 推送镜像 push。
4 集群应用部署 kubectl apply -f demo-*.yaml。

k8s优缺点:
1 便于管理服务。属于服务编排工具。
2 针对服务可以治愈,弹性伸缩,服务的自动发现和负载均衡,滚动升级和一键回滚。
3 缺点:学习部署指令繁杂。
4 缺点:一键自动化部署极繁琐。


kubesphere基本概念:
kubesphere简介:在k8s的基础上做了封装。
用k8s部署一个服务需要写服务的**.yml文件,并运行。k8s的界面无法避免编写部署文件命令。服务多就显得繁杂。
用kubesphere则可以直接在kubesphere界面上操作部署。简化了编写**.yml命令。


kubesphere界面简介:
1 多租户系统管理。存在多个企业空间,一个企业空间可以创建多个项目。便于登陆角色管理。
2 部署应用的三要素:
2.1 选取工作负载。
2.2 数据存储(pv pvc)和配置存储(configmap)。
2.3 应用如何访问 service,暴露内网。
3 应用商店:类似于一键下载安装部署完成。
4 devops工程部署:根据模板配置,自动化部署 构建 测试 合并代码 持续交付 部署。
(通过界面的方式,省去了学习pipeline的语法)
4.1 第一步:配置git地址以及账号密码,拉取代码。
4.2 第二步:配置maven私服地址拉取jar包 并编译。
(以前的做法是要学习jenkins的pipeline流水线语法。现在用工具直接配置就可以拉取代码)
4.3 第三步:dockerfile会自动生成。指定项目打包目录,进入dockerfile文件目录。构建镜像。
4.4 第四步:推送镜像到远程仓库。
4.5 第五步:部署服务
4.6 第六步:发送邮件以及报警信息。
4.7 第七步:配置webhook,实现推送代码到git,一键部署。

持续部署流程:
开发者-->idea/eclipse-->github/码云-->build(maven,jenkins)-->
static code Analysis(sonarqube)-->junit test(Junit)-->
build report/artifact(nexus)-->build and push image(docker)-->
deploy service/ingress(k8s)-->monitor(监控到bug通知) and operate-->开发者

kubesphere优缺点:
1 基于k8s降低的部署的学习成本。
2 一键自动化部署。
3 缺点:服务间通信异常复杂。
4 缺点:多语言栈,每种语言都需要实现,服务注册与发现、服务路由、
负载均衡、服务鉴权、服务降级、服务限流、网络传输等功能,复杂度
大、成本投入高、稳定健壮性隐患多。


Service Mesh基本概念:
服务网格(Service Mesh)作为服务治理的基础设施层,可以解决kubesphere问题
Service Mesh是一种架构思想,较为典型的组件可以选择Istio。

Istio核心思想是将服务治理的逻辑抽象成公共库。
以Java为例:
当每个服务都需要解决这些问题时,通常会引入spring cloud相关组件。然而引入成本会
很大,特别是不同语言之间都要引入各自的一套解决方案。过于繁琐。Istio的出现,是为
了解决这一问题,利用k8s整合Istio的架构,将服务注册、服务发现、负载均衡、服务间
通讯、分布式调用链追踪、灰度发布等功能,通过部署的方式剥离出来。使开发人员只关
注于业务功能的开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程治铭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值