k8s的部署脚本是什么
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,本篇内容主要讲解"k8s的部署脚本是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"k8s的部署脚本是什么"吧!浅谈dockerdocker可以类比为j
千家信息网最后更新 2024年11月17日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安全错误
数据库的锁怎样保障安全
广兴源互联网科技创意园
魔兽怀旧服不同服务器配置
科密考勤软件数据库
私人云服务器
施乐d700安装服务器驱动
流量感知 网络安全
服务器 报警
70年代网络安全保卫
天涯明月刀手游玉水明沙服务器
接口测试 数据库
请问疯狂猜成语网络安全吗
网络安全的常识和措施
用友企业管理服务器
湖南瀚邦网络技术有限公司
集群服务器发展史
产权交易平台软件开发
上海系统软件开发代码
电视变成小屏幕显示服务器错误
山东常用软件开发厂家价格
软件开发部绩效考核表
国际贸易专业相关数据库
电脑服务器要什么配置
更新失败服务器返回配置格式错误
商品条码数据库豆丁网
医疗直播软件开发
兰考科恩教育软件开发
武汉雅淘网络技术公司代运营
战意与服务器
数据库检索页面截图怎么搞
oracle数据库的状态