クラスターを v1.12 にアップグレードする前に、metrics-server コンポーネントをアップグレードする必要があります。アップグレードプロセスは、メトリックコレクターの切り替え、モニタリングリンクの切り替え、互換性のためのコンポーネント調整の 3 つのステップで構成されます。
前提条件
v1.12.6 以前を実行している Container Service for Kubernetes (ACK) 専用クラスターがあること。
メトリックコレクターの切り替え
次の内容で 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## をリージョン ID (例:中国 (杭州) の場合は cn-hangzhou) に、##CLUSTER_ID## をご利用のクラスター ID に置き換えてください。
モニタリングリンクの切り替え
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
-
クラスターの 3 つのマスターノードを見つけます。マスターノードのインスタンス ID をクリックします。
-
インスタンスの詳細 ページで、リモート接続 をクリックします。
リモート接続ウィンドウで、リモート接続パスワードを入力し、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[コマンドのコピーと貼り付け] ダイアログボックスで、コマンドを貼り付けて [OK] をクリックします。
-
他の 2 つのマスターノードでこの手順を繰り返します。
コマンドを実行すると、kubelet が自動的に再起動し、kube-controller-manager コンポーネントが更新されます。
互換性のためのコンポーネント調整
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、クラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 をクリックします。
-
名前空間 ドロップダウンリストから kube-system を選択します。heapster Service を見つけ、アクション 列の YAML の表示 をクリックします。
-
表示されたダイアログボックスで、
selectorセクションのk8s-appの値をmetrics-serverに変更します。更新 をクリックします。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: {} クラスター管理ページの左側のナビゲーションウィンドウで、 を選択します。
-
デプロイメント ページで、名前空間 ドロップダウンリストから kube-system を選択します。
-
heapsterおよびmonitoring-influxdbコンポーネントを選択し、操作 列で を選択します。 -
表示されたダイアログボックスで、OK をクリックします。
説明monitoring-influxdbコンポーネントを削除する際、[monitoring-influxdb の削除] ダイアログボックスで [関連付けられた monitoring-influxdb Service を削除] チェックボックスを選択し、OK をクリックします。 -
モニタリングリンクの切り替えを検証します。
モニタリングリンクが初期化されるまで約 3 分間待ちます。
左側のナビゲーションウィンドウで、 を選択します。ポッド ページで、[CPU] 列と [メモリ] 列に値が表示されていれば、モニタリングリンクの切り替えは成功です。
説明すべてのコンポーネントの CPU とメモリの値が 0 の場合は、エラーを示しています。