Kubernetes 爆發嚴重漏洞:可能影響所有開源版本,請儘快升級

Kuboard發表於2019-09-03

原文地址:kuboard.cn/install/ins…

參考文件: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
複製程式碼

相關文章