2018/12/31 追記
こちら の記事で動作確認まで実施しました。
概要
「EKSでkubectl topやHorizontal Pod Autoscaler (HPA) が使えない理由」に書いた通り、EKSではHPAやMetrics Serverが使えませんでした。
残念に思っていたのですが、8月末にHPAとMetrics Serverに対応したバージョンがリリースされたようです。
↓
「Amazon EKS Platform Version 2 のご紹介」
「Platform Versions」
そこでさっそく試してみたのですが、うまく動きませんでした。。。
やってみた手順
EKSの構築
「Amazon EKS の使用開始」の手順でクラスタを構築しました。
たしかに、Platform versionがeks.2になっています。
Metrics Serverの構築
HPAはMetrics Serverに依存しているので、まずはMetrics Serverがデプロイできるか試すことにしました。
Metrics Serverデプロイ前はkubectl topがエラーを吐きます。
$ kubectl top pod
Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)
Metrics Serverをデプロイします。
$ git clone https://github.com/kubernetes-incubator/metrics-server.git
$ kubectl create -f metrics-server/deploy/1.8+/
kuectl topを再度試します。
$ kubectl top pod
Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)
エラーとなってしまいました。
エラーの原因調査
metrics-serverのログを確認すると
$ kubectl -n kube-system logs pod/metrics-server-55b6ff4cb7-7bn6h
I0906 11:05:34.196345 1 serving.go:273] Generated self-signed cert (apiserver.local.config/certificates/apiserver.crt, apiserver.local.config/certificates/apiserver.key)
W0906 11:05:35.092256 1 authentication.go:166] cluster doesn't provide client-ca-file in configmap/extension-apiserver-authentication in kube-system, so client certificate authentication to extension api-server won't work.
W0906 11:05:35.099494 1 authentication.go:210] cluster doesn't provide client-ca-file in configmap/extension-apiserver-authentication in kube-system, so client certificate authentication to extension api-server won't work.
[restful] 2018/09/06 11:05:35 log.go:33: [restful/swagger] listing is available at https://:443/swaggerapi
[restful] 2018/09/06 11:05:35 log.go:33: [restful/swagger] https://:443/swaggerui/ is mapped to folder /swagger-ui/
I0906 11:05:35.159295 1 serve.go:96] Serving securely on [::]:443
「cluster doesn't provide client-ca-file in configmap/extension-apiserver-authentication in kube-system, so client certificate authentication to extension api-server won't work.」というWARNログが出ています。
configmap/extension-apiserver-authenticationを確認すると
$ kubectl -n kube-system describe configmap extension-apiserver-authentication
Name: extension-apiserver-authentication
Namespace: kube-system
Labels: <none>
Annotations: <none>
Data
====
requestheader-group-headers:
----
["X-Remote-Group"]
requestheader-username-headers:
----
["X-Remote-User"]
requestheader-allowed-names:
----
["front-proxy-client"]
requestheader-client-ca-file:
----
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----
requestheader-extra-headers-prefix:
----
["X-Remote-Extra-"]
Events: <none>
たしかにclient-ca-fileがありません。
kopsで構築したk8sのconfigmap/extension-apiserver-authenticationにはclient-ca-fileがあったので、これがMetrics Serverをデプロイできない原因のようです。
このあたりの仕組みは全然理解できていないので、自分が工夫すれば動くものなのかもよく分かりません。
ちゃんと調べてまとめようと思います。