升級叢集至v1.12版本時,您需要同時升級metrics-server組件。metrics-server組件的升級分為三個部分:切換資料擷取組件、切換監控資料鏈路、變更組件相容適配。
前提條件
已有專有版Kubernetes叢集且叢集版本為v1.12.6及之前。
切換資料擷取組件
建立並拷貝內容到metrics-server.yaml檔案中,並執行kubectl apply -f metrics-server.yaml
命令,將資料擷取組件從Heapster切換到metrics-server。
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin
namespace: kube-system
---
apiVersion: v1
kind: Service
metadata:
labels:
task: monitoring
# For use as a Cluster add-on (https://github.com/kubernetes/kubernetes/tree/master/cluster/addons)
# If you are NOT using this as an addon, you should comment out this line.
kubernetes.io/cluster-service: 'true'
kubernetes.io/name: metrics-server
name: heapster
namespace: kube-system
spec:
ports:
- port: 80
targetPort: 8082
selector:
k8s-app: metrics-server
---
apiVersion: v1
kind: Service
metadata:
name: metrics-server
namespace: kube-system
labels:
kubernetes.io/name: metrics-server
spec:
selector:
k8s-app: metrics-server
ports:
- port: 443
protocol: TCP
targetPort: 443
---
apiVersion: apiregistration.k8s.io/v1beta1
kind: APIService
metadata:
name: v1beta1.metrics.k8s.io
spec:
service:
name: metrics-server
namespace: kube-system
group: metrics.k8s.io
version: v1beta1
insecureSkipTLSVerify: true
groupPriorityMinimum: 100
versionPriority: 100
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: admin
containers:
- name: metrics-server
image: registry.##REGION##.aliyuncs.com/acs/metrics-server:v0.2.1-9dd9511-aliyun
imagePullPolicy: Always
command:
- /metrics-server
- '--source=kubernetes:https://kubernetes.default'
- '--sink=socket:tcp://monitor.csk.##REGION##.aliyuncs.com:8093?clusterId=##CLUSTER_ID##
&public=true'
您需要將##REGION##
與##CLUSTER_ID##
替換為所選叢集的地區名稱(例如,華東1:cn-hangzhou)與叢集ID。
切換監控資料鏈路
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
找到叢集的三個Master節點。單擊Master節點的執行個體ID。
在執行個體詳情頁面,單擊遠端連線。
在ECS執行個體遠端連線介面,根據頁面指導,輸入遠端連線密碼並單擊確定。登入成功後,輸入以下命令:
sed -i 's/--horizontal-pod-autoscaler-use-rest-clients=false/--horizontal-pod-autoscaler-use-rest-clients=true/' /etc/kubernetes/manifests/kube-controller-manager.yaml
重複步驟5-6,在另外兩個Master節點上執行該命令。
執行完畢後,kube-controller-manager組件會被kubelet自動拉起更新。
組件相容適配變更
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
選擇目標命名空間kube-system,並單擊服務heapster右側操作列下的查看YAML。
在彈出的對話方塊中,修改selector中k8s-app的值為metrics-server。單擊更新。
在叢集管理頁左側導覽列,選擇 。
在無狀態頁簽,選擇目標命名空間kube-system。
選擇Heapster相關組件(heapster和monitoring-influxdb),並單擊右側操作列下的
。在彈出的對話方塊中,單擊確定,完成鏈路切換。
說明刪除monitoring-influxdb組件時,在彈出的刪除monitoring-influxdb提示框中,勾選移除關聯的服務(Server)monitoring-influxdb,單擊確定。
驗證鏈結路切換狀態。
等待約3分鐘,資料鏈路會完成初始化。
在叢集管理頁,單擊
。在容器組頁面,如果CPU(核)與記憶體(位元組)顯示正常,則表示鏈路切換成功。說明所有組件的CPU和記憶體值均為0則表示異常。