All Products
Search
Document Center

:Update the metrics-server component before you update the Kubernetes version to 1.12

Last Updated:Apr 01, 2024

You must update the metrics-server component before you update the Kubernetes version of a cluster to 1.12. To update the metrics-server component, perform the following steps: change the metric collector, switch the monitoring link, and update component settings.

Prerequisites

A Container Service for Kubernetes (ACK) dedicated cluster is created, and the Kubernetes version of the cluster is 1.12.6 or earlier.

Change the metric collector

Create a metrics-server.yaml file and copy the following content to the file. In the CLI, run the kubectl apply -f metrics-server.yaml command to change the metric collector from Heapster to 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'
Note

Replace ##REGION## and ##CLUSTER_ID## with the region (such as cn-hangzhou) and ID of the selected cluster, respectively.

Switch the monitoring link

  1. Log on to the ACK console. In the left-side navigation pane, click Clusters.

  2. On the Clusters page, click the name of the cluster that you want to manage and choose Nodes > Nodes in the left-side navigation pane.

  3. Find the master nodes in the cluster. Click the ID of a master node to go to the Instance Details page.

  4. In the Basic Information section, click Connect.

    The Enter VNC Password dialog box appears. Enter the VNC password and click OK. After you log on to the instance, run the following command:

    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. Repeat the preceding steps to switch the monitoring link for the other master nodes.

After the command is executed, the kubelet updates the controller manager.

Update component settings

  1. Log on to the ACK console. In the left-side navigation pane, click Clusters.

  2. On the Clusters page, click the name of the cluster that you want to manage and choose Network > Services in the left-side navigation pane.

  3. Select the kube-system namespace. Find the heapster Service and click View in YAML in the Actions column of the Service.

  4. In the dialog box that appears, set the value of the k8s-app field to metrics-server. Click Update.

    组件兼容适配变更2

  5. In the left-side navigation pane of the details page, choose Workloads > Deployments.

  6. On the Deployments tab, select the kube-system namespace.

  7. Select Heapster-related components such as heapster and monitoring-influxdb. In the Actions column, choose More > Delete.

  8. In the dialog box that appears, click OK.

    Note

    To delete the monitoring-influxdb component, in the Delete monitoring-influxdb dialog box, select Delete the associated monitoring-influxdb Service and click OK.

  9. Check the link status.

    It requires about three minutes to initialize the link.

    In the left-side navigation pane, choose Workload > Pods. On the Pods page, if the CPU and memory usage are normal, it indicates that the link is switched.

    Note

    If the CPU and memory usage of all components are zero, it indicates that an error has occurred.