LINEで送る
Pocket

Kubernetes!!!

私実はKubernetesについては触ったことなかったので、
この機会にDocker for Macで立ち上げてみました。
もろもろ概念なども紹介していきます。


■Whats Kubernetes

 

Dockerはコンテナの作成やコンテナ内でファイルシステムとして使われるイメージの作成、
管理、コンテナの実行といった機能が提供されていますが、ネットワークのルーティングや
複数コンテナの連携、複数台のサーバーを対象にコンテナを横断的に管理する機能などは
提供されていないんですよね。。個人的にshipyard使ってましたが。。。

https://blog.adachin.me/wordpress/archives/3182

じゃあクラスタ環境でDockerを利用する場合はどうすんのよって感じで
別途何らかの管理方法を用意する必要がありました。

それが!

Kubernetes!!!

ちなみにKubernetesはGoogleが立ち上げたプロジェクトで、Microsoft、Red Hat、IBMなども開発に参加してます。からのGoogleのデータセンターでコンテナ技術を利用してその経験を生かして開発されているそうです。AWSの場合EC2で構成されていると二台構成で冗長化を考えると思いますが、負荷分散するためにLBやらオートスケールなどなど、急なアクセス来た場合、負荷に耐えきれず結局サービスダウンしてしまったり、事前にサーバ台数増やしてもコストかかるだけ。Kubernetesは逆にどんなメリットが考えられるのか。

・サーバー台数と関係なく、クラスタリングで複数のアプリケーションを起動できる
・負荷に応じてアプリケーションごとに自動で数を増減できる
・サーバーを入れ替えることなくアプリケーションのデプロイができる。(数秒程度)

ではどんな機能があるのか。

・関連するコンテナのグルーピング
・コンテナに割り振られるIPアドレスの管理
・コンテナ間のネットワークルーティング管理
・複数のコンテナを利用した負荷分散
・コンテナに割り当てるストレージの管理
・コンテナの監視

・kubernetes architecture

https://kubernetes.io/docs/concepts/overview/components/

コンポーネント名説明
kube-apiserverkubernetesを操作するためのAPIを提供する
kube-controller-managerコンテナの状態管理やノードの管理と言った各種管理作業を行う
kube-proxyコンテナへのネットワークルーティングおよび負荷分散を行う
kube-scheduler各ノードに対しコンテナの割り当てなどを行う
kubelet各ノード上でのコンテナ作成/削除やボリュームの割り当てなどを行う
kubectlAPI経由でKubenetesを操作するためのクライアントツール

コンポーネントは他にもあるので公式を読みましょう。
最近Google Container EngineからGoogle Kubernetes Engineに名称が変わったり、
AWSもAmazon Elastic Container Service for Kubernetes (Amazon EKS)対応したので
幅広くなっていきました。

早速インストール。


■Kubernetes-powered Docker for Mac !!!!!!

Docker founder/CTO Solomon Hykes.

 

 

DockerCon EU 2017にてDockerがKubernetesを完全統合・サポートすることになり、
Docker for Macでkubernetesが使えるようになりました!2017/12/14(Edge版のみ)


■Install

https://docs.docker.com/docker-for-mac/install/

・Docker for Mac Edge

既にStable版インストールしてる方は特に気にしなくてインストールしちゃってOK。

・kubernetes setting

起動するとkubernetesタブが出てるやんけ!Enable kubernetesにチェックします。
Show system containersもチェックしたのでKubernetesの動作に必要なコンテナが起動しているはずです。

すると「インストール時間かかるけどいいのかい!?」と聞かれるので
そんなこと無用でインストールします。

1分ももかからなかった希ガス。

ちゃんとkubernetes動いてる!!


■Use kubectl command

・docker ps

Kubernetes動作に必要なDNS,API Server,Etcd,Scheduler,Proxyが動いてます。

・docker images

イメージも盛り沢山。

・kubectl -h

ちゃんとkubectlコマンドもインストールされてます。

・kubectl get nodes

ほほう1nodeでクラスタ立ち上がってるのが分かりますな。


■まとめ

kubernetes使用しない場合はEnable kubernetesチェック外してapplyすればOKです。
長くなったので次回は適当にkubernetes使って構築してみます・3・

・参考

https://qiita.com/mihirat/items/ebb0833d50c882398b0f
https://knowledge.sakura.ad.jp/3681/

LINEで送る
Pocket

カテゴリー: DockerKubernetes

あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、他社インフラレスポンス改善、ランサーズでの副業、ansibleでのインフラコード化を推進し、未経験によるエンジニアのMENTAなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなし中。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください