クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

Kubernetes の基礎

レッスン全文をここで読めます。無料アカウントを作成すると、実際のラボで実践できます。

仮想マシンラボ読了目安 15分コマンド10個

動かし続ける

お店の Web サイトは一日中つながっていなければなりません。動かしているコンピューターが夜中の3時に壊れたら、誰かが別の場所で起動し直す必要があります。Kubernetes はその仕事をします。何を動かしたいかを伝えると、動かし続け、1つ消えるたびに新しいコピーを起動します。

このレッスンが終わると

メモ

Deployment が何をするかと、その Pod の1つを削除すると何が起こるかを説明できます。

キーワード

  • クラスター:Kubernetes があなたのプログラムを動かすマシンの集まり。
  • ノード(node):クラスターの1台のマシン。
  • Pod:動いているプログラムの1つのコピー。1つ以上のコンテナでできている。
  • Deployment:同じ Pod を何個ほしいかという願いで、Kubernetes が実現し続ける。
  • 名前空間(namespace):あるグループのものを別のグループのものから分ける、名前の付いたフォルダー。
  • kubectl:クラスターと話すコマンド。

ウォームアップ:すでに知っていること

メモ

頭の中で答えましょう。1. コンテナとは何ですか。2. プログラムが1台のコンピューターでしか動いておらず、そのコンピューターが壊れたらどうなりますか。3. プログラムをスケールするとはどういうことですか。もうすぐ3つとも必要になります。

はじめる前に

メモ

このレッスンの上のバーにある ラボを開始 を押します。このラボは、小さな Kubernetes クラスター k3s が入った、あなた専用の Ubuntu マシン まるごとなので、初回は起動に数分かかります。各 実行 ボタンは、そのコマンドをマシンのターミナルに、同じセッションで順番に入力します。クラスターの準備ができていないと表示されたら、1分待ってからもう一度押します。様子を見たり自分で入力したりするには、バーの ターミナルを開く を押します。Kubernetes には 2 GB のメモリが必要です。これは学校や大学のアカウントのマシンで、無料アカウントのマシンは 1 GB です。

読めるクラスター

このクラスターは1台のマシンなので、ノードは1つです。kubectl get nodes がそれを表示します。STATUS は Ready、役割は control-plane、最後の列は k3s のバージョンです。kubectl get pods -A は、すべての名前空間の Pod を表示します。kube-system のものは Kubernetes 自身が起動したもので、coredns はクラスターに名前を与え、local-path-provisioner は Pod にファイルの置き場所を与えます。

コマンド
kubectl get nodes

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
kubectl get pods -A

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

Deployment が Pod を動かし続ける

まず自分用の名前空間 demo を作り、ここでの操作がラボの邪魔にならないようにします。次に hello という Deployment を作ります。小さなプログラム busybox が sleep を実行するコピーが3つです。このマシンはイメージのレジストリに届かないので、このラボの Pod はどれも、マシンにある唯一のイメージ busybox を使います。kubectl get pods -n demo は、名前が hello- で始まりランダムな文字で終わる3つの Pod を表示します。数秒で Running になり、それまでは Pending か ContainerCreating です。

コマンド
kubectl create namespace demo

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
kubectl create deployment hello --image=busybox:1.37.0 --replicas=3 -n demo -- sleep 3600

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
kubectl get pods -n demo

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

Pod を削除するとプログラムが止まると思っている人が多くいます。止まりません。Deployment はまだ Pod を3つ望んでいるので、別のものを作ります。プログラムを止めるには、Deployment を削除するか、数を減らします。

Pod を削除すると、戻ってくる

3つの Pod をまとめて削除します。--grace-period=1 は素早く止めるためだけのものです。コマンドは、削除した Pod ごとに1行、合わせて3行を表示します。そのあとでもう一度 Pod を表示すると、3つあり、新しい名前で AGE は数秒です。Kubernetes に起動を頼んだ人はいません。Deployment が1つもないことに気づいて、3つ作ったのです。

コマンド
kubectl delete pods -n demo -l app=hello --grace-period=1

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
kubectl get pods -n demo

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

チェック

ヒント

3つとも削除したのに、なぜまた Pod が3つあるのでしょうか。答え:Deployment は3つの Pod という願いで、Kubernetes はその願いを実現し続けるからです。

数を変えて、片付ける

スケールとは、願いの数を変えることです。kubectl scale は5つを求めます。2つの新しい Pod が起動するあいだ、Deployment の READY は 3/5 と表示され、そのあと 5/5 になります。最後のコマンドは名前空間を削除し、中のものもすべて消えて、ラボの準備ができます。

コマンド
kubectl scale deployment hello -n demo --replicas=5

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
kubectl get deployment hello -n demo

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
kubectl delete namespace demo

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

さあ、ラボに取り組もう

ヒント

1つの Deployment が Pod を3つ保つのを見ました。あなたのラボはもっと求めます。1つの Service の名前の後ろに3台の Web サーバー、ページの元になる ConfigMap、そして Kubernetes の言うことを読んで直す3つの壊れた Deployment です。ターミナルで cat README.md を実行して、ホームフォルダーの README.md を開きましょう。

最後のチェック

ヒント

見返さずに答えましょう。1. Deployment は何をしますか。2. 3つの Pod の Deployment で Pod を1つ削除すると何が起こりますか。3. kubectl scale は何を変えますか。4. 名前空間は何のためにありますか。答え:同じ Pod を決まった数だけ動かし続ける。新しい Pod を作るので、また3つになる。Deployment が望む Pod の数。あるグループのものを別のグループのものから分ける。

先生へ

ヒント

このレッスンは、ラボで進めるレッスンの小さな例です。ステップと実行ボタンがレッスンで、ラボは生徒それぞれのコピーです。VM ラボで行い、生徒はそれぞれ自分の Ubuntu マシンを持ち、その中に1ノードの Kubernetes クラスター(k3s)があります。実行ボタンはそのターミナルに入力して、表示された結果を見せます。学習のポイント:1. Deployment は Pod の数という願いである。2. Kubernetes は願いを実現し続けるので、削除した Pod は戻る。3. スケールは数を変える。よくある間違い:Pod を削除するとプログラムが止まると思うこと。準備するもの:ラボとブラウザー、そして学校や大学のアカウント(クラスターに 2 GB が必要なため)。ヒント:Pod を削除する前に、何が起こるかとその理由をクラスに尋ねましょう。ラボ自体には、クラスターを採点するチェックがあります。レッスンは自分のモジュールにコピーして変更するか、レッスンビルダーの ラボ メニューでゼロから作れます。

このラボとソースについて: Kubernetes のラボ:専用の Ubuntu VM に生徒ごとの1ノード k3s クラスター

授業で教えていますか?これらのレッスンを生徒に割り当て、採点と生徒ごとのラボを使えます。