LoginSignup
4
2

More than 5 years have passed since last update.

kube-awsの近況 / Recent updates to kube-aws Jan-April, 2017 #k8sjp

Last updated at Posted at 2017-04-20
1 / 20

本スライドは「Kubernetes Meetup Tokyo #4」の登壇資料です。


kube-awsの近況


本当にあった怖い(?)話

現象: 本番k8sクラスタでapiserverのaudit loggingを有効化してたらNヶ月後にapiserverのpodがno space left on deviceエラーを延々と履き続けるように

# ls -lah /dev
total 1.9G
...
lrwxrwxrwx. 1 root root      15 Dec 27 06:36 stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root      15 Dec 27 06:36 stdin -> /proc/self/fd/0
-rw-------. 1 root root     84M Mar 17 09:28 stdout
lrwxrwxrwx. 1 root root      15 Dec 27 06:36 stdout-2016-12-28T06-08-02.236 -> /proc/self/fd/1
-rw-------. 1 root root    100M Dec 29 02:58 stdout-2016-12-29T02-58-48.742
...
  • /dev/stdoutが84MBの"ファイル"?
  • stdout-2016-12-28T06-08-02.236 -> /proc/self/fd/1 ??
  • apiserverにTwelve factor的にaudit logを標準出力に出すために--audit-log-file /dev/stdoutを指定してた

kube-aws

kube-aws init -> kube-aws up ->

image


TL;DR;

  • kube-aws = Kubernetes on AWS
  • KubernetesクラスタをAWS上に構築するCLIツール(CloudFormation利用)
  • Kubernetes Meetup #3から3ヶ月でv0.9.3→v0.9.6.rc.2へ
  • さらに本番環境で使いやすくなりました

v0.9.4

  • Bypass 16KB userdata limit
  • Easier to configure, easier to version-control, more tightly integrated node pools
  • Flexible and customizable network topology
  • Add DOCKER_OPTS environment variable to limit docker log files
  • kube2iam support

v0.9.5

  • Managed HA etcd cluster
  • Auth token file support
  • AWS China region support
    • Bring your own docker images

v0.9.6 (WIP)

  • K8s 1.6
  • Etcd3
  • Manual/Automated Backup & Restore for Etcd3
  • Kubelet TLS bootstrapping
  • Rescheduler support
  • Support for multiple k8s API endpoints
  • Reusing existing ELBs and SGs for controller nodes

とてもLTで紹介しきれないので


ハイライトだけ


Kubernetes Incubatorに採択


続・AWS限界突破

  • UserData
    • OS起動後にEC2インスタンスを色々設定変更するのに使う
    • kube-awsデフォルト+ユーザが自由に変更可
    • kube-awsのカスタマイズ性の要
  • kube-awsデフォルトだけでUserDataのサイズ上限16KBに近くなってしまった
    • ユーザがそれ以上カスタマイズできない
  • S3を経由させることにした
    • UserDataを2分割: UDをS3からDLするUD

インフラ構成をより柔軟にカスタマイズできるように

  • Network Topology
  • Private/Public、既存/新規Subnetを自由に組み合わせ
  • 例: 特定のPodだけはPrivateネットワーク内で実行して、かつNAT Gateway経由でインターネットへ出て欲しい。そのとき、ソースとなるPublic IPは特定のEIPにしたい
  • 本番環境だとよくある構成

おさらい: ノードプール

  • 様々なスペックのサーバをいい感じに混在させる機能
    • EC2インスタンスタイプ
    • EBSボリューム
      • タイプ
      • サイズ
      • IOPS
    • など

コマンド体系がシンプルに

  • 昔: node-pools/<ノードプール名>/cluster.yaml
    • kube-aws node-pools [up|update|destroy] --pool-name <ノードプール名>
  • 今: cluster.yaml: worker.nodePools[]というキー追加
    • kube-aws [up|update|destroy]
      • cluster.yamlに定義したノードプールを勝手にCRUDしてくれる
  • CloudFormation Nested Stacks
    • 副産物: 大きなクラスタの構築時間短縮

H/A Etcdクラスタ

  • EtcdノードをAutoScaling Group化
    • ノードが故障したら、新ノードが引き継ぎ
    • Etcdクラスタからは、ノードが一時的に通信不能になっただけのように見える=自動復旧
  • 手法: EIP+EBSのペアをプール
    • 例: 3ノードEtcdクラスタなら3ペアをプール
    • 1ペア=1ノードのIdentityと状態
    • ペアさえ残っていれば、EC2インスタンスが故障してもEtcdのデータは消えない

次バージョンv0.9.6予定

  • Kubernetes 1.6, Etcd 3
  • Etcd自動ディザスタリカバリ
    • 全Etcdノードのディスクが同時に壊れても、自動バックアップから自動復旧
    • EBSのDurabilityは100%ではない(AFR 0.2%)
  • Multiple Kubernetes API Endpoints
    • Kubernetes"クラスタ"のBlue-Greenデプロイ

まとめ

  • kube-awsがさらに本番環境で使いやすくなりました

自己紹介 & おわり

twitter/github/slack.k8s.io: @mumoshu (むもしゅ)
kube-aws唯一のメンテナ

Fin :bow: :clap:

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2