k8s的部署脚本是什么
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,本篇内容主要讲解"k8s的部署脚本是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"k8s的部署脚本是什么"吧!浅谈dockerdocker可以类比为j
千家信息网最后更新 2025年02月19日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安全错误
数据库的锁怎样保障安全
怎么删除电脑服务器上的网页记录
web软件开发报价
河北餐饮软件开发技术
计算机数据库技术考试技巧
沈阳政务软件开发
中国中小学网络安全知识竞赛
nb iot 服务器
幻想神域最新服务器
网络安全手抄报幼儿园版
无线网络安全培训通知
正规网络安全审计系统厂家
江苏方便软件开发销售价格
信息化应用网络安全研究院
上海启梦网络技术
网络安全与应急指挥中心
连接服务器数据库失败
查看服务器的任务管理器
云服务器的网络流量包是啥
开源网络安全技术
怎么降低服务器的风险
全球互联网科技企业市值排名
博库数据库怎么检索中华期刊
网络安全管理考试内容
学软件开发买什么电脑好
葫芦岛软件开发招聘
手机显示自己的服务器地址
控制台程序访问数据库
三级网络技术指定软件
数据库类型组成
cc2540软件开发