本ドキュメントでは、対象の Kubernetes クラスターをアップグレードせずに Heapster コンポーネントから metrics-server コンポーネントへアップグレードする方法について説明します。
前提条件
- Kubernetes クラスタが作成されています。 詳細は、Kubernetes クラスターの作成をご参照ください。
- Kubernetes クラスタは v1.12 より以前のバージョンを使用。
手順
データ収集コンポーネントをリセットし、モニタリングデータリンクをリセットしてから、コンポーネントの互換性設定を変更する必要があります。
-
データ収集コンポーネントをリセットします。
データ収集コンポーネントを Heapster から metrics-server に変更するには、次の手順に従います。
- Container Service コンソールにログインします。
- 左側のナビゲーションウィンドウから、"Container Service - Kubernetes" を選択し、 をクリックします。
- 右上隅で、 テンプレートから作成 をクリックします。
- クラスタ ドロップダウンリストから対象のクラスタを選択し、ネームスペースドロップダウンリストから kube-system を選択します。
- リソースの種類からカスタムを選択し、次のコードをコピーしてテンプレート領域に貼り付けてから、デプロイをクリックします。
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: extensions/v1beta1 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 ##
を対象のクラスタがデプロイされているリージョン(たとえば China East 1:cn-hangzhou)に置き換え、## CLUSTER_ID ##
を対象のクラスタ ID に置き換える必要があります。 - モニタリングデータリンクをリセットします。
- 左側のナビゲーションペインから、 を選択します。
- 対象のクラスタを選択します。
- マスターノードのインスタンス ID をクリックします。 この例では、master-01 ノードが使用されます。
- 接続 をクリックします。 表示されるページで、リモート接続パスワードを入力して OK をクリックします。 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
- master-02 と master-03 ノードで手順 c ~ d を繰り返します。
上記の操作が完了すると、kubelet は自動的に起動し、kube-controller-manager コンポーネントを更新します。
- コンポーネントの互換性設定をリセットします。
- 左側のナビゲーションペインで、 を選択します
- 対象のクラスタと kube-system ネームスペースを選択します。 次に、heapster の右側にある View YAML をクリックします
- 表示されたダイアログボックスで、selector フィールドの k8s-app パラメータを metrics-server にリセットします。 更新 をクリックします。
- 左側のナビゲーションペインから、 をクリックします。
- 対象のクラスタと kube-system ネームスペースを選択します。
- Heapster に関連するコンポーネントを削除します。 この例では、heapster コンポーネントと monitoring-influxdb コンポーネントを削除する必要があります。
- heapster コンポーネントの右側にあるOK をクリックします。 を選択します。 表示されるダイアログボックスで、
- monitoring-influxdb コンポーネントの右側にある関連サービス monitoring-influxdb を削除するチェックボックスにチェックを入れ、OK をクリックします。 を選択します。 表示されるダイアログで
- 新しいデータリンク状態を確認します。
データリンクの初期化には約 3 分かかります。
左側のナビゲーションペインから、
を選択します。 CPU とメモリの列が正常な値を示していることを確認することができます。 これはデータリンクがリセットされたことを意味します。注 各コンポーネントの表示されている CPU とメモリの両方の列が 0 の場合は、例外を示します。