中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

建模外包網站推廣怎么做

建模外包網站,推廣怎么做,wordpress注冊qq郵箱配置,做網站所需知識調度 一、Kurbernetes的list-watch機制1.1 list-watch機制簡介1.2 創(chuàng)建pod的流程(結合list-watch機制) 二、Scheduler的調度策略2.1 簡介2.2 預選策略(predicate)2.3 優(yōu)選策略(priorities) 三、標簽管理3.1…

調度

  • 一、Kurbernetes的list-watch機制
    • 1.1 list-watch機制簡介
    • 1.2 創(chuàng)建pod的流程(結合list-watch機制)
  • 二、Scheduler的調度策略
    • 2.1 簡介
    • 2.2 預選策略(predicate)
    • 2.3 優(yōu)選策略(priorities)
  • 三、標簽管理
    • 3.1 查看標簽的幫助信息
    • 3.2 查看標簽信息
    • 3.3 添加標簽
    • 3.4 修改標簽
    • 3.5 刪除標簽
    • 3.6 根據標簽值查找資源對象
  • 四、kubernetes對Pod的調度策略
  • 五、定向調度
    • 5.1 調度策略簡介
    • 5.2 調度實例
      • 5.2.1 通過nodeName字段
      • 5.2.2 通過nodeSelector字段
        • 配置
        • 測試
  • 六、親和性調度
    • 6.1 Node親和性
    • 6.2 Pod親和性
    • 6.3 Pod反親和性
    • 6.4 拓撲域
      • 6.4.1 拓撲域的定義
      • 6.4.2 如何判斷是否在同一個拓撲域?
    • 6.5 親和性的策略
    • 6.6 親和性調度實例
      • 6.6.1 node親和性
      • 6.6.2 Pod親和性
      • 6.6.3 Pod反親和性
  • 六、污點和容忍
    • 7.1 節(jié)點設置污點
    • 7.2 Pod設置容忍
    • 7.3 調度實例
  • 八、Pod啟動階段
    • 8.1 Pod啟動過程
    • 8.2 Pod生命周期的5種狀態(tài)
  • 九、小結
    • 9.1 理論部分
    • 9.2 K8s常用故障排錯流程/手段

一、Kurbernetes的list-watch機制

1.1 list-watch機制簡介

Kubernetes 通過 List-Watch 的機制進行每個組件的協(xié)作,保持數據同步,每個組件之間的設計實現了解耦。

list 機制,通過調用資源的list API羅列資源,基于HTTP短鏈接實現;

watch機制,通過調用資源的watch API監(jiān)聽資源變更事件,基于HTTP 長鏈接實現

這種機制對于需要持續(xù)跟蹤 Kubernetes 集群中資源的狀態(tài)變化的應用程序非常有用,例如自動伸縮、監(jiān)控、日志收集等。

1.2 創(chuàng)建pod的流程(結合list-watch機制)

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

1)客戶端向apiserver發(fā)送創(chuàng)建Pod的請求,然后apiserver將請求信息存入到etcd中;

2)存入完成后,etcd會通過apiserver發(fā)送創(chuàng)建Pod資源的事件;

3)controller manager通過list-watch機制監(jiān)聽apiserver發(fā)送出來的事件,并創(chuàng)建相關的Pod資源,創(chuàng)建完成后,通過apiserver將信存入到etcd中

4) etcd存入更新信息之后,再次通過apiserver發(fā)送調度Pod資源的事件;

5)scheduler通過list-watch機制監(jiān)聽到apiserver發(fā)出的調度事件,通過調度算法,將Pod資源調度到合適的node節(jié)點上,調度完成后通過apiserver將調度完成后的信息更新到etcd中;

6)etcd收到更新信息后,再次向apiserver發(fā)送創(chuàng)建Pod的事件;

7)kubelet通過list-watch機制監(jiān)聽apiserver發(fā)出的創(chuàng)建Pod的事件,然后根據事件信息,在相應的node節(jié)點完成Pod的創(chuàng)建。

二、Scheduler的調度策略

在這里插入圖片描述

2.1 簡介

Scheduler 是 kubernetes 的調度器,主要的任務是把定義的 pod 分配到集群的節(jié)點上。

Sheduler 是作為單獨的程序運行的,啟動之后會一直監(jiān)聽 APIServer,獲取 spec.nodeName 為空的 pod,對每個 pod 都會創(chuàng)建一個 binding,表明該 pod 應該放到哪個節(jié)點上。

調度規(guī)則

1)公平:如何保證每個節(jié)點都能被分配資源

2)資源高效利用:集群所有資源最大化被使用

3)效率:調度的性能要好,能夠盡快地對大批量的 pod 完成調度工作

4)靈活:允許用戶根據自己的需求控制調度的邏輯

調度的流程

1)首先是過濾掉不滿足條件的節(jié)點,這個過程稱為預算策略(predicate);

2)然后對通過的節(jié)點按照優(yōu)先級排序,這個是優(yōu)選策略(priorities);

3)最后從中選擇優(yōu)先級最高的節(jié)點。如果中間任何一步驟有錯誤,就直接返回錯誤。

2.2 預選策略(predicate)

預選策略過濾掉不滿足條件的節(jié)點的過程。

常見的算法描述
PodFitsResources節(jié)點上剩余的資源是否大于 pod 請求的資源。
PodFitsHost如果 pod 指定了 NodeName,檢查節(jié)點名稱是否和 NodeName 匹配。
PodFitsHostPorts節(jié)點上已經使用的 port 是否和 pod 申請的 port 沖突。
PodSelectorMatches過濾掉和 pod 指定的 label 不匹配的節(jié)點。
NoDiskConflict已經 mount 的 volume 和 pod 指定的 volume 不沖突,除非它們都是只讀。

如果在 predicate 過程沒有合適的節(jié)點,pod 會一直在 Pending 狀態(tài)`,不斷重試調度,直到有節(jié)點滿足條件。

2.3 優(yōu)選策略(priorities)

**優(yōu)選策略:**對通過的節(jié)點按照優(yōu)先級排序。

優(yōu)先級由一系列鍵值對組成,鍵是該優(yōu)先級項的名稱,值是它的權重(該項的重要性)。

常見的優(yōu)先級選項描述
LeastRequestedPriority通過計算CPU和Memory的使用率來決定權重,使用率越低權重越高。也就是說,這個優(yōu)先級指標傾向于資源使用比例更低的節(jié)點。
BalancedResourceAllocation節(jié)點上 CPU 和 Memory 使用率越接近,權重越高。這個一般和上面的一起使用,不單獨使用。比如 node01 的 CPU 和 Memory 使用率 20:60,node02 的 CPU 和 Memory 使用率 50:50,雖然 node01 的總使用率比 node02 低,但 node02 的 CPU 和 Memory 使用率更接近,從而調度時會優(yōu)選 node02。
ImageLocalityPriority傾向于已經有要使用鏡像的節(jié)點,鏡像總大小值越大,權重越高。

通過算法對所有的優(yōu)先級項目和權重進行計算,得出最終的結果。

三、標簽管理

#基本語法
kubectl label <資源類型> <資源名稱> <標簽鍵>=<標簽值> [options]
字段功能
<資源類型>要添加或修改標簽的資源類型如 pod、deployment、service 等
<資源名稱>要添加或修改標簽的資源對象的名稱
<標簽鍵>=<標簽值>要添加或修改的標簽及其對應的值

3.1 查看標簽的幫助信息

kubectl label --help

在這里插入圖片描述

3.2 查看標簽信息

--show-labels選項

#基本語法
kubectl get <資源類型> [<資源名稱>]  [-n namespace] --show-labels 

舉個例子

#查看指定命名空間中所有pod的標簽
kubectl get pods  -n my-ns --show-labels

在這里插入圖片描述

3.3 添加標簽

使用 kubectl label 命令可以為資源對象添加標簽,在命令中指定資源類型、名稱和要添加的標簽及其值。

kubectl label <資源類型> <資源名稱> [-n namespce] key=value

key=value 表示要添加或修改的標簽鍵值對。

鍵(key)是一個字符串,可以是任何你指定的名字;

值(value)是一個字符串,可以是任何你指定的值。

鍵和值之間使用等號(=)連接。

舉個例子

#為名為 nginx-test1 的 Pod 添加app=backend 和 version=1.15 兩個標簽
kubectl label pod nginx-test1 -n my-ns app=backend version=1.15

在這里插入圖片描述

3.4 修改標簽

使用--overwrite選項 可以修改已存在的標簽值。

如果不使用該選項,則只會添加新標簽或更新值不同的標簽。

#基本格式
kubectl label <資源類型> <資源名稱> <標簽鍵>=<新標簽值> --overwrite

舉個例子

kubectl label pod nginx-test1 -n my-ns app=1234 version=1222 --overwrite

在這里插入圖片描述

3.5 刪除標簽

要刪除 Kubernetes 資源對象的標簽,可以使用 kubectl label 命令,將標簽值設置為空。

#基本格式
kubectl label <資源類型> <資源名稱> <標簽鍵>-

使用 -(減號)指示要刪除標簽。

刪除標簽不會刪除整個資源對象,只會刪除指定的標簽鍵和值。

舉個例子

#刪除app標簽
kubectl label pod nginx-test1 -n my-ns app-

在這里插入圖片描述

3.6 根據標簽值查找資源對象

-l選項,根據標簽值查找 Kubernetes 資源對象。

標簽選擇器支持邏輯操作符(例如逗號表示邏輯與)和等價性操作符(= 表示等于)。

#基本格式
kubectl get/describe <資源類型>  -l key[=value]

使用 kubectl get 命令和自定義選擇器查詢語句來進行更復雜的標簽篩選。

使用 kubectl describe 命令查找具有指定標簽的資源對象的詳細信息。

舉個例子

kubectl get pod  -n my-ns -l app
kubectl get pod  -n my-ns -l version

在這里插入圖片描述

kubectl describe pod  -n my-ns -l name=test1

在這里插入圖片描述

四、kubernetes對Pod的調度策略

在 Kubernetes 中,調度 是指將 Pod 放置到合適的節(jié)點上,以便對應節(jié)點上的 Kubelet 能夠運行這些 Pod。

1)定向調度: 使用 nodeName 字段指定node節(jié)點名稱;使用 nodeSelector 字段指定node節(jié)點的標簽;

2)親和性調度: 使用 節(jié)點/Pod 親和性(NodeAffinity、PodAffinity、PodAntiAffinity);

3)污點與容忍: 使用 節(jié)點設置污點,結合 Pod設置容忍。

4)全自動調度:運行在哪個節(jié)點上完全由Scheduler經過一系列的算法計算得出;

#補充,Pod和node的關系
Node 是 Kubernetes 集群中的工作節(jié)點
一個 Node 可以運行多個 Pod,而一個 Pod 只能運行在一個 Node 上
使用標簽和選擇器可以管理 Node 和 Pod 之間的關系,從而實現靈活的調度和管理。

五、定向調度

5.1 調度策略簡介

nodeName:指定節(jié)點名稱,用于將Pod調度到指定的Node上,不經過調度器。

nodeSelector:在 Pod 定義文件的 spec 下的 nodeSelector 字段中設置一個標簽選擇器,在 Pod 調度的時候,只有具有這些標簽的 Node 才會被考慮用來運行這個 Pod。

5.2 調度實例

5.2.1 通過nodeName字段

配置清單文件

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:nodeName: node02containers:- name: my-containerimage: nginx

創(chuàng)建與測試

kubectl apply -f test2.yamlkubectl get pods 

在這里插入圖片描述

5.2.2 通過nodeSelector字段

配置

1.為在 Kubernetes 集群的節(jié)點設置標簽

kubectl label nodes node01 mylabel=backend
kubectl label nodes node02 mylabel=frontend

在這里插入圖片描述

2.創(chuàng)建一個 Deployment

定義 Pod 調度策略為使用 NodeSelector,在創(chuàng)建時選擇具有 mylabel=backend 的節(jié)點上運行。

apiVersion: apps/v1
kind: Deployment
metadata:name: myapp
spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:nodeSelector:mylabel: backendcontainers:- name: myapp-containerimage: nginx

在這里插入圖片描述

kubectl apply -f test1.yaml
測試
kubectl get pods -o wide

在這里插入圖片描述

所有的 Pod 都運行在具有 mylabel=backend 的節(jié)點上。

六、親和性調度

官方文檔:將 Pod 指派給節(jié)點 | Kubernetes

kubectl explain pod.spec.affinity

在這里插入圖片描述

鍵值運算關系描述
Inlabel 的值某個列表中
NotInlabel 的值不在某個列表中
Gtlabel 的值大于某個值
Ltlabel 的值小于某個值
Exists某個 label 存在
DoesNotExist某個 label 不存在

6.1 Node親和性

節(jié)點親和性(nodeAffinity):匹配指定node節(jié)點的標簽,將要部署的Pod調度到滿足條件的node節(jié)點上

6.2 Pod親和性

Pod親和性(podAffinity):匹配指定的Pod的標簽,將要部署的Pod調度到與指定Pod所在的node節(jié)點處于同一個拓撲域的node節(jié)點上。

如果有多個node節(jié)點屬于同一個拓撲域,通過Pod親和性部署多個Pod時則調度器會試圖將Pod均衡的調度到處于同一個拓撲域的node節(jié)點上

6.3 Pod反親和性

Pod反親和性(podAntiAffinity):匹配指定的Pod的標簽,將要部署的Pod調度到與指定Pod所在的node節(jié)點處于不同的拓撲域的node節(jié)點上

如果有多個node節(jié)點不在同一個拓撲域,通過Pod反親和性部署多個Pod時則調度器會試圖將Pod均衡的調度到不在同一個拓撲域的node節(jié)點上

6.4 拓撲域

6.4.1 拓撲域的定義

拓撲域(Topology Domain)是用于描述和控制Pod調度和部署的一種機制,它基于節(jié)點的拓撲信息來限制Pod的調度位置,以滿足用戶定義的性能和資源需求。

使用拓撲域特性,可以在Pod的調度過程中指定節(jié)點的拓撲約束,這意味著可以定義一個Pod只能被調度到帶有某些特定標簽的節(jié)點上,或者避免被調度到具有某些標簽的節(jié)點上。

例如,可以指定要求一個Pod只能調度到同一個機架或同一個區(qū)域中的節(jié)點上,以滿足高可用性或數據局部性的需求。

6.4.2 如何判斷是否在同一個拓撲域?

通過拓撲域key(topologyKey)判斷。

如果有其它node節(jié)點擁有,和指定Pod所在的node節(jié)點,相同的拓撲域key的標簽key和值,那么它們就屬于同一個拓撲域。

6.5 親和性的策略

#查看字段信息
kubectl explain pod.spec.affinity.xxAffinity

在這里插入圖片描述

字段字段名描述
required…硬策略強制性的滿足條件
如果沒有滿足條件的node節(jié)點,Pod會處于Pending狀態(tài),直到有符合條件的node節(jié)點出現
preferred…軟策略非強制性的,會優(yōu)先選擇滿足條件的node節(jié)點進行調度
即使沒有滿足條件的node節(jié)點,Pod依然會完成調度

如果有多個軟策略選項的話,權重越大,優(yōu)先級越高。

如果把硬策略和軟策略合在一起使用,則要先滿足硬策略之后才會滿足軟策略。

6.6 親和性調度實例

6.6.1 node親和性

1.添加標簽

kubectl label nodes node01 disk=ssd
kubectl label nodes node02 disk=dds

在這里插入圖片描述

配置清單文件

使用節(jié)點親和性調度規(guī)則,要求將 Pod 調度到標簽為 “disk=ssd” 的節(jié)點。

vim pod1.yamlapiVersion: v1
kind: Pod
metadata:name: frontend-pod
spec:containers:- name: frontendimage: nginxaffinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: diskoperator: Invalues:- ssd

在這里插入圖片描述

創(chuàng)建并測試

kubectl apply -f pod1.yaml -n my-ns 
kubectl get pods -n my-ns -o wide

在這里插入圖片描述

6.6.2 Pod親和性

多個pod在一個節(jié)點

添加標簽

kubectl label nodes node01 app=backend
kubectl label nodes node02 app=frontend

配置清單文件

apiVersion: v1
kind: Pod
metadata:name: frontend-pod
spec:containers:- name: frontendimage: nginxaffinity:podAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: NotInvalues:- frontendtopologyKey: "kubernetes.io/hostname"
---
apiVersion: v1
kind: Pod
metadata:name: backend-pod
spec:containers:- name: backendimage: mysqlaffinity:podAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: NotInvalues:- backendtopologyKey: "kubernetes.io/hostname"

創(chuàng)建并測試

kubectl apply -f pod2.yaml -n my-ns 
kubectl get pods -n my-ns -o wide

在這里插入圖片描述

Kubernetes 將會創(chuàng)建一個具有 Pod Anti-Affinity 配置的 Deployment,確保這三個 Pod 盡量運行在不同的節(jié)點上。

6.6.3 Pod反親和性

多個pod不在同一個節(jié)點

配置清單文件

apiVersion: apps/v1
kind: Deployment
metadata:name: my-app-deployment
spec:replicas: 3selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-app-containerimage: my-app-imageaffinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: Invalues:- my-apptopologyKey: "kubernetes.io/hostname"

在這里插入圖片描述

創(chuàng)建并測試

kubectl apply -f pod3.yaml -n my-ns 
kubectl get pods -n my-ns -o wide

在這里插入圖片描述

六、污點和容忍

通過使用污點和容忍機制,可以更精確地控制Pod的調度行為,確保Pod被調度到滿足特定條件的節(jié)點上。

7.1 節(jié)點設置污點

基本概念

在 Kubernetes 中,Node(節(jié)點)上的污點(Taint)是用于標記節(jié)點的屬性,以控制 Pod(容器)在節(jié)點上的調度行為。

通過給節(jié)點打上污點,可以限制節(jié)點上可以調度的 Pod,從而實現更精細的調度策略。

污點由三個部分組成:

  • Key(鍵):標記的名稱。
  • Value(值):標記的值,可選。
  • Effect(作用):標記的作用。
污點的組成格式如下:
key=value:effect
taint effect 支持的選項描述
NoSchedule一定不會被調度表示 k8s 將不會將 Pod 調度到具有該污點的 Node 上
PreferNoSchedule盡量不被調度表示 k8s 將盡量避免將 Pod 調度到具有該污點的 Node 上
NoExecute不會被調度,并驅逐Pod表示 k8s 將不會將 Pod 調度到具有該污點

相關命令

#給節(jié)點打上污點
kubectl taint node <node名稱> key=[value]:effect#覆蓋現有的污點
kubectl taint node <node名稱> key=[value]:effect --overwrite#刪除
kubectl taint node <node名稱> key[=value:effect]-kubectl describe nodes <node名稱> | grep Taints
##舉個例子##
#給名為 `node-1` 的節(jié)點打上鍵為 `special`,值為 `true` 的污點,并設置作用為 `NoSchedule`:
kubectl taint node node-1 special=true:NoSchedule這將導致 Pod 除非聲明容忍該污點,否則不會被調度到 `node-1` 節(jié)點上。

7.2 Pod設置容忍

Pod 可以使用容忍(Toleration)來聲明對污點的容忍,以允許在具有相應污點的節(jié)點上調度。

配置清單格式

#Pod設置容忍 toleration
spec:tolerations:- key: 污點鍵名operator: Equal|Existsvalue: 污點鍵值effect: NoSchedule|PreferNoSchedule|NoExecute

相關命令

設置node節(jié)點不可調用
kubectl cordon <node名稱>
kubectl uncordon <node名稱>設置node節(jié)點不可調用并驅逐Pod
kubectl drain <node名稱> --ignore-daemonsets --force --delete-emptydir-data

7.3 調度實例

1.打上污點

kubectl taint node node01 key1=value1:NoSchedule

在這里插入圖片描述
在這里插入圖片描述

2.編寫測試清單文件

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-appimage: my-app-imagetolerations:- key: "key1"operator: "Equal"value: "value1"effect: "NoSchedule"

在這里插入圖片描述

3.測試

kubectl apply -f pod4.yaml -n my-nskubectl get pod -o wide -n my-ns

在這里插入圖片描述

八、Pod啟動階段

8.1 Pod啟動過程

0)控制器創(chuàng)建Pod副本;

1)調度器scheduler根據調度算法選擇一臺最適合的node節(jié)點調度Pod;

2)kubelet拉取鏡像;

3)kubelet掛載存儲卷等;

4)kubelet創(chuàng)建并運行容器;

5)kubelet根據容器的探針探測結果設置Pod狀態(tài)。

8.2 Pod生命周期的5種狀態(tài)

狀態(tài)描述
PendingPod已經創(chuàng)建,但是Pod還處于包括未完成調度到node節(jié)點的過程或者還處于在鏡像拉取過程中、存儲卷掛載失敗的情況
RunningPod所有容器已被創(chuàng)建,且至少有一個容器正在運行
SucceededPod所有容器都已經成功退出,且不再重啟。(completed)
FailedPod所有容器都退出,且至少有一個容器是異常退出的。(error)
Unknownmaster節(jié)點的controller manager無法獲取到Pod狀態(tài)
通常是因為master節(jié)點的apiserver與Pod所在node節(jié)點的kubelet通信失聯(lián)導致的

?

?

九、小結

9.1 理論部分

K8S是通過 List-Watch 機制實現每個組件的協(xié)作
controller manager、scheduler、kubelet 通過 List-Watch 機制監(jiān)聽 apiserver 發(fā)出的事件,apiserver 通過 List-Watch 機制監(jiān)聽 etcd 發(fā)出的事件scheduler的調度策略:
預選策略/預算策略:通過調度算法過濾掉不滿足條件的node節(jié)點;如果沒有滿足條件的node節(jié)點,Pod會處于Pending狀態(tài),直到有符合條件的node節(jié)點出現
PodFitsResources、PodFitsHost、PodFitsHostPorts、PodSelectorMatches、NoDiskConflict優(yōu)選策略:根據優(yōu)先級選項為滿足預選策略條件的node節(jié)點進行優(yōu)先級權重排序,最終選擇優(yōu)先級最高的node節(jié)點來調度Pod
LeastRequestedPriority、BalancedResourceAllocation、ImageLocalityPriority標簽的管理操作:
kubectl label <資源類型> <資源名稱> 標簽key=標簽value
kubectl label <資源類型> <資源名稱> 標簽key=標簽value --overwrite
kubectl label <資源類型> <資源名稱> 標簽key-kubectl get <資源類型> [資源名稱] --show-labels
kubectl get <資源類型> -l 標簽key[=標簽value]指定node節(jié)點調度Pod的方式:
1)使用 nodeName 字段指定node節(jié)點名稱
2)使用 nodeSelector 字段指定node節(jié)點的標簽
3)使用 節(jié)點/Pod 親和性
4)使用 節(jié)點設置污點 + Pod設置容忍親和性:
節(jié)點親和性(nodeAffinity):匹配指定node節(jié)點的標簽,將要部署的Pod調度到滿足條件的node節(jié)點上Pod親和性(podAffinity):匹配指定的Pod的標簽,將要部署的Pod調度到與指定Pod所在的node節(jié)點處于同一個拓撲域的node節(jié)點上如果有多個node節(jié)點屬于同一個拓撲域,通過Pod親和性部署多個Pod時則調度器會試圖將Pod均衡的調度到處于同一個拓撲域的node節(jié)點上Pod反親和性(podAntiAffinity):匹配指定的Pod的標簽,將要部署的Pod調度到與指定Pod所在的node節(jié)點處于不同的拓撲域的node節(jié)點上如果有多個node節(jié)點不在同一個拓撲域,通過Pod反親和性部署多個Pod時則調度器會試圖將Pod均衡的調度到不在同一個拓撲域的node節(jié)點上如何判斷是否在同一個拓撲域?
通過拓撲域key(topologyKey)判斷,如果有其它node節(jié)點擁有與指定Pod所在的node節(jié)點相同的拓撲域key的標簽key和值,那么它們就屬于同一個拓撲域親和性的策略:
硬策略(required....):要強制性的滿足條件,如果沒有滿足條件的node節(jié)點,Pod會處于Pending狀態(tài),直到有符合條件的node節(jié)點出現軟策略(preferred....):非強制性的,會優(yōu)先選擇滿足條件的node節(jié)點進行調度,即使沒有滿足條件的node節(jié)點,Pod依然會完成調度節(jié)點設置污點 taint
kubectl taint node <node名稱> key=[value]:effectNoSchedule(一定不會被調度)  PreferNoSchedule(盡量不被調度)  NoExecute(不會被調度,并驅逐Pod)kubectl taint node <node名稱> key=[value]:effect --overwritekubectl taint node <node名稱> key[=value:effect]-kubectl describe nodes <node名稱> | grep TaintsPod設置容忍 toleration
spec:tolerations:- key: 污點鍵名operator: Equal|Existsvalue: 污點鍵值effect: NoSchedule|PreferNoSchedule|NoExecute設置node節(jié)點不可調用
kubectl cordon <node名稱>
kubectl uncordon <node名稱>設置node節(jié)點不可調用并驅逐Pod
kubectl drain <node名稱> --ignore-daemonsets --force --delete-emptydir-dataPod的啟動過程:
0)控制器創(chuàng)建Pod副本
1)調度器scheduler根據調度算法選擇一臺最適合的node節(jié)點調度Pod
2)kubelet拉取鏡像
3)kubelet掛載存儲卷等
4)kubelet創(chuàng)建并運行容器
5)kubelet根據容器的探針探測結果設置Pod狀態(tài)Pod生命周期的5種狀態(tài)
Pending    Pod已經創(chuàng)建,但是Pod還處于包括未完成調度到node節(jié)點的過程或者還處于在鏡像拉取過程中、存儲卷掛載失敗的情況
Running    Pod所有容器已被創(chuàng)建,且至少有一個容器正在運行
Succeeded  Pod所有容器都已經成功退出,且不再重啟。(completed)
Failed     Pod所有容器都退出,且至少有一個容器是異常退出的。(error)
Unknown    master節(jié)點的controller manager無法獲取到Pod狀態(tài),通常是因為master節(jié)點的apiserver與Pod所在node節(jié)點的kubelet通信失聯(lián)導致的(比如kubelet本身出故障)
總結:Pod遵循預定義的生命周期,起始于Pending階段,如果至少其中有一個主容器正常運行,則進入Running階段,之后取決于Pod是否有容器以失敗狀態(tài)退出而進入Succeeded或者Failed階段。

9.2 K8s常用故障排錯流程/手段

kubectl get pods                                   查看Pod的運行狀態(tài)和就緒狀態(tài)
kubectl describe <資源類型|pods> <資源名稱>        查看資源的詳細信息和事件描述,主要是針對沒有進入Running階段的排查手段
kubectl logs <pod名稱> -c <容器名稱> [-p]          查看Pod容器的進程日志,主要是針對進入Running階段后的排查手段
kubectl exec -it <pod名稱> -c <容器名稱> sh|bash   進入Pod容器查看容器內部相關的(進程、端口、文件等)狀態(tài)信息
kubectl debug -it <pod名稱> --image=<臨時容器的鏡像名> --target=<目標容器>    在Pod中創(chuàng)建臨時容器進入目標容器進行調試,主要是針對沒有調試工具的容器使用
nsenter -n --target <容器pid>                      在Pod容器的宿主機使用nsenter轉換網絡命名空間,直接在宿主機進入目標容器的網絡命名空間進行抓包等調試kubectl get nodes           查看node節(jié)點運行狀態(tài)
kubectl describe nodes      查看node節(jié)點詳細信息和資源描述
kubectl get cs              查看master組件的健康狀態(tài)
kubectl cluster-info        查看集群信息journalctl -u kubelet -f    跟蹤查看kubelet進程日志
http://www.risenshineclean.com/news/38145.html

相關文章:

  • 衡水網站建設服務廣告聯(lián)盟有哪些
  • 廣州移動 網站建設今日特大新聞
  • 如何做高校的網站版面設計品牌宣傳策略
  • 做網站需要續(xù)費嗎深圳seo優(yōu)化外包
  • 德州哪里有做網站推廣的深圳seo優(yōu)化排名優(yōu)化
  • 網站建設需要精通什么知識網絡推廣的優(yōu)勢有哪些
  • 個人可以做幾個網站嗎百度快照是什么意思?
  • 網站開發(fā)與網站建設精準獲客
  • 網站 建設網站市場調研分析
  • 廈門做網站個人蘇州做網站的專業(yè)公司
  • 網站建設需要什么資料智能營銷方法
  • 松江新城投資建設集團有限公司網站網絡營銷第三版課本
  • 龍崗做網站的公司源碼之家
  • 網站建設到運營需要多少錢怎樣在百度上做廣告
  • 做品牌網站公司淄博網站營銷與推廣
  • 臺州專業(yè)網站設計系統(tǒng)網絡推廣有哪幾種方法
  • 做網站品牌怎么注冊自己公司的網址
  • 舟山市城鄉(xiāng)建設委員會網站seo搜索引擎優(yōu)化是通過優(yōu)化答案
  • 什么網站可以做自考試題seo教育
  • 品牌網站建設多少錢品牌推廣策略分析
  • 網站怎樣才有流量seo是指搜索引擎營銷
  • 深圳設計裝修公司哪家好百度關鍵詞優(yōu)化培訓
  • 合肥最好的網站建設公司化妝培訓
  • 上海松江做網站多少錢怎么做百度推廣平臺
  • 網站開發(fā)流程百度文庫北京關鍵詞優(yōu)化報價
  • 天津網站建設價格培訓課程安排
  • 小縣城做網站百度推廣平臺收費標準
  • 外貿cms 網站app推廣聯(lián)盟平臺
  • 廣州手機軟件開發(fā)制作初學seo網站推廣需要怎么做
  • 企業(yè)專屬網頁免費刷seo