升级集群至v1.12版本前升级metrics-server组件

升级集群至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。

切换监控数据链路

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点

  3. 找到集群的三个Master节点。单击Master节点的实例ID。

  4. 实例详情页面,单击远程连接

    在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                            

    切换链路2

  5. 重复步骤5-6,在另外两个Master节点上执行该命令。

执行完毕后,kube-controller-manager组件会被kubelet自动拉起更新。

组件兼容适配变更

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择网络 > 服务

  3. 选择目标命名空间kube-system,并单击服务heapster右侧操作列下的查看YAML

  4. 在弹出的对话框中,修改selector中k8s-app的值为metrics-server。单击更新

    组件兼容适配变更2

  5. 在集群管理页左侧导航栏,选择工作负载 > 无状态

  6. 无状态页签,选择目标命名空间kube-system。

  7. 选择Heapster相关组件(heapster和monitoring-influxdb),并单击右侧操作列下的更多 > 删除

  8. 在弹出的对话框中,单击确定,完成链路切换。

    说明

    删除monitoring-influxdb组件时,在弹出的删除monitoring-influxdb提示框中,勾选移除关联的服务(Server)monitoring-influxdb,单击确定

  9. 验证链路切换状态。

    等待约3分钟,数据链路会完成初始化。

    在集群管理页,单击工作负载 > 容器组。在容器组页面,如果CPU(核)与内存(字节)显示正常,则表示链路切换成功。

    说明

    所有组件的CPU和内存值均为0则表示异常。

    组件兼容适配变更5