Tectonic CoreOS を使って AWS 上に Kubernetes クラスタを構築する

CoreOS 社が提供している Kubernetes にセキュリティ、監視、マルチクラウド統合、そしてカッコイイ管理インターフェイスを備えた統合環境 Tectonic を使用してみた。

同社の推しは「Kubernetes の管理コストをさげる」「クラウドベンダーにロックインされない」だが、逆に柔軟が設計/設定ができる Kubernetes の自由度を下げ、同社にロックインされるとも受け取れる。試していないが Openshift も似たような統合環境のようだ。

coreos.com

課金体系

kubernetes クラスタのノードが 10 台までは無料、それ以上は応相談。

インストール

インストールの前に CoreOS の URL からアカウントを作成してライセンス情報と設定ファイルを入手する必要がある。CoreOS 社が提供する圧縮ファイルの中のインストーラを起動し、ブラウザ上で各種情報(AWS の場合、認証情報や Manage, Worker, Etcd それぞれのノード台数とインスタンスタイプなど)を入力して進めていく。内部では Terraform が使われている。インスタンスタイプはデフォルトで t2.medium なのでそこまでお金はかからない。

ハマりどころ

  • デフォルトでは Manage : Worker : Etcd = 3 : 3 : 3 で kubernetes クラスタを構築しようとするが、個人の AWS だと EIP の上限はだいたい 5 になっているのでそこでエラーになる。
  • 使用するドメインTTL を短くする必要がある。retry = 90, ttl = 89 にして成功した。

DNS caching

An issue arises when a domain's Address record (A record) resolution is attempted before Route 53 publishes the cluster's A record and the NXDOMAIN response is cached in the NCACHE (RFC2308). This negative response may be cached for up to the number of seconds set in the domain's SOA record's TTL. Resolution fails until the negative caching TTL expires. These TTLs are typically large enough to disrupt the installation. The current workaround is to ensure your TTLs are set to a low interval, or to wait for them to expire, then proceed with the installation.

AWS Troubleshooting | Tectonic Installer on AWS | CoreOS

変更前 SOA) ns-123.awsdns-45.com. awsdns-hostmaster.amazon.com.  1 7200 900 1209600 86400
変更後 SOA) ns-123.awsdns-45.com. awsdns-hostmaster.amazon.com.  1 7200 90 1209600 89
  • 上記エラーの場合 Destroy & Start Over でやり直すことができるのだが、IAM ロールが削除されていないようで Already Exists なエラーになるので削除する。

感想

tectonic-system というネームスペースが追加されて、そこで Tectonic 固有の監視やコンソールの Pods が動いているようだ。Prometheus, Grafana も同時にインストールされる。ノードが 10 台まで無料(EC2 や AWS リソースはもちろん自分で払う) なので、開発環境にはよいかもしれない。個人的には kops のほうがコマンド一発で使いやすい。

  • Tectonic Console 1 f:id:kyagi:20180206022634p:plain

  • Tectonic Console 2 f:id:kyagi:20180206022645p:plain

  • Tectonic Console 3 f:id:kyagi:20180206022731p:plain

  • Prometheus f:id:kyagi:20180206022743p:plain

  • Grafana f:id:kyagi:20180206022748p:plain

クラスタ削除は terraform destroy で可能。構築した時のインストーラの情報を削除しないように注意されたし。(´・ω・`) https://coreos.com/tectonic/docs/latest/install/aws/uninstall.html