<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      控制器視角看pod刪除過程

      以控制器的視角看pod的刪除過程

      控制器收到的事件

      client-go中的informer通過reflector watch到的事件對象,類型可以是:Add、Modify、Delete,分別代表對象的增加、更新和刪除事件

      以刪除pod為例,當(dāng)用戶嘗試刪除一個pod時,外部控制器將能夠獲取到該pod的4個相關(guān)事件(force則是2個),如下:

       

       

      • 用戶發(fā)出刪除pod請求,api收到該請求之后判斷出pod支持優(yōu)雅刪除,將更新etcd中該pod的DeletionTimestamp、DeletionGracePeriodSeconds字段,etcd中該pod的rv變化,此時控制器reflector收到一個Modify event

      • kubelet reflector watch到上述update事件,開始kill pod中的容器,完成后請求api更新pod的status信息,api將更新etcd中該pod 的condition和containerStatuses等字段,etcd中該pod的rv變化,此時控制器reflector收到一個Modify event

      • kubelet完成上述過程之后,會向api再次發(fā)送一個delete pod請求,希望api直接刪除該pod,api將更新etcd中該pod的DeletionGracePeriodSeconds字段為0, etcd中該pod的rv變化,此時控制器收到一個Modify event

      • api把etcd中的pod的記錄刪除,但etcd中仍然會記錄該pod并更新其rv,此時無法通過api獲取到該pod的信息,控制器此時可以收到一個Delete event

       

       

      問題思考

      如果controller發(fā)生故障,用戶在控制器恢復(fù)之前刪除資源,那么控制器可以獲取到刪除的相關(guān)事件嗎?

      • 如果控制器因為網(wǎng)絡(luò)原因無法連接api,會嘗試re-watch,連接api正常之后通過較小的rv記錄可以watch到刪除資源的事件(etcd會緩存資源的歷史版本),因為watch關(guān)注的是資源的變化。給定的 Kubernetes 服務(wù)器只會保留一定的時間內(nèi)發(fā)生的歷史變更列表。 使用 etcd3 的集群默認(rèn)保存過去 5 分鐘內(nèi)發(fā)生的變更。

      • 如果控制器掛了,則重啟之后會先進(jìn)行l(wèi)ist,此時拿到的是全量的當(dāng)前狀態(tài)的資源列表,通過list對象的objectMeta中的rv來進(jìn)行接下來的watch(list對象在查詢的時候生成https://kubernetes.io/docs/reference/using-api/api-concepts/#resourceversion-in-metadata,所以rv的值與當(dāng)前時間成正比),因此watch不到歷史pod的Delete事件,就可能導(dǎo)致丟失Delete事件,可以通過給控制器關(guān)注的資源增加Finalizer來保證資源不會立即從etcd中刪除,這樣控制器就能重新list到該資源做reconcile后再移除finalizer。

       

      理解finalizer的作用

      https://kubernetes.io/blog/2021/05/14/using-finalizers-to-control-deletion/

      apiserver通過deletionGracePeriodSeconds表示資源是否需要優(yōu)雅的刪除(如果支持),如pod被刪除時因為deletionGracePeriodSeconds不為0,則通過配置deletionTimestamp字段將刪除動作轉(zhuǎn)換為更新,由kubelet watch到更新做具體的資源清理之后再設(shè)置deletionGracePeriodSeconds為0來確認(rèn)刪除pod。

       

      如果資源上配置了finalizer,那么api收到請求之后都不會立即在etcd刪除資源,同樣是配置deletionTimestamp轉(zhuǎn)換為更新動作,即使deletionGracePeriodSeconds設(shè)置的是0。當(dāng)所有的finalizer都被移除之后,該資源會被自動刪除

       

       

      理解ownerReferences作用

      https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/

      當(dāng)嘗試刪除一個owner資源對象如rs時,會檢查是否有其他資源對象如pod的owner是自己,可以配置刪除owner資源時是否級聯(lián)刪除關(guān)聯(lián)的dependent依賴對象

      支持的級聯(lián)cascade策略有:backgroundforegroundorphaned

      foreground:刪除owner對象時apiserver在對象上更新deletionTimestamp和foregroundDeletion finalizers字段,gc controller watch到更新之后把所有會阻塞owner對象刪除的依賴對象進(jìn)行刪除(配置了ownerReference.blockOwnerDeletion=true[admission controller自動配置]的依賴對象會阻塞owner對象),之后移除finalizer,gc controller再次觸發(fā)刪除owner對象

      background:kubectl默認(rèn)策略,立即刪除owner對象,依賴對象由controller-manager的gc controller刪除

      orphaned:刪除owner對象時不會刪除依賴對象,依賴對象會一直存在

       

      posted @ 2021-08-01 09:54  JL_Zhou  閱讀(985)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日韩精品一区二区三区蜜臀| 日韩免费无码视频一区二区三区 | 国产AV无码专区亚洲AV漫画| 亚洲精品中文字幕一区二| 3d无码纯肉动漫在线观看| 一女被多男玩喷潮视频| 亚洲一线二线三线品牌精华液久久久| 精品国产午夜福利在线观看| 亚洲高潮喷水无码AV电影| 少妇人妻88久久中文字幕| 国产l精品国产亚洲区| 香港日本三级亚洲三级| 午夜免费啪视频| 亚洲国产精品无码观看久久| 插插无码视频大全不卡网站| 久久毛片少妇高潮| 国产成人高清亚洲综合| 国产午夜精品福利免费不| 日本伊人色综合网| 熟女熟妇伦av网站| 精品国产精品中文字幕| 久久一区二区中文字幕| 广州市| 亚洲免费观看视频| 久久爱在线视频在线观看| 97午夜理论电影影院| 国产999久久高清免费观看| 国产精品99一区二区三区| 亚洲性av网站| 深夜宅男福利免费在线观看| 免费99精品国产人妻自在现线| 韩国美女福利视频一区二区 | 亚洲精品一区二区三天美| 日韩精品理论片一区二区| av鲁丝一区鲁丝二区鲁丝三区| 日韩高清免费一码二码三码| 桃花岛亚洲成在人线AV| 老熟女重囗味hdxx69| 亚洲人成小说网站色在线 | 丰满少妇被猛烈进出69影院 | 国内自拍偷拍一区二区三区|