升级集群至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。
切换监控数据链路
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
找到集群的三个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自动拉起更新。
组件兼容适配变更
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
选择目标命名空间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则表示异常。