k8s的部署脚本是什么
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇内容主要讲解"k8s的部署脚本是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"k8s的部署脚本是什么"吧!浅谈dockerdocker可以类比为j
千家信息网最后更新 2025年01月23日k8s的部署脚本是什么
本篇内容主要讲解"k8s的部署脚本是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"k8s的部署脚本是什么"吧!
浅谈docker
docker可以类比为jvm,jvm也是虚拟机,然后docker的image可以类比为jar包,jar运行在jvm里面,image当然运行在docker容器里,然后jar包是通过maven 的pom.xml定义构建的产物,那docker也有一个Dockerfile来定义打包的镜像。在没有容器化之前,我们开发提供的最终产物是jar,容器化之后我们需要提供docker的镜像,docker的镜像会包含我们的jar,然后提供一个稳定的可移植的运行环境。下面是最简单的一个docker镜像构建:
通过 docker build -t kl/sales . 就可以构建一个可运行的镜像
浅谈k8s的部署脚本
其实k8s的脚本没什么可说的,本身k8s的概念非常之多,具体可参考官方的文档,下面贴出我们的部署文件
apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: sales-app namespace: #namespacespec: replicas: 2 minReadySeconds: 130 # 从容器启动到应用正常提供服务 strategy: # k8s更新策略 type: RollingUpdate #滚动更新 rollingUpdate: maxSurge: 2 # 更新时允许最大激增的容器数,默认 replicas 的 1/4 向上取整 maxUnavailable: 1 # 更新时允许最大 unavailable 容器数,默认 replicas 的 1/4 向下取整 template: metadata: labels: app: sales-app spec: imagePullSecrets: #镜像拉取秘钥 - name: xx-xx-xx containers: - name: sales image: xxx-vpc.cn-xx.aliyuncs.com/keking/sales:#Tag imagePullPolicy: Always env: - name: runShell value: #runShell ports: - containerPort: 6002 name: web protocol: TCP resources: limits: cpu: 600m memory: 4Gi requests: cpu: 300m memory: 100Mi livenessProbe: #检查是否存活 httpGet: path: /health port: 6002 initialDelaySeconds: 240 #首次检查在多少时间后 periodSeconds: 180 #检查周期 timeoutSeconds: 3 #超时时间 failureThreshold: 3 #失败的阈值,连续三次 readinessProbe: #检查是否成功启动 httpGet: path: /health port: 6002 initialDelaySeconds: 140 #首次检查在多少时间后 periodSeconds: 300 #检查周期 timeoutSeconds: 3 #超时时间---apiVersion: v1kind: Servicemetadata: name: sales-app namespace: #namespace labels: app: sales-appspec: selector: app: sales-app ports: - name: web port: 80 targetPort: 6002 nodePort: 31942 type: NodePort
最后聊聊jenkins pipeline
和一般的jenkins pipeline定义一样,容器化后就多了两个步骤,一个是在jar生成后,根据前面的讲的Dockerfile文件构建docker的镜像,这个要求jenkins所在主机必须有docker的环境。第二个步骤是发送k8s的部署脚本到k8s容器,这个是通过jenkins kuberneetes插件来完成的,详见下面的jenkins脚本
podTemplate(label: 'jnlp-slave', cloud: 'kubernetes', containers: [ containerTemplate( name: 'jnlp', image: 'xx-vpc.cn-xx.aliyuncs.com/keking/jenkins-slave:latest', alwaysPullImage: true ),], volumes: [ hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'), hostPathVolume(mountPath: '/usr/bin/docker', hostPath: '/usr/bin/docker'), hostPathVolume(mountPath: '/usr/local/jdk', hostPath: '/usr/local/jdk'), hostPathVolume(mountPath: '/usr/local/maven', hostPath: '/usr/local/maven'), ], imagePullSecrets: ['registry-pull-secret'],) { node("jnlp-slave") { stage('Git Checkout') { checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xx', url: 'http://xx.xx.xx/xx/yudian-salesplatform-boot.git']]]) } stage('Maven Build') { script { if ('true' == "${build}") { sh "mvn clean install -U -P${profile} -Dmaven.test.skip=true" } else { echo "跳过maven build" } } } stage('Docker Build ') { script { if ('true' == "${build}") { sh ''' docker login -u it_sh@keking-group -p x#xxx-vpc.cn-xx.aliyuncs.com docker build -t xx-vpc.cn-xx.aliyuncs.com/keking/sales:${Tag} . docker push xx-vpc.cn-xx.aliyuncs.com/keking/sales:${Tag} ''' } else { echo "跳过docker build" } } } stage('Deploy to K8s') { script { if('true' == "${deploy}"){ if ('prod' == "${profile}") { sh ''' sed -i "s/#namespace/prod/g" deploy.yaml sed -i "s%#runShell%java -Xmx2G -Xms2G -Xmn960M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/dump.log -Xloggc:/tmp/gc.log -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:MaxMetaspaceSize=128m -XX:MetaspaceSize=128m -jar -Ddev_meta=http://conf.x.ops:8801/ -Denv=DEV -Didc=prod app.jar%g" deploy.yaml ''' } if ('uat' == "${profile}") { sh ''' sed -i "s/#namespace/uat/g" deploy.yaml sed -i "s%#runShell%java -Xmx1536M -Xms1536M -Xmn960M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/dump.log -Xloggc:/tmp/gc.log -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:MaxMetaspaceSize=128m -XX:MetaspaceSize=128m -jar -Ddev_meta=http://conf.keking.ops:8801/ -Denv=DEV -Didc=sales_docker app.jar%g" deploy.yaml ''' } sh ''' sed -i "s/#Tag/${Tag}/g" deploy.yaml ''' kubernetesDeploy configs: 'deploy.yaml', kubeConfig: [path: ''], kubeconfigId: '9c1da035-60b9-4bd8-aeae-1a31666280ce', secretName: '', ssh: [sshCredentialsId: '*', sshServer: ''], textCredentials: [certificateAuthorityData: '', clientCertificateData: '', clientKeyData: '', serverUrl: 'https://'] }else { echo "跳过Deploy k8s" } } } } }
到此,相信大家对"k8s的部署脚本是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
容器
脚本
镜像
检查
时间
更新
运行
最大
产物
内容
周期
文件
步骤
环境
学习
实用
更深
成功
没什么
两个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
河南省互联网科技学校
一个大型商场网络技术需求
服务器关闭了怎么进游戏
随州管理软件开发
数据库主关键字的规则
软件开发培训心得
imac用什么软件开发
分布式数据库怎么运维
数据库中一对多对多怎么建表
影之刃3装备数据库
未安装2010数据库引擎
汉声杂志数据库
龙岩服务器
软件开发费属于什么应税项目
oracle数据库事务写法
甘肃党建设计软件开发
宁波贸琪软件开发工作室
珠海路客互联网科技有限公司
配置文件连接数据库怎么写
北京政法职业学院网络技术专升本
网络安全应该注意事项有那些
最大金融数据库
数据库中如何既排序又分组
浙大服务器大橙子19
ibm服务器面板代码
无法访问服务器倩女幽魂
外文全文型数据库
吉林纵横软件开发
嗯这个服务器怎么管理
河北玺喆互联网科技