当前位置: 首页 > Linux

Centos7k8s1.18.2+istio1.8.2

时间:2023-04-06 22:41:37 Linux

服务网格简介服务网格(ServiceMesh)是为解决微服务的通信和治理而出现的一种架构模式。服务网格将服务间通信和相关管理控制功能从业务程序下移到基础设施层,从而将业务逻辑和服务通信这两个关注点完全分离。采用服务网格后,应用开发者只需要关注并实现应用业务逻辑即可。服务之间的通信,包括服务发现、通信可靠性、通信安全、服务路由等,由服务网格层处理,对应用程序是透明的。让我们回顾一下微服务架构的发展过程。在服务网格出现之前,我们在微服务应用进程中处理服务通信逻辑,包括服务发现、熔断、重试、超时等逻辑,如下图所示:因为通信代理进程和应用进程是部署在一起,形象的部署方式叫做“sidecar”(三轮摩托车的sidecar)。应用程序之间的所有流量都需要通过代理。由于代理以sidecar的方式与应用部署在同一台主机上,因此应用与代理之间的通信被认为是可靠的。然后,代理负责查找目标服务以及通信可靠性和安全问题。当部署了大量的服务时,随着服务部署的sidecar代理之间的连接,会形成如下图所示的网格,称为服务网格(ServiceMesh),所以下面定义ServiceMesh获得。服务网格是处理服务之间通信的基础设施层。云原生应用具有复杂的服务拓扑,服务网格确保请求可以可靠地穿梭于这些拓扑中。在实践中,服务网格通常由一系列随应用程序部署的轻量级网络代理组成,但应用程序不需要知道它们的存在。一、下载Istio[root@k8s-master~]#curl-Lhttps://istio.io/downloadIstio|sh-wgethttps://github.com/istio/istio/releases/download/1.8.0/istio-1.8.0-linux-amd64.tar.gz[root@k8s-master~]#tar-zxvfistio-1.8.0-linux-amd64.tar.gz-C/usr/local/[root@k8s-master~]#vim/etc/profile添加:exportPATH=$PATH:/usr/local/istio-1.8.0/bin/[root@k8s-master~]#source/etc/profile二.安装istio[root@master49templates]#kubectlgetapiservices-nkube-system|grepmetrics-serverv1beta1.metrics.k8s.iokube-system/metrics-serverTrue13m[root@master49templates]#kubectltopnodesNAMECPU(cores)CPU%内存(字节)内存%master49366m9%1728Mi14%master50376m9%2359Mi19%master56344m8%2049Mi17%node522879m11%65938Mi31%node531226m5%31879Mitroot]49%[#kubectl创建enamespaceistio-system[root@master49tmp]#istioctlxprecheckIstio已经安装在命名空间“istio-system”中。跳过预检查。使用'istioctlverify-install'确认。使用'istioctlupgrade'升级或'istioctlinstall--setrevision='安装另一个控制平面。[root@master49tmp]#istioctlmanifestgenerate--setprofile=demo>/tmp/generated-manifest.yaml[root@master49tmp]#kubectlapply-y/tmp/generated-manifest.yaml3.显示可用配置文件列表[root@master49templates]#istioctlprofilelistIstio配置文件:emptyminimalpreviewremotedefaultdemominimal:使用Istio的流量管理功能所需的最小组件集remote:用于配置共享控制平面的多集群网格。sds:类似于默认的配置文件,同时也开启了Istio的SDS(SecretDiscoveryService)。此配置文件带有默认启用的附加身份验证功能(严格相互TLS)。demo:旨在演示具有适度资源需求的Istio功能的配置。适用于运行Bookinfo应用程序和相关任务。这是随快速入门说明一起安装的配置,但是,如果您想探索更高级的任务,您可以稍后自定义配置以启用其他功能。此配置文件启用高级跟踪和访问日志记录,因此不适合性能测试。default:根据IstioControlPlaneAPI的默认设置启用组件(推荐用于生产部署)。在系统上安装istio[root@master49tmp]#istioctlinstall--setprofile=demo-y检测到您的集群不支持第三方JWT认证。回退到不太安全的第一方JWT。有关详细信息,请参阅https://istio.io/docs/ops/best-practices/security/#configure-third-party-service-account-tokens。?安装Istio核心?安装Istiod?安装入口网关?安装出口网关?安装完成【root@master49模板】#kubectlgetpod-nistio-system-owideNAMEREADYSTATUSRESTARTSAGEIPNODENOMINATEDNODEREADINESSGATESistio-egressgateway-5589c5994-6hv2d1/1Running04h13m10.17.38.252node53<无><无>istio-ingressgateway-5848876c99-6v6491/1Running04h13m10.17.38.204node53istiod-7db8c5c846-f4sml1/1Running04h13m10.17.38.200node53注意:修改istio-ingressgateway的服务[滚]@master49tmp]#kubectlpatchserviceistio-ingressgateway-nistio-system-p'{"spec":{"type":"NodePort"}}'service/istio-ingressgatewaypatchedtest###发布前[root@master49tmp]#kubectlgetpod|grepsaasdevpipeline-saas-back-profile-a-6cd5774767-jkzhz1/1运行045mlogstash-saas-back-profile-a-d85c497bb-w7v7g1/1运行018hqasapipeline-saas-back-profile-a-6cd746c664-gz4xj1/1运行019m[root@master49tmp]#catlll.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:devpipeline-saas-back-profile-aspec:replicas:1minReadySeconds:30#在rollingupgradestrategy:rollingUpdate:##由于replicas为3,所以整个升级过程中,pod数量在2-4之间maxSurge:1#滚动升级时先启动一个podmaxUnavailable:0#滚动升级时允许的最大Unavailablepod数量selector:matchLabels:app:devpipeline-saas-backprofile:profile-atemplate:metadata:labels:app:devpipeline-saas-backprofile:profile-aspec:terminationGracePeriodSeconds:40##k8s会向应用程序发送一个SIGTERM信号,可用于正确优雅地关闭应用程序,默认为30秒volumes:-name:“cephfs-fuse”主机路径:路径:“/data/WEBLOG”-名称:“preproductnfs”主机路径:路径:“/home/nfs”容器:-名称:devpipeline-saas-back-profile-a图像:harbor.reg/test_jinfu/devpipeline-saas-back:949f788-10imagePullPolicy:IfNotPresentvolumeMounts:-name:cephfs-fusemountPath:/data/WEBLOG-name:preproductnfsmountPath:/home/nfs资源:限制:内存:2500Mi请求:内存:2000Mi端口:-containerPort:8080env:-名称:app_name值:devpipeline-saas-back-profile-a-名称:project_name值:devpipeline-saas-back生命周期:preStop:exec:command:["/bin/sh","-c","/jar-stop.sh"]readinessProbe:httpGet:path:/api/v1/Status/Versionport:8080initialDelaySeconds:10#用于表示初始化延迟时间,即需要多长时间才通知监控开始运行,单位为秒periodSeconds:40#多久执行一次检测successThreshold:1#最小连续次数检查成功timeoutSec失败后成功onds:2#用于表示监听的超时时间。如果超过这个时间,则认为监听失败---apiVersion:v1kind:Servicemetadata:name:devpipeline-saas-back-profile-alabels:app:devpipeline-saas-backprofile:profile-aspec:selector:app:devpipeline-saas-backprofile:profile-atype:NodePortports:-port:8080targetPort:8080nodePort:32111###发布后[root@master49tmp]#kubectlgetpod|grepsaasdevpipeline-saas-back-profile-a-6cd5774767-jkzhz2/2运行02m15slogstash-saas-back-profile-a-d85c497bb-w7v7g2/2运行018hqasapipeline-saas-back-profile-a-6cd746c664-gz4xj1/1跑步019m