国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

k8s之親和性、污點

這篇具有很好參考價值的文章主要介紹了k8s之親和性、污點。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

親和性

鍵值運算關(guān)系

硬策略

軟策略

Pod親和性與反親和性

污點(Taint) 和 容忍(Tolerations)

污點(Taint)?

容忍(Tolerations)

維護(hù)操作

故障排除步驟


親和性

官方介紹:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/

(1)節(jié)點親和性
pod.spec.nodeAffinity
●preferredDuringSchedulingIgnoredDuringExecution:軟策略
●requiredDuringSchedulingIgnoredDuringExecution:硬策略

(2)Pod 親和性
pod.spec.affinity.podAffinity/podAntiAffinity
●preferredDuringSchedulingIgnoredDuringExecution:軟策略
●requiredDuringSchedulingIgnoredDuringExecution:硬策略


可以把自己理解成一個Pod,當(dāng)你報名來學(xué)云計算,如果你更傾向去zhangsan老師帶的班級,把不同老師帶的班級當(dāng)作一個node的話,這個就是節(jié)點親和性。如果你是必須要去zhangsan老師帶的班級,這就是硬策略;而你說你想去并且最好能去zhangsan老師帶的班級,這就是軟策略。
如果你有一個很好的朋友叫l(wèi)isi,你傾向和lisi同學(xué)在同一個班級,這個就是Pod親和性。如果你一定要去lisi同學(xué)在的班級,這就是硬策略;而你說你想去并且最好能去lisi同學(xué)在的班級,這就是軟策略。軟策略是不去也可以,硬策略則是不去就不行。

鍵值運算關(guān)系

●In:label 的值在某個列表中 ?pending
●NotIn:label 的值不在某個列表中
●Gt:label 的值大于某個值
●Lt:label 的值小于某個值
●Exists:某個 label 存在
●DoesNotExist:某個 label 不存在

kubectl get nodes --show-labels

k8s之親和性、污點,kubernetes,容器,云原生

硬策略

requiredDuringSchedulingIgnoredDuringExecution? ? ? ?硬策略

mkdir /opt/affinity
cd /opt/affinity

vim pod1.yaml
apiVersion: v1
kind: Pod
metadata:
? name: affinity
? labels:
? ? app: node-affinity-pod
spec:
? containers:
? - name: with-node-affinity
? ? image: soscscs/myapp:v1
? affinity:
? ? nodeAffinity:
? ? ? requiredDuringSchedulingIgnoredDuringExecution:
? ? ? ? nodeSelectorTerms:
? ? ? ? - matchExpressions:
? ? ? ? ? - key: kubernetes.io/hostname ? ?#指定node的標(biāo)簽
? ? ? ? ? ? operator: NotIn ? ? #設(shè)置Pod安裝到kubernetes.io/hostname的標(biāo)簽值不在values列表中的node上
? ? ? ? ? ? values:
? ? ? ? ? ? - node02


kubectl apply -f pod1.yaml

kubectl get pods -o wide
NAME ? ? ? READY ? STATUS ? ?RESTARTS ? AGE ? IP ? ? ? ? ? ?NODE ? ? NOMINATED NODE ? READINESS GATES
affinity ? 1/1 ? ? Running ? 0 ? ? ? ? ?13s ? 10.244.1.30 ? node01 ? <none> ? ? ? ? ? <none>

kubectl delete pod --all && kubectl apply -f pod1.yaml && kubectl get pods -o wide

#如果硬策略不滿足條件,Pod 狀態(tài)一直會處于 Pending 狀態(tài)。

軟策略

preferredDuringSchedulingIgnoredDuringExecution? 軟策略

vim pod2.yaml
apiVersion: v1
kind: Pod
metadata:
? name: affinity
? labels:
? ? app: node-affinity-pod
spec:
? containers:
? - name: with-node-affinity
? ? image: soscscs/myapp:v1
? affinity:
? ? nodeAffinity:
? ? ? preferredDuringSchedulingIgnoredDuringExecution:
? ? ? - weight: 1 ? #如果有多個軟策略選項的話,權(quán)重越大,優(yōu)先級越高
? ? ? ? preference:
? ? ? ? ? matchExpressions:
? ? ? ? ? - key: kubernetes.io/hostname
? ? ? ? ? ? operator: In
? ? ? ? ? ? values:
? ? ? ? ? ? - node03


kubectl apply -f pod2.yaml

kubectl get pods -o wide
NAME ? ? ? READY ? STATUS ? ?RESTARTS ? AGE ? IP ? ? ? ? ? ?NODE ? ? NOMINATED NODE ? READINESS GATES
affinity ? 1/1 ? ? Running ? 0 ? ? ? ? ?5s ? ?10.244.2.35 ? node02 ? <none> ? ? ? ? ? <none>

//把values:的值改成node01,則會優(yōu)先在node01上創(chuàng)建Pod
kubectl delete pod --all && kubectl apply -f pod2.yaml && kubectl get pods -o wide

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

apiVersion: v1
kind: Pod
metadata:
? name: affinity
? labels:
? ? app: node-affinity-pod
spec:
? containers:
? - name: with-node-affinity
? ? image: soscscs/myapp:v1
? affinity:
? ? nodeAffinity:
? ? ? requiredDuringSchedulingIgnoredDuringExecution: ? #先滿足硬策略,排除有kubernetes.io/hostname=node02標(biāo)簽的節(jié)點
? ? ? ? nodeSelectorTerms:
? ? ? ? - matchExpressions:
? ? ? ? ? - key: kubernetes.io/hostname
? ? ? ? ? ? operator: NotIn
? ? ? ? ? ? values:
? ? ? ? ? ? - node02
? ? ? preferredDuringSchedulingIgnoredDuringExecution: ?#再滿足軟策略,優(yōu)先選擇有kgc=a標(biāo)簽的節(jié)點
?? ? ?- weight: 1
? ? ? ? preference:
? ? ? ? ? matchExpressions:
? ? ? ? ? - key: kgc
? ? ? ? ? ? operator: In
? ? ? ? ? ? values:
? ? ? ? ? ? - a

Pod親和性與反親和性

調(diào)度策略 ?匹配標(biāo)簽 操作符? 拓?fù)溆蛑С?/td> ?調(diào)度目標(biāo)
nodeAffinity ?主機? In, NotIn, Exists,DoesNotExist, Gt, Lt? 指定主機
podAffinity Pod? In, NotIn, Exists,DoesNotExist Pod與指定Pod同一拓?fù)溆?/td>
podAntiAffinity Pod In, NotIn, Exists,DoesNotExist Pod與指定Pod不在同一拓?fù)溆?/td>

kubectl label nodes node01 kgc=a
kubectl label nodes node02 kgc=a

//創(chuàng)建一個標(biāo)簽為 app=myapp01 的 Pod

vim pod3.yaml
apiVersion: v1
kind: Pod
metadata:
? name: myapp01
? labels:
? ? app: myapp01
spec:
? containers:
? - name: with-node-affinity
? ? image: soscscs/myapp:v1
?? ?

kubectl apply -f pod3.yaml

kubectl get pods --show-labels -o wide
NAME ? ? ?READY ? STATUS ? ?RESTARTS ? AGE ? IP ? ? ? ? ? NODE ? ? NOMINATED NODE ? READINESS GATES ? LABELS
myapp01 ? 1/1 ? ? Running ? 0 ? ? ? ? ?37s ? 10.244.2.3 ? node01 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp01

//使用 Pod 親和性調(diào)度,創(chuàng)建多個 Pod 資源

vim pod4.yaml
apiVersion: v1
kind: Pod
metadata:
? name: myapp02
? labels:
? ? app: myapp02
spec:
? containers:
? - name: myapp02
? ? image: soscscs/myapp:v1
? affinity:
? ? podAffinity:
? ? ? requiredDuringSchedulingIgnoredDuringExecution:
? ? ? - labelSelector:
? ? ? ? ? matchExpressions:
? ? ? ? ? - key: app
? ? ? ? ? ? operator: In
? ? ? ? ? ? values:
? ? ? ? ? ? - myapp01
? ? ? ? topologyKey: kgc


?? ??? ?
#僅當(dāng)節(jié)點和至少一個已運行且有鍵為“app”且值為“myapp01”的標(biāo)簽 的 Pod 處于同一拓?fù)溆驎r,才可以將該 Pod 調(diào)度到節(jié)點上。 (更確切的說,如果節(jié)點 N 具有帶有鍵 kgc 和某個值 V 的標(biāo)簽,則 Pod 有資格在節(jié)點 N 上運行,以便集群中至少有一個具有鍵 kgc 和值為 V 的節(jié)點正在運行具有鍵“app”和值 “myapp01”的標(biāo)簽的 pod。)
#topologyKey 是節(jié)點標(biāo)簽的鍵。如果兩個節(jié)點使用此鍵標(biāo)記并且具有相同的標(biāo)簽值,則調(diào)度器會將這兩個節(jié)點視為處于同一拓?fù)溆蛑小?調(diào)度器試圖在每個拓?fù)溆蛑蟹胖脭?shù)量均衡的 Pod。
#如果?kgc?對應(yīng)的值不一樣就是不同的拓?fù)溆?。比?Pod1 在?kgc=a?的 Node 上,Pod2 在?kgc=b?的 Node 上,Pod3 在?kgc=a?的 Node 上,則 Pod2 和 Pod1、Pod3 不在同一個拓?fù)溆颍鳳od1 和 Pod3在同一個拓?fù)溆颉?/p>

kubectl apply -f pod4.yaml

kubectl get pods --show-labels -o wide
NAME ? ? ?READY ? STATUS ? ?RESTARTS ? AGE ? IP ? ? ? ? ? NODE ? ? NOMINATED NODE ? READINESS GATES ? LABELS
myapp01 ? 1/1 ? ? Running ? 0 ? ? ? ? ?15m ? 10.244.1.3 ? node01 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp01
myapp02 ? 1/1 ? ? Running ? 0 ? ? ? ? ?8s ? ?10.244.1.4 ? node01 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp02
myapp03 ? 1/1 ? ? Running ? 0 ? ? ? ? ?52s ? 10.244.2.53 ?node02 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp03
myapp04 ? 1/1 ? ? Running ? 0 ? ? ? ? ?44s ? 10.244.1.51 ?node01 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp03
myapp05 ? 1/1 ? ? Running ? 0 ? ? ? ? ?38s ? 10.244.2.54 ?node02 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp03
myapp06 ? 1/1 ? ? Running ? 0 ? ? ? ? ?30s ? 10.244.1.52 ?node01 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp03
myapp07 ? 1/1 ? ? Running ? 0 ? ? ? ? ?24s ? 10.244.2.55 ?node02 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp03

//使用 Pod 反親和性調(diào)度
示例1:

vim pod5.yaml
apiVersion: v1
kind: Pod
metadata:
? name: myapp10
? labels:
? ? app: myapp10
spec:
? containers:
? - name: myapp10
? ? image: soscscs/myapp:v1
? affinity:
? ? podAntiAffinity:
? ? ? preferredDuringSchedulingIgnoredDuringExecution:
? ? ? - weight: 100
? ? ? ? podAffinityTerm:
? ? ? ? ? labelSelector:
? ? ? ? ? ? matchExpressions:
? ? ? ? ? ? - key: app
? ? ? ? ? ? ? operator: In
? ? ? ? ? ? ? values:
? ? ? ? ? ? ? - myapp01
? ? ? ? ? topologyKey: kubernetes.io/hostname

#如果節(jié)點處于 Pod 所在的同一拓?fù)溆蚯揖哂墟I“app”和值“myapp01”的標(biāo)簽, 則該 pod 不應(yīng)將其調(diào)度到該節(jié)點上。 (如果 topologyKey 為 kubernetes.io/hostname,則意味著當(dāng)節(jié)點和具有鍵 “app”和值“myapp01”的 Pod 處于相同的拓?fù)溆颍琍od 不能被調(diào)度到該節(jié)點上。)

kubectl apply -f pod5.yaml

kubectl get pods --show-labels -o wide
NAME ? ? ?READY ? STATUS ? ?RESTARTS ? AGE ? IP ? ? ? ? ? NODE ? ? NOMINATED NODE ? READINESS GATES ? LABELS
myapp01 ? 1/1 ? ? Running ? 0 ? ? ? ? ?44m ? 10.244.1.3 ? node01 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp01
myapp02 ? 1/1 ? ? Running ? 0 ? ? ? ? ?29m ? 10.244.1.4 ? node01 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp02
myapp10 ? 1/1 ? ? Running ? 0 ? ? ? ? ?75s ? 10.244.2.4 ? node02 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp03


示例2:

vim pod6.yaml
apiVersion: v1
kind: Pod
metadata:
? name: myapp20
? labels:
? ? app: myapp20
spec:
? containers:
? - name: myapp20
? ? image: soscscs/myapp:v1
? affinity:
? ? podAntiAffinity:
? ? ? requiredDuringSchedulingIgnoredDuringExecution:
? ? ? - labelSelector:
? ? ? ? ? matchExpressions:
? ? ? ? ? - key: app
? ? ? ? ? ? operator: In
? ? ? ? ? ? values:
? ? ? ? ? ? - myapp01
? ? ? ? topologyKey: kgc


?? ??? ?
//由于指定 Pod 所在的 node01 節(jié)點上具有帶有鍵 kgc 和標(biāo)簽值 a 的標(biāo)簽,node02 也有這個kgc=a的標(biāo)簽,所以 node01 和 node02 是在一個拓?fù)溆蛑?,反親和要求新 Pod 與指定 Pod 不在同一拓?fù)溆颍孕?Pod 沒有可用的 node 節(jié)點,即為 Pending 狀態(tài)。
kubectl get pod --show-labels -owide
NAME ? ? ? ? ?READY ? STATUS ? ?RESTARTS ? AGE ? ? IP ? ? ? ? ? ?NODE ? ? NOMINATED NODE ? READINESS GATES ? LABELS
myapp01 ? ? ? 1/1 ? ? Running ? 0 ? ? ? ? ?43s ? ? 10.244.1.68 ? node01 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp01
myapp20 ? ? ? 0/1 ? ? Pending ? 0 ? ? ? ? ?4s ? ? ?<none> ? ? ? ?<none> ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp03

kubectl label nodes node02 kgc=b --overwrite

kubectl get pod --show-labels -o wide
NAME ? ? ? ? ?READY ? STATUS ? ?RESTARTS ? AGE ? ? IP ? ? ? ? ? ?NODE ? ? NOMINATED NODE ? READINESS GATES ? LABELS
myapp01 ? ? ? 1/1 ? ? Running ? 0 ? ? ? ? ?7m40s ? 10.244.1.68 ? node01 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp01
myapp21 ? ? ? 1/1 ? ? Running ? 0 ? ? ? ? ?7m1s ? ?10.244.2.65 ? node02 ? <none> ? ? ? ? ? <none> ? ? ? ? ? ?app=myapp03

污點(Taint) 和 容忍(Tolerations)

污點(Taint)?

節(jié)點親和性,是Pod的一種屬性(偏好或硬性要求),它使Pod被吸引到一類特定的節(jié)點。Taint 則相反,它使節(jié)點能夠排斥一類特定的 Pod。
Taint 和 Toleration 相互配合,可以用來避免 Pod 被分配到不合適的節(jié)點上。每個節(jié)點上都可以應(yīng)用一個或多個 taint ,這表示對于那些不能容忍這些 taint 的 Pod,是不會被該節(jié)點接受的。如果將 toleration 應(yīng)用于 Pod 上,則表示這些 Pod 可以(但不一定)被調(diào)度到具有匹配 taint 的節(jié)點上。

使用 kubectl taint 命令可以給某個 Node 節(jié)點設(shè)置污點,Node 被設(shè)置上污點之后就和 Pod 之間存在了一種相斥的關(guān)系,可以讓 Node 拒絕 Pod 的調(diào)度執(zhí)行,甚至將 Node 已經(jīng)存在的 Pod 驅(qū)逐出去。

污點的組成格式如下:
key=value:effect

每個污點有一個 key 和 value 作為污點的標(biāo)簽,其中 value 可以為空,effect 描述污點的作用。

當(dāng)前 taint effect 支持如下三個選項:
●NoSchedule:表示 k8s 將不會將 Pod 調(diào)度到具有該污點的 Node 上
●PreferNoSchedule:表示 k8s 將盡量避免將 Pod 調(diào)度到具有該污點的 Node 上
●NoExecute:表示 k8s 將不會將 Pod 調(diào)度到具有該污點的 Node 上,同時會將 Node 上已經(jīng)存在的 Pod 驅(qū)逐出去

kubectl get nodes
NAME ? ? STATUS ? ROLES ? ?AGE ? VERSION
master ? Ready ? ?master ? 11d ? v1.20.11
node01 ? Ready ? ?<none> ? 11d ? v1.20.11
node02 ? Ready ? ?<none> ? 11d ? v1.20.11

//master 就是因為有 NoSchedule 污點,k8s 才不會將 Pod 調(diào)度到 master 節(jié)點上
kubectl describe node master
......
Taints: ? ? ? ? ? ? node-role.kubernetes.io/master:NoSchedule


#設(shè)置污點
kubectl taint node node01 key1=value1:NoSchedule

#節(jié)點說明中,查找 Taints 字段
kubectl describe node node-name ?

#去除污點
kubectl taint node node01 key1:NoSchedule-


kubectl get pods -o wide
NAME ? ? ?READY ? STATUS ? ?RESTARTS ? AGE ? ? IP ? ? ? ? ? NODE ? ? NOMINATED NODE ? READINESS GATES
myapp01 ? 1/1 ? ? Running ? 0 ? ? ? ? ?4h28m ? 10.244.2.3 ? node02 ? <none> ? ? ? ? ? <none>
myapp02 ? 1/1 ? ? Running ? 0 ? ? ? ? ?4h13m ? 10.244.2.4 ? node02 ? <none> ? ? ? ? ? <none>
myapp03 ? 1/1 ? ? Running ? 0 ? ? ? ? ?3h45m ? 10.244.1.4 ? node01 ? <none> ? ? ? ? ? <none>

kubectl taint node node02 check=mycheck:NoExecute

//查看 Pod 狀態(tài),會發(fā)現(xiàn) node02 上的 Pod 已經(jīng)被全部驅(qū)逐(注:如果是 Deployment 或者 StatefulSet 資源類型,為了維持副本數(shù)量則會在別的 Node 上再創(chuàng)建新的 Pod)
kubectl get pods -o wide
NAME ? ? ?READY ? STATUS ? ?RESTARTS ? AGE ? ? IP ? ? ? ? ? NODE ? ? NOMINATED NODE ? READINESS GATES
myapp03 ? 1/1 ? ? Running ? 0 ? ? ? ? ?3h48m ? 10.244.1.4 ? node01 ? <none> ? ? ? ? ? <none>

容忍(Tolerations)

設(shè)置了污點的 Node 將根據(jù) taint 的 effect:NoSchedule、PreferNoSchedule、NoExecute 和 Pod 之間產(chǎn)生互斥的關(guān)系,Pod 將在一定程度上不會被調(diào)度到 Node 上。但我們可以在 Pod 上設(shè)置容忍(Tolerations),意思是設(shè)置了容忍的 Pod 將可以容忍污點的存在,可以被調(diào)度到存在污點的 Node 上。

kubectl taint node node01 check=mycheck:NoExecute

vim pod3.yaml
?
?? ?
kubectl apply -f pod3.yaml

//在兩個 Node 上都設(shè)置了污點后,此時 Pod 將無法創(chuàng)建成功
kubectl get pods -o wide
NAME ? ? ?READY ? STATUS ? ?RESTARTS ? AGE ? IP ? ? ? NODE ? ? NOMINATED NODE ? READINESS GATES
myapp01 ? 0/1 ? ? Pending ? 0 ? ? ? ? ?17s ? <none> ? <none> ? <none> ? ? ? ? ? <none>

vim pod3.yaml
apiVersion: v1
kind: Pod
metadata:
? name: myapp01
? labels:
? ? app: myapp01
spec:
? containers:
? - name: with-node-affinity
? ? image: soscscs/myapp:v1
? tolerations:
? - key: "check"
? ? operator: "Equal"
? ? value: "mycheck"
? ? effect: "NoExecute"
? ? tolerationSeconds: 3600


?? ?#其中的 key、vaule、effect 都要與 Node 上設(shè)置的 taint 保持一致
#operator 的值為 Exists 將會忽略 value 值,即存在即可
#tolerationSeconds 用于描述當(dāng) Pod 需要被驅(qū)逐時可以在 Node 上繼續(xù)保留運行的時間

kubectl apply -f pod3.yaml

//在設(shè)置了容忍之后,Pod 創(chuàng)建成功
kubectl get pods -o wide
NAME ? ? ?READY ? STATUS ? ?RESTARTS ? AGE ? IP ? ? ? ? ? NODE ? ? NOMINATED NODE ? READINESS GATES
myapp01 ? 1/1 ? ? Running ? 0 ? ? ? ? ?10m ? 10.244.1.5 ? node01 ? <none> ? ? ? ? ? <none>

//其它注意事項
(1)當(dāng)不指定 key 值時,表示容忍所有的污點 key
? tolerations:
? - operator: "Exists"
??
(2)當(dāng)不指定 effect 值時,表示容忍所有的污點作用
? tolerations:
? - key: "key"
? ? operator: "Exists"

(3)有多個 Master 存在時,防止資源浪費,可以如下設(shè)置
kubectl taint node Master-Name node-role.kubernetes.io/master=:PreferNoSchedule

//如果某個 Node 更新升級系統(tǒng)組件,為了防止業(yè)務(wù)長時間中斷,可以先在該 Node 設(shè)置 NoExecute 污點,把該 Node 上的 Pod 都驅(qū)逐出去
kubectl taint node node01 check=mycheck:NoExecute

//此時如果別的 Node 資源不夠用,可臨時給 Master 設(shè)置 PreferNoSchedule 污點,讓 Pod 可在 Master 上臨時創(chuàng)建
kubectl taint node master node-role.kubernetes.io/master=:PreferNoSchedule

//待所有 Node 的更新操作都完成后,再去除污點
kubectl taint node node01 check=mycheck:NoExecute-

維護(hù)操作

//cordon 和 drain
##對節(jié)點執(zhí)行維護(hù)操作:
kubectl get nodes

//將 Node 標(biāo)記為不可調(diào)度的狀態(tài),這樣就不會讓新創(chuàng)建的 Pod 在此 Node 上運行
kubectl cordon <NODE_NAME> ?? ??? ? #該node將會變?yōu)镾chedulingDisabled狀態(tài)

//kubectl drain 可以讓 Node 節(jié)點開始釋放所有 pod,并且不接收新的 pod 進(jìn)程。drain 本意排水,意思是將出問題的 Node 下的 Pod 轉(zhuǎn)移到其它 Node 下運行
kubectl drain <NODE_NAME> --ignore-daemonsets --delete-local-data --force

--ignore-daemonsets:無視 DaemonSet 管理下的 Pod。
--delete-local-data:如果有 mount local volume 的 pod,會強制殺掉該 pod。
--force:強制釋放不是控制器管理的 Pod,例如 kube-proxy。

注:執(zhí)行 drain 命令,會自動做了兩件事情:
(1)設(shè)定此 node 為不可調(diào)度狀態(tài)(cordon)
(2)evict(驅(qū)逐)了 Pod

//kubectl uncordon 將 Node 標(biāo)記為可調(diào)度的狀態(tài)
kubectl uncordon <NODE_NAME>


//Pod啟動階段(相位 phase)
Pod 創(chuàng)建完之后,一直到持久運行起來,中間有很多步驟,也就有很多出錯的可能,因此會有很多不同的狀態(tài)。
一般來說,pod 這個過程包含以下幾個步驟:
(1)調(diào)度到某臺 node 上。kubernetes 根據(jù)一定的優(yōu)先級算法選擇一臺 node 節(jié)點將其作為 Pod 運行的 node
(2)拉取鏡像
(3)掛載存儲配置等
(4)運行起來。如果有健康檢查,會根據(jù)檢查的結(jié)果來設(shè)置其狀態(tài)。

phase 的可能狀態(tài)有:
●Pending:表示APIServer創(chuàng)建了Pod資源對象并已經(jīng)存入了etcd中,但是它并未被調(diào)度完成(比如還沒有調(diào)度到某臺node上),或者仍然處于從倉庫下載鏡像的過程中。

●Running:Pod已經(jīng)被調(diào)度到某節(jié)點之上,并且Pod中所有容器都已經(jīng)被kubelet創(chuàng)建。至少有一個容器正在運行,或者正處于啟動或者重啟狀態(tài)(也就是說Running狀態(tài)下的Pod不一定能被正常訪問)。

●Succeeded:有些pod不是長久運行的,比如job、cronjob,一段時間后Pod中的所有容器都被成功終止,并且不會再重啟。需要反饋任務(wù)執(zhí)行的結(jié)果。

●Failed:Pod中的所有容器都已終止了,并且至少有一個容器是因為失敗終止。也就是說,容器以非0狀態(tài)退出或者被系統(tǒng)終止,比如 command 寫的有問題。

●Unknown:表示無法讀取 Pod 狀態(tài),通常是 kube-controller-manager 無法與 Pod 通信。

故障排除步驟

//查看Pod事件
kubectl describe TYPE NAME_PREFIX ?

//查看Pod日志(Failed狀態(tài)下)
kubectl logs <POD_NAME> [-c Container_NAME]

//進(jìn)入Pod(狀態(tài)為running,但是服務(wù)沒有提供)
kubectl exec –it <POD_NAME> bash

//查看集群信息
kubectl get nodes

//發(fā)現(xiàn)集群狀態(tài)正常
kubectl cluster-info

//查看kubelet日志發(fā)現(xiàn)
journalctl -xefu kubelet


?文章來源地址http://www.zghlxwxcb.cn/news/detail-741553.html

到了這里,關(guān)于k8s之親和性、污點的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • k8s中pod的親和性與反親和性

    一、節(jié)點選擇 nodeSelector 提供了一個非常簡單的方式,將 Pod 限定到包含特定標(biāo)簽的節(jié)點上。親和性與反親和性(affinity / anti-affinity)特性則極大地擴展了限定的表達(dá)方式。主要的增強點在于: 表達(dá)方式更加有效(不僅僅是多個精確匹配表達(dá)式的“和”關(guān)系) 可以標(biāo)識該規(guī)則

    2024年01月21日
    瀏覽(21)
  • k8s~節(jié)點的親和性

    在Kubernetes中,你可以使用節(jié)點親和性(Node Affinity)來控制Pod部署在哪些節(jié)點上。通過配置節(jié)點親和性,你可以指定一些規(guī)則,以確保多個服務(wù)不會被調(diào)度到同一個節(jié)點上。 requiredDuringSchedulingIgnoredDuringExecution:通過 requiredDuringSchedulingIgnoredDuringExecution ,可以定義在調(diào)度期間必

    2024年02月13日
    瀏覽(23)
  • 22-k8s中pod的調(diào)度-親和性affinity

    22-k8s中pod的調(diào)度-親和性affinity

    ? ? ? ? 在k8s當(dāng)中,“親和性”分為三種,節(jié)點親和性、pod親和性、pod反親和性; 親和性分類 名稱 解釋說明 nodeAffinity 節(jié)點親和性 通過【節(jié)點】標(biāo)簽匹配,用于控制pod調(diào)度到哪些node節(jié)點上,以及不能調(diào)度到哪些node節(jié)點上;(主角node節(jié)點) podAffinity pod親和性 通過【節(jié)點+

    2024年02月20日
    瀏覽(26)
  • K8s之標(biāo)簽、Node選擇器與親和性詳解

    K8s之標(biāo)簽、Node選擇器與親和性詳解

    1、標(biāo)簽是什么? 標(biāo)簽其實就是一對key/value,key的值必須唯一 標(biāo)簽可以在創(chuàng)建一個對象的時候直接定義,也可以在后期隨時修改,每一個對象可以擁有多個標(biāo)簽 標(biāo)簽可以用來劃分特定的對象(比如版本,服務(wù)類型等) 創(chuàng)建標(biāo)簽后,方便我們對資源進(jìn)行分組管理(通過標(biāo)簽查

    2024年02月07日
    瀏覽(27)
  • Kubernetes親和性學(xué)習(xí)筆記

    Kubernetes親和性學(xué)習(xí)筆記

    這里分類和匯總了欣宸的全部原創(chuàng)(含配套源碼):https://github.com/zq2599/blog_demos 本文是欣宸在學(xué)習(xí)Kubernetes調(diào)度器的過程中,對親和性相關(guān)知識點的整理和總結(jié),這是一篇筆記性質(zhì)的博客 調(diào)度過程如下: 預(yù)選(Predicates) 優(yōu)選(Priorities) 選定(Select) 這里將親和性先分類,便

    2024年02月17日
    瀏覽(47)
  • K8s的親和、反親和、污點、容忍

    K8s的親和、反親和、污點、容忍

    親和性的原理其實很簡單,主要利用label標(biāo)簽結(jié)合nodeSelector選擇器來實現(xiàn) 從pod出發(fā),可以分成親和性和反親和性,分別對應(yīng)podAffinity和podAntiAffinity。 從node出發(fā),也可以分成親和性和反親和性,分別對應(yīng)nodeAffinity和nodeAntiAffinity。 從操作指令來講,可以有l(wèi)n、Notln、Exists、DoesN

    2024年04月27日
    瀏覽(25)
  • 【k8s】pod調(diào)度——親和,反親和,污點,容忍

    【k8s】pod調(diào)度——親和,反親和,污點,容忍

    官方網(wǎng)址:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/ pod.spec.nodeAffinity ●preferredDuringSchedulingIgnoredDuringExecution:軟策略? p開頭 ●requiredDuringSchedulingIgnoredDuringExecution:硬策略? r開頭 pod.spec.affinity.podAffinity/podAntiAffinity ●preferredDuringSchedulingIgnoredDuringExecution:軟策

    2024年02月05日
    瀏覽(27)
  • pod的親和性和反親和性

    pod的親和性和反親和性

    調(diào)度策略: ??????匹配標(biāo)簽 ???????操作符 ?????????????拓?fù)溆???調(diào)度目標(biāo) node的親和性 ???主機標(biāo)簽 ?In Notin exists doesexists Gt Lt ?不支持 ??指定主機 pod的親和性 ????pod的標(biāo)簽 In Notin exists doesexists ?????支持 ??pod和指定標(biāo)簽的pod部署在同一拓?fù)溆?pod的反親

    2024年01月23日
    瀏覽(22)
  • 容器化進(jìn)階Kubernetes(K8S)詳解

    容器化進(jìn)階Kubernetes(K8S)詳解

    1.1.1 Kubernetes是什么及作用 Kubernetes(K8S)是Google在2014年發(fā)布的一個開源項目,用于自動化容器化應(yīng)用程序的部署、擴展和管理。 Kubernetes通常結(jié)合docker容器工作,并且整合多個運行著docker容器的主機集群。 官網(wǎng)地址?Kubernetes 中文社區(qū) Kubernetes(k8s)中文文檔 目錄_Kubernetes中文社

    2024年02月05日
    瀏覽(34)
  • 容器技術(shù),1. Docker,2. Kubernetes(K8s):

    容器技術(shù),1. Docker,2. Kubernetes(K8s):

    目錄 容器技術(shù) 1. Docker: 2. Kubernetes(K8s): Docker和Kubernetes 容器的主要應(yīng)用場景有哪些? 有效的將單個操作系統(tǒng)的資源劃分到孤立的組中,以便更好的在孤立的組之間平衡有沖突的資源使用需求,這種技術(shù)就是容器技術(shù)。 容器技術(shù)指通過在物理主機操作系統(tǒng)上創(chuàng)建一個一個

    2024年02月11日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包