一、libeness probe的三種檢測機制
- HTTP GET:對容器的IP(指定的端口和路徑)執行HTTP GET請求,收到響應並返回狀態碼不代表錯誤(2xx/3xx),成功
- TCP socket:與容器指定端口建立TCP鏈接,建立鏈接成功,表示檢測成功
- Exec:在容器內執行自定義命令,退出狀態碼是0,檢測成功
二、liveness probe探測機制
- kubernetes會在容器崩潰或健康檢測失敗時(默認連續3次檢測都失敗,則認為檢測失敗)通過重啟容器保持運行
- 當容器被強制終止時,會創建一個新的容器(而不是重啟原來的容器)
- 探測附加屬性:
delay(延遲):容器啟動后延遲多久開始監控檢測(務必設置一個合理的延遲時間,否則在容器進程為完全運行前,檢測已經失敗,導致容器進入重啟死循環)
timeout(超時):容器的響應時間,超過設定值則超時
period(周期):間隔多久進行下一次檢測
failure(失敗):連續失敗多少次后判定檢測失敗 - 檢測的准確行:僅檢測容器自身進程,(web前段正常,后端故障,重啟前段無法恢復問題)
- 檢測的輕量:資源消耗低、運行時間短(保證容器的輕量的同時不影響容器的運行質量)
- 健康檢測重啟pod是通過節點kubectl完成的(若節點故障則無法恢復)
四、ReplicationController(簡稱:RC)
- RC是一種資源,確保他的pod始終運行在期望的狀態(用戶指定的pod數量,即:幾副本狀態)
- RC會持續監控正在運行的pod列表
- 當RC的pod無論因何種數量發生變化,RC會根據模板新建,或刪除一定數量的pod,已確保pod運行在期望的狀態
- 通過RC可以實現pod的手動/自動伸縮
五、RC的組成
- label selector:標簽選擇器,用於確定RC作用域中有哪些pod(yml文件可以不指定,默認會根據pod的模板讀取)
- replica count:副本數量,指定運行的pod數量
- pod template:pod模板,用於創建新的pod副本
六、RC的作用域
- RC通過作用域管理對應標簽的pod
- 修改pod的標簽后,pod將脫離RC的管控,當pod故障時不會重新被調度
- 注意:當修改pod的標簽后,對RC本身無影響,他會重新創建出新的pod,直至達到預期狀態
七、使用ReplicaSet(簡稱RS)代替RC
- ReplicaSet與RC的行為完全相同
- ReplicaSet可以僅通過標簽的key匹配pod(RC必須匹配完整的標簽:keyvalue)
- 修改ReplicaSet對現有的pod無影響,若想更新RS,可以刪除現有的pod,RS會更具模板創建新的pod
八、更具表達力的標簽選擇器
- key:標簽的名稱
- operator:運算符:多個運算符可以一起使用,但是必須所有表達式都為true
1)In:label的值必須與其中一個指定的values匹配
2)NotIn:Label的值與指定的所有values都不匹配
3)Exists:只匹配key部分,使用次運算符時不指定values字段
4)DoesNotExist:匹配除指定key以外的所有key ,使用次運算符時不指定values字段 - values:標簽的值
九、DaemonSet在每個節點運行一個pod
- DaemonSet的目的是用來運行系統服務
- 確保每個節點上運行一個pod
- 若有人在某一節點刪除了一個pod,那么DaemonSet會在該節點重建pod
- 當新節點加入集群時,DaemonSet會立刻部署一個新的pod
- DaemonSet也可以只在集群中指定節點部署pod(由pod模板指定)
- 注意:在集群中可以設置節點的屬性為“不可調用”,但是DaemonSet還是會在這些節點部署pod,因為DaemonSet不通過調度器進行調度
