Pocket

Kubernetes!!!

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


■Whats Kubernetes

 

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

dockerホストをweb管理できるshipyardが凄すぎる件

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

それが!

Kubernetes!!!

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

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

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

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

・kubernetes architecture

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

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

Pocket

カテゴリー: DockerKubernetes

adachin

1989年生まれのSRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

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