參考文件:Info Q 文章 Kubernetes 爆發嚴重漏洞:可能影響所有開源版本 參考文件:51CTO 安全頻道 Kubernetes的嚴重漏洞將所有伺服器暴露在DoS攻擊面前!
參考文件: kubernetes 官網文件 kubeadm upgrade
- CVE-2019-9512 Ping Flood:攻擊者向 HTTP/2 對等體 (peer) 傳送連續 ping,導致對等體建立內部響應佇列。這可能消耗過多 CPU 和記憶體——這取決於該資料的佇列多高效,從而可能導致拒絕服務攻擊。
- CVE-2019-9514 Rest Flood:攻擊者開啟多路資料流,並在每路資料流上傳送無效請求,從而從對等體獲得 RST_STREAM 幀資料流。這會消耗過多的記憶體、CPU 或 CPU 和記憶體——這取決於對等體如何將 RST_STREAM 幀列入佇列,從而可能導致拒絕服務攻擊。
Kubernetes 已經發布補丁以修復漏洞,建議所有管理員儘快升級到補丁版本,以幫助管理員應對漏洞:
- Kubernetes v1.15.3 - go1.12.9
- Kubernetes v1.14.6 - go1.12.9
- Kubernetes v1.13.10 - go1.11.13
前提條件
- 您使用 kubeadm 安裝了 kubernetes v1.15.0 / v1.15.1 / v1.15.2 叢集
- 您想要將其升級到最新的版本 kubernetes v1.15.3
www.kuboard.cn 是一款免費的基於 Kubernetes 的微服務管理介面,目前只能提供 kubernetes v1.15.0 / v1.15.1 / v1.15.2 到 kubernetes v1.15.3 的升級文件,其他版本的叢集,請參考 kubernetes 官網文件 kubeadm upgrade
升級 kubeadm/kubelet/kubectl
在所有節點(包括 master、worker 節點)執行命令
# 在所有節點執行(包括 master 和 worker 節點)
yum install -y kubelet-1.15.3 kubeadm-1.15.3 kubectl-1.15.3
systemctl daemon-reload
systemctl restart kubelet
複製程式碼
檢視叢集配置
在第一個 master 節點執行命令
# 只在第一個 master 節點執行
kubeadm config view
複製程式碼
輸入結果如下所示:(根據叢集配置不一樣,您的結果可能不同)
apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: apiserver.demo:6443
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.15.0
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
scheduler: {}
複製程式碼
建立升級用的配置檔案
建立檔案 kubeadm-config-upgrade.yaml
檔案內容如下所示,根據前面 kubeadm config view
的執行結果,修改瞭如下欄位:
- imageRepository 的值修改為:registry.cn-hangzhou.aliyuncs.com/google_containers
- kubernetesVersion 的值修改為: v1.15.3
apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: apiserver.demo:6443
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.15.3
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
scheduler: {}
複製程式碼
執行 kubeadm upgrade 命令
在第一個 master 節點上執行:
檢視升級後的變化
# 只在第一個 master 節點執行
kubeadm upgrade diff --config kubeadm-config-upgrade.yaml
複製程式碼
執行升級 dry-run
# 只在第一個 master 節點執行
kubeadm upgrade apply --config kubeadm-config-upgrade.yaml --dry-run
複製程式碼
執行升級動作
# 只在第一個 master 節點執行
kubeadm upgrade apply --config kubeadm-config-upgrade.yaml
複製程式碼
升級 worker 節點
針對所有的 worker 節點,執行
# 只在 worker 節點執行(所有的 worker 節點)
kubeadm upgrade node
複製程式碼
檢查升級結果
在第一個 master 節點執行
# 只在第一個 master 節點執行
kubectl get nodes -o wide
kubectl version
kubeadm config view
複製程式碼