超强K8s服务编排指南,快来围观!

article/2025/10/3 2:44:39

前置说明

k8s_host=192.168.214.50   #定义k8s_host变量,此ip为k8s管理机

yaml_host=192.168.214.100:9999  #相关服务的配置存放机

操作步骤

Step1: 登录100 jenkins 的机器

该机器是有初始化相关脚本的机器,且与k8s机器互相免密访问

Step2: 初始化项目信息

进入目录:/opt/scripts

执行命令:sh init-yaml.sh test backends

[root@localhost scripts]# more init-yaml.sh

#!/bin/bash
ns=$1  //命名空间
app=$2 //对应的服务名称
yaml=/opt/scripts/yaml  //定义一个目录变更
mkdir -p $yaml/$ns/$app/properties  //创建目录
touch $yaml/$ns/$app/deploy.yaml //创建文件
cat $yaml/_/deploy_template.yaml | sed  "s/_NAMESPACE_/$ns/g" | sed  "s/_APPNAME_/$app/g" > $yaml/$ns/$app/deploy_template.yaml  //先替换再生成一个新的deployment 的yaml文件
cat $yaml/_/svc.yaml | sed  "s/_NAMESPACE_/$ns/g" | sed  "s/_APPNAME_/$app/g" > $yaml/$ns/$app/svc.yaml //先替换再生成一个新的service 的yaml 文件
tree $yaml/$ns/$app  //以树结构输出出来

Step3: 初始化 Service 信息

进入目录:/opt/scripts

执行命令:sh init-service.sh test backends

[root@localhost scripts]# more init-service.sh

#!/bin/bash
ns=$1 //命名空间
app=$2 //对应的服务名称
kubectl='kubectl --kubeconfig=/etc/kubernetes/kubelet.kubeconfig'  //定义了一个kubectl命令变更
ssh root@192.168.214.50 "$kubectl apply -f http://192.168.214.100:9999/$ns/$app/svc.yaml"  //跳转到50这台k8s的管理机上,为服务生成service服务代理

注意:

k8s分配给 Service一个固定IP,这是一个虚拟IP(也称为ClusterIP),并不是一个真实存在的IP,而是由k8s虚拟出来的。

虚拟IP的范围通过k8s API Server的启动参数 --service-cluster-ip-range=19.254.0.0/16配置;

虚拟IP属于k8s内部的虚拟网络,外部是寻址不到的。

在k8s系统中,实际上是由k8s Proxy组件负责实现虚拟IP路由和转发的,所以k8s Node中都必须运行了k8s Proxy,从而在容器覆盖网络之上又实现了k8s层级的虚拟转发网络。

Step4: 调整配置信息

[root@localhost backend]# pwd
/opt/scripts/yaml/test/backends
[root@localhost backends]# tree
.
├── deploy_template.yaml
├── deploy.yaml
├── properties
│   ├── logback.xml
│   └── sysconfigs
│       └── zk.properties
└── svc.yaml2 directories, 5 files
cd /opt/script/yaml/test/backends

配置文件pro和svc.yaml:

从原机器/opt/data/msgback-release/ROOT/WEB-INF/classes  拷贝此目录下的内容到/opt/scripts/yaml/test/backends 此目录下来,修改zk 配置地址信息

修改在svc.yaml 此文件中修改配置的端口信息

Step5: jenkins调用 k8s 做服务部署到 k8s集群中去

jenkins_job: 编译代码并生成镜像,且上传到镜像仓库
namespace='test'  #定义一个变量
mvn clean install -DskipTests -U  #进行代码的编译,跳过测试,-U强制更新
cd ./test-deployer-cluster/target  #编译完成后,此目录下会生成一个test【项目】的目录
rm -rf ./test/conf/sysconfigs  #将生成项目目录的配置信息全部清除掉,因为我们需要替换
cp -af /opt/scripts/yaml/test/test-model/properties/sysconfigs/* ./test/conf/sysconfigs  #此处就是拿我们自己的配置放入到sysconfigs(项目配置文件存放处)目录下
echo '
cd /opt/test/bin/
dos2unix -k startup.sh  #转换文件的格式为unix,避免启动时报文件错误
sh startup.sh&  #启动服务
tail -f /var/log/yum.log #打印日志,表明服务是存活的
'> ./start.sh   #生成一个启动脚本,存放的目录是为 --> cd ./test-deployer-cluster/target
echo '
FROM ult.harbor.com/base/java:v4-skyagent
ENV TZ=Asia/Shanghai  //定义时区
ENV LANG en_US.UTF-8 //定义字符集
ENV LANGUAGE en_US:en //定义语言
ADD ./test /opt/test //追加test目录到镜像中
ADD ./start.sh /opt/test/  //追加启动脚本到镜像中
CMD ["sh","/opt/test/start.sh"] //镜像启动时执行的命令
' > Dockerfile  //生成一个Dockerfile文件 ,下面脚本会使用这个文件生成镜像
docker build -t ult.harbor.com/$namespace/test-model:${branch}-${BUILD_NUMBER} .   //${branch}-${BUILD_NUMBER}为jenkins自动生成的一个变量
docker push ult.harbor.com/$namespace/test-model:${branch}-${BUILD_NUMBER}   //将上面命令生成的镜像上传到镜像仓库中,供部署时使用
jenkins_job: 调用k8s将镜像运行进来,生成容器
/opt/scripts/install-app.sh test test-model ${version}  //${version} 为jenkins 部署时传入的一个变量

more /opt/scripts/install-app.sh 如下所示:

[root@localhost ~]# more /opt/scripts/install-app.sh
ns=$1    //脚本接收的第一个参数
app=$2  //脚本接收的第二个参数
version=$3 //脚本接收的第三个参数
k8s_host=192.168.214.50 //定义k8s_host变量,此ip为k8s管理机
yaml_host=192.168.214.100:9999 //配置存放处
yaml_path=/opt/scripts/yaml/$ns/$app //定义一个路径变量
echo install : ns=$ns , app=$app , version=$version //输出信息
cat $yaml_path/deploy_template.yaml | sed "s/VERSION/$version/g" > $yaml_path/deploy.yaml  //替换部署脚本里面的版本号【k8s里面的deploy】
echo -------------replace deploy-------------//输出信息
cat $yaml_path/deploy.yaml //查看信息
echo -------------svc info-------------//输出信息
cat $yaml_path/svc.yaml //查看信息
echo -------------call k8s-------------//输出信息
kubectl='kubectl --kubeconfig=/etc/kubernetes/kubelet.kubeconfig' //定义kubectl命令变量
ssh root@$k8s_host "$kubectl delete -f http://$yaml_host/$ns/$app/deploy.yaml"  //删除已存在的容器
ssh root@$k8s_host "$kubectl create -f http://$yaml_host/$ns/$app/deploy.yaml"  //创建一个新的容器

欢迎关注【无量测试之道】公众号,回复【领取资源】

Python+Unittest框架API自动化、

Python+Unittest框架API自动化、

Python+Pytest框架API自动化、

Python+Pandas+Pyecharts大数据分析、

Python+Selenium框架Web的UI自动化、

Python+Appium框架APP的UI自动化、

Python编程学习资源干货、

Vue前端组件化框架开发、

资源和代码 免费送啦~
文章下方有公众号二维码,可直接微信扫一扫关注即可。

备注:我的个人公众号已正式开通,致力于IT互联网技术的分享。

包含:数据分析、大数据、机器学习、测试开发、API接口自动化、测试运维、UI自动化、性能测试、代码检测、编程技术等。

微信搜索公众号:“无量测试之道”,或扫描下方二维码:

   在这里插入图片描述

 添加关注,让我们一起共同成长!


http://chatgpt.dhexx.cn/article/GWGhZVV9.shtml

相关文章

RestCloud服务编排平台,API可视化编排

RestCloud服务编排平台通过无代码化来统一编排和调度API服务,通过可视化的拖、拉、拽对API进行编排并实现分布式事务控制、故障自动转移、断点续跑等功能可大幅提升API服务的敏捷化交付能力。API将成为企业的数字化资产且API会越来越多,而企业随着前后端…

esb 服务编排_在ESB中进行路由和编排之间的选择

esb 服务编排 介绍 如今,企业服务总线确实是有用的解决方案,它结合了一系列工具,可以解决应用程序和服务集成领域中的实际问题。 但是,它们给工具箱带来了轻微的不便,给工具箱用户带来了不便,后者知道解决问题的方法必须在工具箱中,但出于他的原因,他不知道是哪一种!…

服务编排:conductor学习(一)

一.Conductor介绍 conductor官方文档:https://netflix.github.io/conductor/conductor介绍:主要是帮助我们在Netflix上编制基于微服务的流程。conductor架构: 4.conductor的安装和运行: 从github查看源代码https://github.co…

如何做服务编排/数据聚合?(使用Goku API Gateway实现)

什么是服务编排/数据聚合? 服务编排/数据聚合 指的是可以通过一个请求来依次调用多个微服务,并对每个服务的返回结果做数据处理,最终整合成一个大的结果返回给前端。 例如一个服务是“查询用户预定的酒店”,前端仅需要传一个订单…

k8s 使用 yaml 进行服务编排

K8s 是一个容器编排引擎,使用 YAML 文件编排要部署应用,因此在学习之前,应该了解 YAML 语法格式: 缩进表示层级关系不支持制表符 “tab” 缩进,使用空格缩进通常开头缩进 2 个空格字符后缩进 1 个空格,如冒…

Netty学习五:Netty框架之服务编排

一、核心编排组件:ChannelPipeLine ChannelPipeLine是Netty的核心编排组件,负责调度各类ChannelHandler,实际的加工处理由ChannelHandler完成。 ChannelPipeLine可以看做是ChannelHandler的容器,包含一组ChannelHandler实例&…

企业级低代码服务编排库 - Commander

写在前面。低代码最近被炒的火热,各种争议不断,我们且不去添油加醋,仔细想来,在一些特定的场景,在整体架构的特定层面,低代码平台确实是可以发挥其长处的,足矣。 一.微服务编排的必…

资源调度和服务编排技术架构

从传统云网融合的角度出发,结合边缘计算、网络云化及智能控制的优势,在算力网络连接下实现更加广泛的算力资源纳管和动态调度。算力网络正是为了提高云、边、端三级计算的协同工作效率而出现的。算力网络资源调度和服务编排整体技术架构如图1所示。 图1 …

如何通过网关做服务编排?

什么是服务编排/数据聚合? 服务编排/数据聚合 指的是可以通过一个请求来依次调用多个微服务,并对每个服务的返回结果做数据处理,最终整合成一个大的结果返回给前端。 例如一个服务是“查询用户预定的酒店”,前端仅需要传一个订单…

零代码平台中的服务编排思路

先打个广告,我们的第三场零代码实践的直播在本周五( 11 月 5 日 )晚8点准时开始,扫描下面二维码,直接预约直播,到时间微信会自动提醒。 随着企业数字化转型的进程加快,零代码平台的的应用越来越…

Kstry框架一种服务编排的实现

Kstry是什么? 所见( 图示模型 )即所得( 代码执行 )的可视化流程编排框架可轻易将流程从串行升级到并行,支持任务拆分、任务重试、任务降级、子任务遍历、指定超时时间的并发框架共享能力平台侧的微服务业务…

java接口服务编排_GOKU API Gateway CE V3.1.0 发布:新增服务编排、配置版本管理等...

Goku API Gateway (中文名:悟空 API 网关)是一个基于 Golang 开发的微服务网关,能够实现高性能 HTTP API 转发、服务编排、多租户管理、API 访问权限控制等目的,拥有强大的自定义插件系统可以自行扩展,并且提供友好的图形化配置界…

云原生服务编排技术

基于云原生的服务编排技术主要实现融合计算、存储和网络能力开放,通过云原生和云计算统一编排调度平台来实现底层资源的调度及上层服务编排。运用 OpenStack底层基础设施层的资源调度管理能力,对数据中心内的异构计算资源、存储资源和网络资源可以进行有…

Docker Compose 服务编排

微服务架构中一般会有多个微服务,每一个微服务一般都会部署多个实例,如果每一个服务都手动启动,工作量会很大。服务编排就是按照一定的业务规则进行批量管理容器。 docker基础请参考 Docker相关内容整理(一)_活水774的…

9_服务编排

是什么 微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启 动停止,维护的工作量会很大。来看下我们日常工作: 要从Dockerfile build image 或者去 dockerhub 拉取 image要创…

Docker服务编排

概述 服务编排概念 微服务架构的应用系统中一般包含若干个微服务,每个微服务都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。 具体工作大概如下: 从Dockerfile build image或者取dockerhub拉取image。创建多…

详解微服务编排

你的组织是否使用微服务风格的体系结构来实现其业务功能?你使用什么方法来实现微服务的通信和编排?在过去的几年中,微服务一直是一个相当占主导地位的应用程序架构,通常与云平台(例如,容器、K8s、FaaS&…

服务编排-前端应用和后端服务能力间关键衔接

转载自:https://www.toutiao.com/a6922250238791090691/?log_fromce077552cde8e_1635167920723 首先提出一个重要观点,即在当前微服务架构转型中,服务编排将成为一个大的技术发展趋势,其主要原因展开描述如下: 当前…

蚁群算法原理及Matlab实现

转自:https://blog.csdn.net/zuochao_2013/article/details/71872950 原 蚁群算法 2017年05月13日 20:23:13 阅读数:7821 蚁群算法(AG)是一种模拟蚂蚁觅食行为的模拟优化算法,它是由意大利学者Dorigo M等人于1991年首先提出,并首先…

蚁群算法讲解python

简介 蚁群算法(Ant Clony Optimization, ACO)作为一个启发式群智能算法,它是由一群无智能或有轻微智能的个体通过相互协作而表现出智能行为,从而为求解复杂问题提供了一个新的可能性。 ACO是一种仿生学算法&#xff…