升級(jí)集群至v1.12版本前升級(jí)metrics-server組件
升級(jí)集群至v1.12版本時(shí),您需要同時(shí)升級(jí)metrics-server組件。metrics-server組件的升級(jí)分為三個(gè)部分:切換數(shù)據(jù)采集組件、切換監(jiān)控?cái)?shù)據(jù)鏈路、變更組件兼容適配。
前提條件
已有專有版Kubernetes集群且集群版本為v1.12.6及之前。
切換數(shù)據(jù)采集組件
創(chuàng)建并拷貝內(nèi)容到metrics-server.yaml文件中,并執(zhí)行kubectl apply -f metrics-server.yaml
命令,將數(shù)據(jù)采集組件從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。
切換監(jiān)控?cái)?shù)據(jù)鏈路
登錄容器服務(wù)管理控制臺(tái),在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁(yè)面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
找到集群的三個(gè)Master節(jié)點(diǎn)。單擊Master節(jié)點(diǎn)的實(shí)例ID。
在實(shí)例詳情頁(yè)面,單擊遠(yuǎn)程連接。
在ECS實(shí)例遠(yuǎn)程連接界面,根據(jù)頁(yè)面指導(dǎo),輸入遠(yuǎn)程連接密碼并單擊確定。登錄成功后,輸入以下命令:
sed -i 's/--horizontal-pod-autoscaler-use-rest-clients=false/--horizontal-pod-autoscaler-use-rest-clients=true/' /etc/kubernetes/manifests/kube-controller-manager.yaml
重復(fù)步驟5-6,在另外兩個(gè)Master節(jié)點(diǎn)上執(zhí)行該命令。
執(zhí)行完畢后,kube-controller-manager組件會(huì)被kubelet自動(dòng)拉起更新。
組件兼容適配變更
登錄容器服務(wù)管理控制臺(tái),在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁(yè)面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
選擇目標(biāo)命名空間kube-system,并單擊服務(wù)heapster右側(cè)操作列下的查看YAML。
在彈出的對(duì)話框中,修改selector中k8s-app的值為metrics-server。單擊更新。
在集群管理頁(yè)左側(cè)導(dǎo)航欄,選擇 。
在無(wú)狀態(tài)頁(yè)簽,選擇目標(biāo)命名空間kube-system。
選擇Heapster相關(guān)組件(heapster和monitoring-influxdb),并單擊右側(cè)操作列下的
。在彈出的對(duì)話框中,單擊確定,完成鏈路切換。
說(shuō)明刪除monitoring-influxdb組件時(shí),在彈出的刪除monitoring-influxdb提示框中,勾選移除關(guān)聯(lián)的服務(wù)(Server)monitoring-influxdb,單擊確定。
驗(yàn)證鏈路切換狀態(tài)。
等待約3分鐘,數(shù)據(jù)鏈路會(huì)完成初始化。
在集群管理頁(yè),單擊
。在容器組頁(yè)面,如果CPU(核)與內(nèi)存(字節(jié))顯示正常,則表示鏈路切換成功。說(shuō)明所有組件的CPU和內(nèi)存值均為0則表示異常。