Kubernetesバージョンのクラスターを1.12に更新する前に、metrics-serverコンポーネントを更新する必要があります。 メトリクスサーバーコンポーネントを更新するには、次の手順を実行します。メトリクスコレクターの変更、モニタリングリンクの切り替え、コンポーネント設定の更新。
前提条件
Container Service for Kubernetes (ACK) 専用クラスターが作成され、クラスターのKubernetesバージョンは1.12.6以前です。
メトリックコレクターの変更
metrics-server.yamlファイルを作成し、次の内容をファイルにコピーします。 CLIで、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##
を、選択したクラスターのリージョン (cn-hangzhouなど) およびIDにそれぞれ置き換えます。
モニタリングリンクの切り替え
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
クラスター内のマスターノードを見つけます。 マスターノードのIDをクリックして、[インスタンスの詳細] ページに移動します。
[基本情報] セクションで、[接続] をクリックします。
[VNC パスワードの入力] ダイアログボックスが表示されます。 VNCパスワードを入力し、[OK] をクリックします。 インスタンスにログインした後、次のコマンドを実行します。
sed -i 's/-- horizontal-pod-autoscaler-use-rest-clients=false/-- horizontal-pod-autoscaler-use-rest-clients=true/' /etc/kubernetes/manifests/kube-controller-manager.yaml
上記の手順を繰り返して、他のマスターノードの監視リンクを切り替えます。
コマンドの実行後、kubeletはコントローラマネージャを更新します。
コンポーネント設定の更新
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
kube-system名前空間を選択します。 heapsterサービスを見つけ、サービスの [操作] 列で [YAMLで表示] をクリックします。
表示されるダイアログボックスで、k8s-appフィールドの値をmetrics-serverに設定します。 [更新] をクリックします。
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[デプロイメント] タブで、kube-system名前空間を選択します。
Heapsterやmonitoring-influxdbなどのheapster関連コンポーネントを選択します。 [操作] 列で、
を選択します。表示されるダイアログボックスで、[OK] をクリックします。
説明monitoring-influxdbコンポーネントを削除するには、[モニタリング-influxdbの削除] ダイアログボックスで、[関連するmonitoring-influxdbサービスの削除] を選択し、[OK] をクリックします。
リンクの状態を確認します。
リンクの初期化には約3分かかります。
左側のナビゲーションウィンドウで、
を選択します。 [ポッド] ページで、CPUとメモリの使用率が正常であれば、リンクが切り替えられていることを示します。説明すべてのコンポーネントのCPUおよびメモリ使用率がゼロの場合、エラーが発生したことを示します。