如何增強K8s集群apiserver的健壯性

2022-09-19 09:09:07 字數 1007 閱讀 2785

kube-apiserver作為k8s平台所有請求的入口,一旦kube-apiserver不可用,整個k8s就不可用。因此保障kube-apiserver的健壯性顯得尤為重要。

我們可以從部署架構、自身效能、監控報警、自動降級等維度保證kube-apiserver的健壯性。

list介面優先讀快取,減少對etcd的壓力,避免etcd壓力過大引起kube-apiserver雪崩;

給常用的資源(pods/stateful)新增index,加速list效率;

通過bookmark,watch client可以及時獲取apiserver的版本資訊,避免watch重連時拉取全量資料;

當kube-apiserver的cache不ready時,kube-apiserver不對外提供服務,避免etcd被擊穿,引起系統雪崩;

kubelet定時重連kube-apiserver,盡量讓多個kube-apiserver負載均衡

避免一次返回太大的資料結構,造成網路堵塞,cpu和記憶體抖動

除了kube-apiserver自身的效能優化,我們對kube-apiserver做全面的監控,這樣才能對kube-apiserver運**況瞭如指掌,同時對異常情況做報警,及時介入干預,防止系統出現雪崩。

目前基於kube-apiserver已暴露的指標,我們已經可以對kube-apiserver的cpu負載、memory使用、qps、rt延時、etcd訪問延時做到詳細的監控報警,只要上述指標異常,立刻可以報警至釘釘群,owner及時進行處理。

有部分指標,比如少量pod的全量list請求,就會造成kube-apiserver的記憶體抖動。通過prometheus我們無法及時發現,我們可以基於sls日誌做監控和報警。

通過動態修改這兩個引數控制kube-apiserver可以接受的請求數,當系統負載過高時,降低這兩個引數即可。

根據記憶體使用大小,自動調節這兩個引數大小?

通過該機制,可以控制每個使用者、每種資源、每種verb能提供的qps。這樣緊急情況下,可以禁用某些使用者、某些資源的訪問。

若有收穫,就點個贊吧

k8s登入 登陸並訪問k8s的apiserver

kubeadm安裝的k8s集群預設需要使用者登陸認證,無法直接使用命令curl訪問。所以首先的第一步就是獲取token。先找到k8s集群中的dns元件coredns,之前的版本使用的是kube dns。root k8s master kubectl n kube system get sa core...

k8s 集群概念

kubernetes是google開源的容器集群管理系統,提 用部署 維護 擴充套件機制等功能,利用kubernetes能方便管理跨集群執行容器化的應用,簡稱 k8s k與s之間有8個字母 二 基本概念 pod 若干相關容器的組合,pod包含的容器執行在同一host上,這些容器使用相同的網路命令空間...

K8S 集群安裝

1 作業系統 centos 7.4 2 主機資訊 k8smaster主機 kb master 001 192.168 0.11 kb master 002 192.168 0.12 kb master 003 192.168 0.13 k8snode主機 kb node 001 192.168 0....