溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

kubernetes--調(diào)度約束

發(fā)布時(shí)間:2020-08-04 05:36:51 來源:網(wǎng)絡(luò) 閱讀:152 作者:caozhengtao1213 欄目:云計(jì)算

基本原理

kubernetes通過watch的機(jī)制進(jìn)行每個(gè)組件的協(xié)作,每個(gè)組件之間的設(shè)計(jì)實(shí)現(xiàn)了解耦.

調(diào)度方式

nodeName用于將Pod調(diào)度到指定的Node名稱上,跳過調(diào)度器直接分配.

nodeSelector用于將Pod調(diào)度到匹配Label的Node上,前提是node要有標(biāo)簽.

kubernetes--調(diào)度約束

原理詳解

圖中左上角的運(yùn)維人員往節(jié)點(diǎn)中創(chuàng)建一個(gè)nginx資源.

API Server和etcd和Scheduler是master.

Kubelet和Docker是node節(jié)點(diǎn).

API Server做為唯一入口,接受create創(chuàng)建資源的屬性信息寫入到etcd中(屬性信息:名稱,鏡像名稱,限制條件),
etcd完善發(fā)現(xiàn)機(jī)制(watch)給Scheduler調(diào)度器(查看那個(gè)節(jié)點(diǎn)適合),然后綁定相關(guān)pod的網(wǎng)絡(luò)信息,
反饋給API Server,收到信息后api寫入etcd中,此時(shí)etcd存儲(chǔ)了pod的網(wǎng)絡(luò)信息(IP),node1、中的kubelet會(huì)管理pod資源,
會(huì)觸發(fā)容器的創(chuàng)建命令,安裝完成后docker就會(huì)反饋狀態(tài)信息給API Server,當(dāng)API Server收到狀態(tài)信息寫入到etcd中.

API Server相當(dāng)于是平臺(tái)中的管理員,負(fù)責(zé)記錄相關(guān)信息,

etcd相當(dāng)于管理員的記事本,相關(guān)信息內(nèi)容寫在其中,

如果API Server掛了,那么k8s基本上就癱瘓了.

范例演示-nodeName

  • 編輯yaml文件
vim pod5.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-example
  labels:
    app: nginx
spec:
  nodeName: 192.168.142.131
  #指定給node1節(jié)點(diǎn)
  containers:
  - name: nginx
    image: nginx:1.15
    #驗(yàn)證是否創(chuàng)建了nginx
  • 創(chuàng)建yaml文件
kubectl create -f pod5.yaml

kubectl get pods
  • 查看詳細(xì)事件,發(fā)現(xiàn)未經(jīng)過調(diào)度器
kubectl describe pod pod-example
  • 清空pod資源
kubectl delete -f .

kubectl get pods

范例演示-nodeSelector

  • 獲取標(biāo)簽幫助
kubectl label --help
  • 需要獲取node上的NAME名稱
kubectl get node
  • 給對(duì)應(yīng)的node設(shè)置標(biāo)簽分別為kgc=a和kgc=b
kubectl label nodes 192.168.142.130 kgc=a

kubectl label nodes 192.168.142.131 kgc=b
  • 查看標(biāo)簽
kubectl get nodes --show-labels

vim pod5.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-example
  labels:
    app: nginx
spec:
  nodeSelector: 
    kgc: b
  containers:
  - name: nginx
    image: nginx:1.15

kubectl apply -f pod5.yaml
  • 查看詳細(xì)事件,通過事件可以觀察經(jīng)過調(diào)度器分配
kubectl describe pod pod-example

故障排除

  • 查看pod事件
kubectl describe TYPE NAME_PREFIX
  • 查看pod日志(Failed狀態(tài)下)
kubectl logs POD_NAME
  • 進(jìn)入pod(狀態(tài)為running,但是服務(wù)沒有提供)
kubectl exec –it POD_NAME bash

kubernetes--調(diào)度約束

謝謝閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI