Antes de atualizar um cluster para a v1.12, é obrigatório atualizar o componente metrics-server. Esse processo envolve três etapas: troca do coletor de métricas, alteração do link de monitoramento e ajuste das configurações dos componentes para garantir compatibilidade.
Pré-requisitos
Você possui um cluster dedicado ACK executando a versão v1.12.6 ou anterior.
Trocar o coletor de métricas
Crie um arquivo chamado metrics-server.yaml com o conteúdo abaixo. Em seguida, execute o comando kubectl apply -f metrics-server.yaml para substituir o coletor de métricas Heapster pelo 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'
Substitua ##REGION## pelo ID da região (por exemplo, cn-hangzhou para China (Hangzhou)) e ##CLUSTER_ID## pelo ID do seu cluster.
Alterar o link de monitoramento
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
Localize os três nós mestres do cluster. Clique no ID da instância de um dos nós mestres.
-
Na página Instance Details, clique em Connect.
Na janela de conexão remota, insira a senha de conexão remota e clique em OK. Após fazer login, execute o seguinte comando:
sed -i 's/--horizontal-pod-autoscaler-use-rest-clients=false/--horizontal-pod-autoscaler-use-rest-clients=true/' /etc/kubernetes/manifests/kube-controller-manager.yamlNa caixa de diálogo Copy and Paste Command, cole o comando e clique em OK.
Repita este procedimento nos outros dois nós mestres.
Após a execução do comando, o kubelet reinicia automaticamente e atualiza o componente kube-controller-manager.
Ajustar componentes para compatibilidade
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
Na lista suspensa Namespace, selecione kube-system. Localize o Service heapster e clique em View in YAML na coluna Actions.
-
Na caixa de diálogo exibida, altere o valor de
k8s-appna seçãoselectorparametrics-server. Clique em Update.apiVersion: v1 kind: Service metadata: creationTimestamp: '2019-01-14T09:38:56Z' name: heapster namespace: kube-system resourceVersion: '22030561' selfLink: /api/v1/namespaces/kube-system/services/heapster uid: 36b86a85-17e0-11e9-a14f-00163e06b896 spec: clusterIP: xxx.xxx.xxx.xxx ports: - port: 80 protocol: TCP targetPort: 8082 selector: k8s-app: metrics-server sessionAffinity: None type: ClusterIP status: loadBalancer: {} No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
Na página Deployments, selecione kube-system na lista suspensa Namespace.
Selecione os componentes
heapsteremonitoring-influxdbe, na coluna Actions, escolha .-
Na caixa de diálogo exibida, clique em OK.
NotaAo excluir o componente
monitoring-influxdb, marque a caixa de seleção Delete the associated monitoring-influxdb Service na caixa de diálogo Delete monitoring-influxdb e clique em OK. -
Verifique a alteração do link de monitoramento.
Aguarde cerca de 3 minutos para que o link de monitoramento seja inicializado.
No painel de navegação à esquerda, escolha . Na página Pods, se as colunas CPU e Memory exibirem valores, a alteração do link de monitoramento foi bem-sucedida.
NotaCaso os valores de CPU e Memory de todos os componentes estejam zerados, isso indica um erro.