mac 上學習k8s系列(27)Deployment Job CronJob

2022-01-06 golang算法架構leetcode技術php

       在學習完上一講mac 上學習k8s系列(26)ReplicationController、ReplicaSet、StatefulSet中的ReplicationSet後,學習Depolyment就非常容易了。它只是在RS中增加了如下功能:1,可以查看Deployment的升級詳細進度和狀態2,可以使用回滾操作回滾到之前的任一版本3,每一次對Deployment的操作,都能夠保存下來4,對於每一次升級都能夠隨時暫停和啟動。整體來說就是運維更方便了。Job和CronJob對應的是任務和周期性任務。還是基於前面創建的apple:5678鏡像來學習,由於該鏡像沒有裝bash,所以學習Job的時候使用的是apline:3.13

1,Deployment 

apiVersion: apps/v1kind: Deployment metadata:  name: apple-deployment spec:  replicas: 3   selector: #標籤選擇器    matchLabels:      app: apple   template:    metadata:      labels:        app: apple     spec:      containers:         - name: apple-app         image: apple:5678         ports:        - containerPort: 5678

中間遇到的問題

% kubectl apply -f deployment/Deployment.yamlerror: error validating "deployment/Deployment.yaml": error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec; if you choose to ignore these errors, turn validation off with --validate=false

原因:我們創建deployment的時候必須指定selector

 % kubectl apply -f deployment/Deployment.yamldeployment.apps/apple-deployment created

查看下我們的deployment和pod

% kubectl get deployment                     NAME                       READY   UP-TO-DATE   AVAILABLE   AGEapple-deployment           3/3     3            3           87s

 % kubectl get pods                           NAME                                        READY   STATUS      RESTARTS   AGEapple-app                                   1/1     Running     18         102dapple-deployment-fb8cfb965-bnjhr            1/1     Running     0          106sapple-deployment-fb8cfb965-fftd8            1/1     Running     0          106sapple-deployment-fb8cfb965-zznjr            1/1     Running     0          106s

當然,我們也可以更新鏡像和回滾鏡像

kubectl set image deployment/apple-deployment apple-app=gorse_server:latestdeployment.apps/apple-deployment image updated

% kubectl rollout history deployment/apple-deployment deployment.apps/apple-deployment REVISION  CHANGE-CAUSE1         <none>2         <none>

更新鏡像後我們發現有兩個版本的deployment,可以回滾掉剛才的更新

%  kubectl rollout undo deployment/apple-deploymentdeployment.apps/apple-deployment rolled back

當然我們也可以縮放我們的pod數量

% kubectl scale deployment apple-deployment --replicas 1deployment.apps/apple-deployment scaled

2,Job 

apiVersion: batch/v1kind: Jobmetadata:  name: alpine-jobspec:  template:    metadata:      name: alpine-job    spec:      restartPolicy: Never      containers:      - name: counter        image: alpine:3.13        command:        - "bin/sh"        - "-c"        - "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"

這裡需要注意的是Job的RestartPolicy僅支持Never和OnFailure兩種,不支持Always。

% kubectl apply -f deployment/job.yamljob.batch/alpine-job created

3,CronJob

apiVersion: batch/v1kind: CronJobmetadata:  name: alpine-cronjobspec:  schedule: "*/1 * * * *"  jobTemplate:    spec:      template:        spec:          restartPolicy: OnFailure          containers:          - name: alpine-cronjob            image: alpine:3.13            args:            - "bin/sh"            - "-c"            - "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"

CronJob裡面多了個schedule 它的配置和crontab配置一樣。可以用來執行周期性的任務。

相關焦點

  • 這麼笨的史丹利,是怎麼學會這該死的k8s容器化的?
    3、 學習k8s的誤區3.1、 誤區1:求快3.2、 誤區2: 害怕忘記4、 學習方法很重要4.1、 一萬小時定律4.2、 多用才是王道4.3、 書籍推薦docker系列k8s系列go 語言開發極客時間視頻課程5、 小結
  • 虛擬機k8s搭建教程
    ,關注我們點擊文末「閱讀原文」解鎖資料對於學習k8s時,搭建環境是一個很麻煩的一步,在此,闡述下虛擬機搭建k8s,一主一從。一般是在內部網絡使用,而且這也是學習環境,直接關閉防火牆,避免網絡通訊的困擾。
  • Kubernetes全棧架構師(資源調度上)--學習筆記
    Replication Controller類似於進程管理程序,但是Replication Controller不是監視單個節點上的各個進程,而是監視多個節點上的多個Pod。定義一個Replication Controller的示例如下。
  • 雲原生聯邦學習平臺 KubeFATE 原理詳解
    VMware招聘聯邦學習、隱私計算開發工程師相關文章聯邦學習平臺 KubeFATE 部署 FATE 的配置說明在Juypter Notebook中構建聯邦學習任務用KubeFATE在K8s為什麼要在 Kubernetes 上部署 FATE但隨著聯邦學習的正式投入使用,訓練集、模型都會逐漸變大。
  • k8s負載資源StatefulSet工作細節
    即我們上篇小作文中deployment創建的nginx pod ,他們是完全一樣的,任何一個pod 被移除後依然可以正常工作。由於不依賴外部存儲,它們可以被輕易的調度到任何 node 上。什麼是有狀態?
  • 「走進k8s」Docker 簡介和安裝(一)
    關於docker這塊從0開始已經寫了4個系列了,但是針對k8s還是有點怵,因為k8s確實比較麻煩裡面的東西比較複雜,而且針對k8s想走的更遠還是需要實踐
  • 用KubeFATE在Kubernetes上部署聯邦學習集群
    之前我們在文章《使用KubeFATE快速部署聯邦學習實驗開發環境(一)》、《使用KubeFATE快速部署聯邦學習實驗開發環境(二)》和《使用FATE進行圖片識別的深度神經網絡聯邦學習》中介紹過如何使用 KubeFATE 部署一個基於   Docker Compose 的 FA TE 聯邦學習集群,以便於快速嘗試體驗聯邦學習。但隨著聯邦學習的正式投入使用,訓練集、模型都會逐漸變大。
  • 陽明k8s視頻課程
    陽明k8s視頻課程我剛好有這方面的學習資料,如果你也有需要,歡迎聯繫微信: pdd1310一起學習,一起進步,更有海量學習資源與你分享
  • 老男孩講解docker和k8s
    老男孩講解docker和k8s我剛好有這方面的學習資料,如果你也有需要,歡迎聯繫微信: pdd1310一起學習,一起進步
  • 老男孩k8s一期課件 52破解
    老男孩k8s一期課件 52破解我剛好有這方面的學習資料,如果你也有需要,歡迎聯繫微信: pdd1310一起學習,一起進步
  • 科普| K8s入門-概念篇 | 大佬口中常說的K8s到底是什麼
    要學習和使用K8S必須知道和掌握的幾個對象。我個人贊同Why Kubernetes is Abbreviated k8s中說的觀點「嘛,寫全稱也太累了吧,不如整個縮寫」。其實只保留首位字符,用具體數字來替代省略的字符個數的做法,還是比較常見的。1.2 為什麼是K8S?
  • 資料分享 2021 Kubernetes架構師:基於世界500強的k8s實戰課程(K8s實戰第二期) 網盤雲
    資料分享 2021 Kubernetes架構師:基於世界500強的k8s實戰課程(K8s實戰第二期) 網盤雲我剛好有這方面的學習資料
  • 在K8S上部署rabbitmq集群-有狀態服務
    二、rabbitmq集群部署1、版本說明:因為考慮到較早版本rabbitmq在k8s上的集群部署是使用autocluster插件去調用kubernetes apiserver來獲取rabbitmq服務的endpoints,進而獲取node節點信息,並自動加入集群,但是現在