日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java replica set_K8s 的ReplicaController ReplicaSet DaemonSet和Job

發(fā)布時間:2024/3/7 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java replica set_K8s 的ReplicaController ReplicaSet DaemonSet和Job 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是ReplicationController

ReplicationController是k8s的一種資源對象,能夠保證指定數量的pod處于運行狀態(tài)。如果pod由于某些原因掛掉,ReplicationController會立刻啟動新的pod,使得同時運行的pod數量滿足配置中的要求。

ReplicationController的三個組成部分

Label selector

Replica count

Pod template

ReplicationController的描述文件

一個ReplicationController的描述文件樣例如下:

apiVersion: v1

kind: ReplicationController

metadata:

name: kubia

spec:

replicas: 3

selector:

app: kubia # 可以不提供這一行,ReplicationController會使用template創(chuàng)建新的pod

template:

metadata:

labels:

app: kubia

spec:

containers:

- name: kubia

image: luksa/kubia

ports:

- containerPort: 8080

ReplicationController的相關操作

創(chuàng)建ReplicationController

kubectl create -f my-replication-controller.yaml

獲取ReplicationController

kubectl get rc

顯示某個ReplicationController的詳情信息

kubectl describe rc kubia

修改某個ReplicationController的配置

kubectl edit rc kubia

修改ReplicationController的pod副本數

kubectl scale rc kubia --replicas=10

刪除ReplicationController

# 刪除rc,但是它創(chuàng)建的pod扔保持運行

kubectl delete rc kubia --cascade=false

# 刪除rc,pod也刪除

kubectl delete rc kubia

ReplicaSet

ReplicaSet使用pod selector指定一組pod。負責維持一定數量的pod運行。pod運行數量少于預期的時候會使用pod template創(chuàng)建pod,pod運行數量多于預期的時候會刪除掉多余的pod。

一個pod被ReplicaSet關聯(lián)之后,它的屬性中會增加metadata.ownerReferences

如果一個pod的label匹配ReplicaSet的pod selector,同時這個pod沒有ownerReferences或者ownerReferences不是Controller,這個pod會立刻被此ReplicaSet管理。

Replica Set相比 Replication Controller支持更復雜的label selector。

ReplicaSet的描述文件

一個ReplicaSet描述文件的樣板如下所示:

apiVersion: apps/v1beta2

kind: ReplicaSet

metadata:

name: kubia

spec:

replicas: 3

selector:

matchLabels:

app: kubia

template:

metadata:

labels:

app: kubia

spec:

containers:

- name: kubia

image: luksa/kubia

ReplicaSet的相關操作

獲取所有的replicaSet

kubectl get rs

獲取replicaSet的信息

kubectl describe rs

獲取名字為kubia的replicaSet的信息

kubectl describe rs/kubia

ReplicaSet和Horizontal Pod Autoscaler

創(chuàng)建HPA描述文件:

apiVersion: autoscaling/v1

kind: HorizontalPodAutoscaler

metadata:

name: frontend-scaler

spec:

scaleTargetRef:

kind: ReplicaSet

name: frontend

minReplicas: 3

maxReplicas: 10

targetCPUUtilizationPercentage: 50

HPA會監(jiān)視CPU的利用率,動態(tài)調整ReplicaSet的replicas數量(3-10之間),直到CPU利用率為50%

以上配置等效于如下命令:

kubectl autoscale rc frontend --min=3 --max=10 --cpu-percent=50

刪除replicaSet

kubectl delete rs kubia

更復雜的選擇器

Replica支持更加復雜的選擇器。如下所示:

selector:

matchExpressions:

- key: app

operator: In

values:

- kubia

In:key對應的value必須包含values中給定的值。

NotIn:key對應的value必須不包含values中給定的值。

Exists:給定的key必須存在,不用再指定values。

DoesNotExist:給定的key必須不存在,不用再指定values。

DaemonSet

DaemonSet管理的Pod在集群中所有節(jié)點運行,且對于同一個節(jié)點只會啟動一個。DaemonSet的replica數量為集群節(jié)點的數量,無法更改。DaemonSet的這個特性非常適合運行一些類似于節(jié)點狀態(tài)監(jiān)控的服務。

DaemonSet的描述文件

一個DaemonSet的例子如下:

apiVersion: apps/v1beta2

kind: DaemonSet

metadata:

name: ssd-monitor

spec:

selector:

matchLabels:

app: ssd-monitor

template:

metadata:

labels:

app: ssd-monitor

spec:

nodeSelector:

disk: ssd

containers:

- name: main

image: luksa/ssd-monitor

DaemonSet的相關操作

獲取daemon set信息

kubectl get ds

其余的命令和ReplicaSet,ReplicationController一致,不再贅述。

Job

Job 是一種特殊的controller,job期待著它控制的pod內的container運行成功后停止。不像是其他controller,pod停止運行后會自動重啟。但是如果job控制的pod異常退出,job的默認行為會重啟這個pod,直到任務運行成功,或者是累計失敗一定的次數后停止。

Job的描述文件

一個Job描述文件的例子如下:

apiVersion: batch/v1

kind: Job

metadata:

name: batch-job

spec:

template:

metadata:

labels:

app: batch-job

spec:

restartPolicy: OnFailure

containers:

- name: main

image: luksa/batch-job

和之前介紹的幾個controller不同的是。Job的restart policy 不能使用always。

可以使用的值為onFailure(默認值)和Never。

Job的相關操作

獲取job的信息

kubectl get jobs

查看運行完成的pod

kubectl get po -a

Job的高級配置

配置job需要完成多次(串行執(zhí)行)

apiVersion: batch/v1

kind: Job

metadata:

name: multi-completion-batch-job

spec:

completions: 5

template:

...

允許job并行執(zhí)行

apiVersion: batch/v1

kind: Job

metadata:

name: multi-completion-batch-job

spec:

completions: 5

parallelism: 2

template:

...

動態(tài)修改job的并行度

kubectl scale job multi-completion-batch-job --replicas 3

限制job完成最大耗時

配置job的pod spec中的activeDeadlineSeconds屬性

job失敗前最大重試次數

配置pod的spec.backoffLimit。如果Job執(zhí)行失敗超過這個次數,Job會失敗,不再重新啟動。

cronjob定時任務

一個例子如下:

apiVersion: batch/v1beta1

kind: CronJob

metadata:

name: batch-job-every-fifteen-minutes

spec:

schedule: "0,15,30,45 * * * *"

jobTemplate:

spec:

template:

metadata:

labels:

app: periodic-batch-job

spec:

restartPolicy: OnFailure

containers:

- name: main

image: luksa/batch-job

周期性定時任務的關鍵配置是schedule配置項。

Schedule配置項后每個數字分別對應著:

Minute

Hour

Day of month

Month

Day of week

定時任務最大啟動延遲時間

定時任務最大啟動延遲時間配置項為startingDeadlineSeconds。超過這個時間未啟動成功,job會被標記為失敗。

apiVersion: batch/v1beta1

kind: CronJob

spec:

schedule: "0,15,30,45 * * * *"

startingDeadlineSeconds: 15

...

總結

以上是生活随笔為你收集整理的java replica set_K8s 的ReplicaController ReplicaSet DaemonSet和Job的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。