亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

k8s的部署腳本是什么

發布時間:2022-03-01 13:40:13 來源:億速云 閱讀:153 作者:iii 欄目:開發技術

本篇內容主要講解“k8s的部署腳本是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“k8s的部署腳本是什么”吧!

淺談docker

docker可以類比為jvm,jvm也是虛擬機,然后docker的image可以類比為jar包,jar運行在jvm里面,image當然運行在docker容器里,然后jar包是通過maven 的pom.xml定義構建的產物,那docker也有一個Dockerfile來定義打包的鏡像。在沒有容器化之前,我們開發提供的最終產物是jar,容器化之后我們需要提供docker的鏡像,docker的鏡像會包含我們的jar,然后提供一個穩定的可移植的運行環境。下面是最簡單的一個docker鏡像構建:

k8s的部署腳本是什么

通過 docker build -t kl/sales . 就可以構建一個可運行的鏡像

淺談k8s的部署腳本

其實k8s的腳本沒什么可說的,本身k8s的概念非常之多,具體可參考官方的文檔,下面貼出我們的部署文件

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: sales-app
  namespace: #namespace
spec:
  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: v1
kind: Service
metadata:
  name: sales-app
  namespace: #namespace
  labels:
    app: sales-app
spec:
  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的部署腳本是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

k8s
AI

太康县| 乐东| 大连市| 星座| 蒲城县| 宁明县| 镇江市| 东乡| 夏津县| 囊谦县| 扶沟县| 蛟河市| 图木舒克市| 梅河口市| 泽普县| 富平县| 伊通| 临西县| 土默特左旗| 岑溪市| 新田县| 青田县| 图们市| 钟山县| 鸡西市| 阿克陶县| 天祝| 金门县| 盘山县| 芮城县| 乐至县| 蛟河市| 江油市| 承德市| 慈利县| 花莲县| 保康县| 西和县| 宁化县| 犍为县| 大方县|