--- title: K8s Maintenance # 簡報的名稱 tags: K8s # 簡報的標籤 --- # K8s Maintenance > [name=李俊毅] > [time=Thur, May 7, 2020 14:00 PM] --- ## Agenda * 資源管理 * 配置管理 * 生命週期 * 自動擴展 * Demo * 課後動腦 --- ## 資源管理 * 什麼是資源管理 * 資源類型 ---- ### 什麼是資源管理 ---- 配置 Pod 能從 Node 上使用多少資源的一種管理 ---- ![](https://i.imgur.com/GTvp76q.png) ---- ### 資源類型 資源類型分CPU與內存,CPU的單位是核心數,內存的單位是byte ---- | 種類 | 單位 | K8s單位 | | ------- | ------ | -------| | CPU | 1核 | 1000m | | RAM | 1Gi | 1000Mi| --- ## 配置管理 管理配置是指親和力(Affinity)與反親和力(AntiAffinity),可依據 Pod 與 Node 角度配置 --- ## 生命週期 * 運行階段 * 容器探針 * 重啟策略 ---- ### 運行階段 ---- ![](https://i.imgur.com/DWTZRZq.png) <!-- | phase | info | | ---------------- |:----------------------------------------------------------------- | | Running | 該 Pod 已經綁定到了一個節點上,Pod 中所有的容器都已被創建 | | Succeeded | Pod 中的所有容器都被成功終止,並且不會再重啟 | | Failed | Pod 中的所有容器都已終止了,並且至少有一個容器是因為失敗終止 | | Unknown | 因為某些原因無法取得 Pod 的狀態,通常是因為與Pod 所在主機通信失敗 | | CrashLoopBackoff | K8s 正在盡力啟動這個 Pod,但是一個或多個容器已經掛了 | | ErrImagePull | 拉取 Image 時發生錯誤 | | ImagePullBackOff | K8s 正在盡力拉取 Image,但還是發生錯誤 | | Completed | Pod 已成功完成 Job 任務 | | Pending | Pod 已被 K8s系統接受,但有一個或者多個容器鏡像尚未創建 | --> ---- ### 容器探針 容器探針有 liveness 與 readiness,liveness是確認存活的探針,readiness是確認就緒的探針 ---- ![](https://i.imgur.com/WFI0vIf.png) <!-- |變數 | 說明 |預設 | | -------- | -------- |-------- | | initialDelaySeconds| 容器啟動後要等待多少秒後存活和就緒探測器才被初始化 | 0 秒| | periodSeconds | 執行探測的時間間隔 |10秒| | timeoutSeconds | 探測的超時後等待多少秒 | 1秒 | | successThreshold | 探測器在失敗後,被視為成功的最小連續成功數 | 1 | | failureThreshold | 當Pod 啟動了並且探測到失敗,Kubernetes 的重試次數。存活探測情況下的放棄就意味著重新啟動容器 | 3 | --> ---- ### 重啟策略 設定容器的重啟方式,一般有rs的只能設定Always,Job可以設定 OnFailure 與 Never ---- | kind | restartPolicy | | ---------- | ------------------ | | Job | OnFailure or Never | | deploy、sts、ds | Always | --- ## 自動擴展 --- ## Demo --- ## 課後動腦 * 配置兩個以上的 nginx 的容器並且設定不在同一個 Node 上 * 限制 nginx 的容器 cpu 與 ram 的資源 * 設定 nginx 的 liveness 與 readiness