fbpx

The ultimate guide to Kubernetes #mirantis #docker #kubernetes #k8s

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本ブログは Mirantis社のblog記事「The ultimate guide to Kubernet」の翻訳記事です。

Kubernetes についてよく言われている事で、使いにくいという評判があります。 しかし、本当に Kubernetes は使いにくいのでしょうか? Mirantis ではあなたの仕事にお役に立てる様に、今までのBlog記事を Kubernetes ガイドとしてまとめることにしました。

大きく2つに分かれています。Task-based では、Kubernetes のデプロイ、アプリケーションの作成、コンテナ間の通信などのタスクに関する情報を見つけることができます。各オブジェクトの章では、Deployments、Pods、Services などの Kubernetes オブジェクトに関する情報を見つけることができます。

まだコンテンツがないセクションもありますが、随時これらのセクションも埋めていく予定ですので、取り上げてほしいトピックや、特に価値があると思うリソースへのリンクなどの提案がありましたらお知らせください。
(※ 日本語訳記事についても随時更新していきます。)

Task-based

Introduction to Kubernetes

☆ Kubernetes を恐れないで →(原文)(日本語訳

Kubernetes は、現在利用可能なコンテナオーケストレータの中で最も幅広い機能を持っており、それは多くのパワーと複雑さ要求しています。これは、初めて Kubernetes の世界に飛び込む多くの人は圧倒され、始めるのを躊躇してしまうほどです。ここでは、あなたが恐れているかもしれない 5 つのことと、始めるための 5 つの方法を紹介しています。

☆ 初めてのKubernetes → (原文)(日本語訳

Kubernetes は、コンテナのインスタンス化とオーケストレーションが必要な開発者にセルフサービスアクセスを提供する方法を提供します。ここでは、始める人のための入門編を紹介しています。

Deploying Kubernetes

☆ 初めての Kubernetes クラスタをオンプレミスで構築する → (原文)(日本語訳

この記事では Docker Enterprise を使った本番クラスタの作成方法を紹介しています。

☆ Kubeadm で Kubernetes をインストールする方法。簡易版 →(原文)(日本語訳

たまに Kubernetes クラスタが必要なだけで、いじくりまわしたくないときがあります。この記事では、K8s コミュニティがデプロイプロセスを簡素化するために作成したツールである Kubeadm を使ってシングルノードの Kubernetes クラスタを作成するためのクイックで簡易的な方法を紹介します。

☆ KDC を使ったマルチノード Kubernetes : クイック&簡易ガイド → (原文)(日本語訳)

Kubeadm-dind-cluster(KDC)は、VM や個別のベアメタルマシンではなく、 Kubernetes ノードを Docker コンテナ(名前の Docker-in-Docker(dind)の由来)としてデプロイすることで、単一のマシン上にマルチノードクラスタを簡単に作成できるようにするスクリプトです。

☆ OpenStack ベースの KaaS クラスタの作成と管理 → (原文)(日本語訳)

KaaS 管理クラスタをデプロイした後、実際の Kubernetes クラスタの作成を開始します。これらのクラスタは管理クラスタと同じクラウドプロバイダタイプを使用するため、管理ノードを OpenStack 上にデプロイした場合、子クラスタも OpenStack 上で実行されます。

☆ 瓶の中に Airship をデプロイしよう。クイック&簡易ガイド → (原文)(日本語訳)

Airship は OpenStack を Kubernetes 上にデプロイします。そのため、先に Kubernetes クラスタを構築します。これはクラスタを立ち上げるためのもう一つの選択肢になります。

Kubernetes とコンポーネントの設定

☆ Virtlet: Kubernetes の Pod として VM を実行する → (原文)(日本語訳)

Virtlet を使うと Kubernetes 内で VM を走らせることができます。

☆ Kubernetes v1.6 での etcd について知りたいと思っていたことすべて(聞けなかったこと) → (原文)(日本語

etcd は Kubernetes コントロールプレーンの唯一のステートフルコンポーネントです。etcd を利用する事で管理者の助けとなりますが、etcd が v2 から v3 になったとき、それは運用者に頭痛の種をもたらしました。

Development

☆ Kubernetes AppController を使った複雑なアプリケーションのモデリング → (原文)(日本語訳)

最初に Kubernetes アプリケーションを学ぶ時、いくつかのピースを含むシンプルなシナリオを見るのが一般的です。それには明示的な依存関係は含まれていません。しかし、依存関係を含むアプリケーションが必要になる場合はどうでしょうか。例えば、ウェブサーバよりも先にデータベースを常に設定しなければならない場合などはどうしょう?リソースが特定の順番で作成されなければならない状況が発生することはよくあることですが、よくあるテンプレートでは簡単には対応できません。

Kubernete sベースのアプリケーションを設計する

☆ Kubernetes を使って 12-factor のアプリを作るには? → (原文)(日本語訳)

クラウドネイティブアプリケーションを定義する 12 の要素があると言われています。 また、Kubernetes はクラウドネイティブ向けに設計されているとも言われています。では、Kubernetes を使って 12-factorのアプリを作るにはどうすればいいのでしょうか。 具体的に 12-factorアプリとは何か、また Kubernetes との関係を見ていきましょう。

YAML を書く

☆ Kustomize 入門 その1:複数の要素の Kubernetes アプリを作成する → (原文)(日本語訳)

Kustomize は、個々のコンポーネントの YAML に触れることなく、個々のパーツから Kubernetes アプリケーション全体を作成できるツールです。 例えば、異なるソースから部品のように組み合わせたり、カスタマイズしたものを Git に保持したり、特定の状況に合わせてオーバーレイを作成したりできます。

☆ Kustomize 入門 その2:オーバーレイで値を上書きする → (原文)(日本語訳)

このチュートリアルの その1では、Kustomize を使って複数のパーツを1つの YAML ファイルに結合し、Kubernetes にデプロイする方法を見ました。その際に、WordPress と MySQL のスペックを組み合わせて、共通の app label を自動的に追加する例を使いました。次に、label ではない既存の値をいくつかオーバーライドする必要がある場合にどうするかを見ていきます。

☆ YAML 入門 その1:Kubernetes デプロイメントの作成 → (原文)(日本語訳)

これまでの記事では、Kubernetes を使ってリソースをスピンアップする方法についてお話してきました。これまではコマンドラインのみで作業してきましたが、もっと簡単で便利な方法があります。それは YAML を使って設定ファイルを作成することです。この記事では、YAML がどのように動作するのかを見て、最初に Kubernetes の Pod を定義し、次に Kubernetes の Deployment を定義します。

☆ YAML 入門 その2:Kubernetes Services と Ingress そして YAML nodes の繰り返し → (原文)(日本語訳)

このシリーズのパート1では、YAML の動作を確認し、2つの基本構造であるマップとリストを使って、Pod や Deployment などの基本的な Kubernetes オブジェクトを作成する方法を紹介しました。その2では、Kubernetes Services や Endpoints、Ingress のコンテキストを YAML の繰り返し記法を使用して強化する方法を見ていきます。

アプリケーションの拡張

☆ Docker ツールを使って Mirantis OpenStack 上にコンテナ化されたアプリを構築するには? → (原文)(日本語訳)

この記事では、Docker ツールを使って OpenStack 上にコンテナ化されたアプリケーションを構築することで、コンテナ化されたアプリケーションの裏で実際に何が起こっているのかを見てみましょう。

アプリケーションの作成

☆ Best of 2019 Blogs:Kubernetes で初めてのアプリをデザインする → (原文)(日本語訳)

Kubernetes は強力なコンテナオーケストレータであり、IT アーキテクトが選ぶコンテナオーケストレータとしての確固たる地位を確立しています。しかし、Kubernetes のパワーを活用するのは容易ではありません。最先端のジェット機のコックピットに入るだけでもそのパワーは十分に感じとれますが、実際に飛ばす方法を知るのは簡単なことではありません。

☆ OpenStack 上で Kubernetes クラスタを作成してアクセスする、その3:アプリケーションを実行する → (原文)(日本語訳)

パート2では実際のクラスタを作成しました。これによりインストールした Kubernetes API と実際にやりとりする準備が整いました。実際にアプリケーション動作させるためには、アクセスするためのセキュリティ認証情報を定義し、コンテナ化されたアプリをクラスタにデプロイし、アプリにアクセスできるように外部に公開する必要があります。

☆ Docker:(いくつかの)ベストプラクティス → (原文)(日本語訳)

Docker が進化し続ける中で、ベストプラクティスを常に把握しておくことは重要です。私たちは JFrog イベントに参加して、Dockerization の課題、Dockerfile
のヒント、本番環境での設定の微調整について語りました。

☆ Kubernetes でのマルチコンテナ Pods とコンテナ通信 → (原文)(日本語訳)

コンテナは、マイクロサービスのような単一の狭義の問題を解決することを目的としていることが多いです。しかし現実の世界では 、完全な解決のためには複数のコンテナが必要な問題があります。この記事では、複数のコンテナを1つの Kubernetes Pod にまとめることと、それがコンテナ間通信にとってどのような意味を持つのかについてお話します

Helm によるアプリケーションのデプロイ

☆ Kubernetes Helm を使ったアプリケーションのデプロイ:クイック&簡易ガイド → (原文)(日本語訳)

コンテナを使用したアプリケーションのデプロイは、従来のアプリケーションのデプロイに比べるとはるかに簡単ですが、Kubernetes を使わずに複数のコンテナを手動で管理してスケールすることはとても困難です。しかし、Kubernetes アプリケーションの管理についても、例えば「 apt-get install mysql 」と比較すると難しそうに見えます。幸いなことに、コンテナエコシステムは、そのレベルのシンプルさを進化させています。そう Helm の出番です。

インフラストラクチャーとオペレーション

☆ Docker Kubernetes Service(DKS)によるKubernetesライフサイクル管理 → (原文)(日本語訳)

Kubernetes を使い始めるためのチュートリアルやガイドはたくさんあります。一般的に、これらのガイドでは、主要な概念を詳細に説明し、最初の Kubernetes クラスタをデプロイするための手順を概説しています。しかし、大規模な組織の本番環境で Kubernetes を展開する場合、展開する事は容易でなく、初期設定や継続的な管理手法の両方に新たな要件を導入する必要があります - よく " Day 1 and Day 2 の運用 "と呼ばれます。

☆ 1000ノード近いノードを持つ OpenStack クラスタを Kubernetes 上にインストールした結果のご紹介 → (原文)(日本語訳)

私たちは、プリインストールされた Kubernetes クラスタに 1000 台近い OpenStack ノードをデプロイして、どのような問題に遭遇するかを調べ、可能であればそれらを修正することを目的としたいくつかのテストを実施しました。いくつかの問題が見つかりそれらを修正できましたが、これらについて説明するのは面白いと考えました。

☆ Kubernetes のスケールとパフォーマンステスト → (原文)(日本語訳)

何千ものコンテナを管理するのは難しいかもしれませんが、Kubernetes がスケール時にどのように振る舞うかを知ればその答えが分かるかもしれません。シアトルで開催された KubeCon では、500 台の物理ノードからなるスケールラボで収集したデータを共有しました。仮想マシンを使用して、最大 5000 台の Kubernetes ノードが実際のワークロードを実行している様子をシミュレーションしました。この環境で複雑なアプリケーション(今回は OpenStack サービス)を大規模に管理しているときに Kubernetes がどのように振る舞うのかを明らかにするためのテストを行いました。

Edge の基板としての Kubernetes

☆ edge cloud の構築方法 その1:簡単な顔認証システムの構築 → (原文)(日本語訳)

インターネットでは、edge cloud とは何かについて、概念的なレベルから多くの話題が飛び交っています。 しかし、実際に edge cloud を構築する方法を教えている人はあまり多くありません。今回はそれに答えます。

☆ OpenStack と Kubernetes をベースにしたオープンソースIoTプラットフォーム → (原文)(日本語訳)

本ブログ記事では、オースティンで開催されたOpenStack Summit Keynote において紹介されたオープンソースの IoT プラットフォームについて、より詳しく解説します。まず、IoT に対するアプローチとビジョン、技術的な概要を説明し、2つのユースケースのサンプルを紹介します。

アプリケーションのスケーリング

☆ Kubernetes 上でクラスタリングされた RabbitMQ → (原文)(日本語訳)

Kubernetes 上でクラスタリングされた RabbitMQ を設定するには、多くのアプローチがあります。今日は、RabbitMQ クラスタリングの最も一般的な落とし穴というか、アプローチについてお話します。自分なりの解決策を考えたいと思っている方は、かなり意味のある内容になっているはずです。

☆ Kubernetes Replication Controller、ReplicaSet、Deployment レプリケーションのオプションを理解する → (原文)(日本語訳)

コンテナ管理ツールとして、Kubernetes は複数のコンテナとレプリケーションをオーケストレーションするように設計されており、実際には現在いくつかの方法があります。この記事では、3つのオプションを見ていきます。Replication Controller、ReplicaSet、Deployment です。

☆ Kubernetes DaemonSets のスケーリング → (原文)(日本語訳)

私たちは、デプロイメントからスケーリングを考えることに慣れています。異なる条件でスケーリングしたい場合、適切なノードを探してポッドを配置します。一方、DaemonSets は別のアプローチをとります。セットに属するノードがあるときはいつでも、指定したポッドを実行します。 例えば、Kubernetes に app=webserver というラベルのノードを作成するときはいつでも nginx を実行するように DaemonSet を作成できます。その仕組みを見てみましょう。

Networking

Calico

☆ OpenStack での BGPaaS - Kubernetes と Calico と OpenStack と OpenContrail → (原文)(日本語訳)

久しぶりに OpenContrail の新バージョン 3.X がリリースされたので、この OpenStack で最も導入されている SDN/NFV の新機能、具体的には OpenStack プライベートクラウドでのユースケースや BGP as a Service の使い方を見てみましょう。

Kubernetes and OpenStack

☆ Kubernetes と OpenStack のマルチクラウドネットワーク → (原文)(日本語訳)

リアルベアメタルの Kubernetes クラスタをネットワークの観点からアプリケーションのワークロードに利用しましょう。

service mesh の利用

☆ コンテナは遊びではなくなった:業界は Draft と Istio で Kubernetes に本気になる → (原文)(日本語訳

インフラ市場が落ち着くにつれ、クラウドを立ち上げた後に何が起こるかに注目が集まっています。今週は、Kubernetes ベースのアプリケーションの開発者を対象とした1つではなく、2つのフレームワークが発表されました。

☆ Istio って? service mesh ですよ。 へぇー凄いね!でも、service mesh って何? → (原文)(日本語訳)

Istio は、サービスメッシュの話があるところならどこでもいたるところで話題になっています。でもそれが何を意味するのかを見てみることが重要です。

☆ シュっ、SpinnakerとIstio(あれシュミスティオだっけ?)でシュメッシュを作る!(Spinnaker Shpinnaker and Istio Shmistio to make a Smesh! Part 1) → (原文)(日本語訳

上司があなたに近づいてきて「問題があります」と言うとき、それは「あなたに解決してもらいたい問題があります」という意味であることを、あなたはよく分かっています。当社の顧客は、ベアメタル上でアプリケーションサービスを配信するカスケード (ウォーターフォール) スタイルから、クラウドネイティブアプリケーションを対象とした継続的な配信へのよりモダンなアプローチへと移行しようとしていることが多いのですが、このようなケースはよくあります。

☆ Smeshの帰還(Spinnaker Shpinnaker and Istio Shmistio to make a Smesh! Part 2) 後編 → (原文)(日本語訳

オープンソースの世界を旅していて最初に学んだことは、与えられたアーキテクチャ内のコンポーネント設計には、より良い ターゲットを構築するためにはいくつもの新しいアプローチが常に存在していること。そして、一つのプロジェクトには、新しいアプリケーションアーキテクチャを開発する際に定義された質問に対するすべての答えが含まれているわけではないということでした。

新規CTA