Kubernetesとは何か
Kubernetes(クバネティス)は、アプリを入れたコンテナを、たくさんのコンピュータで動かし続ける道具です。何をいくつ動かしたいかを書いておくと、Kubernetesがその通りに保ちます。
たとえば、ラーメン店の注文アプリを動かすとします。1台が止まっても、残りで動かし続けたいはずです。このレッスンでは、ノード、名前空間、Podという3つの基本の言葉を、本物のクラスタで見ます。
このレッスンのゴール
メモ
ノード、名前空間、Podがそれぞれ何かを説明できる。
重要な言葉
| ことば | いみ | れい |
|---|---|---|
| クラスタ | Kubernetesが管理する、コンピュータの集まり | |
| ノード | クラスタの中の、1台のコンピュータ | |
| Pod | コンテナを1つ以上入れた、動かす単位 | |
| 名前空間 | クラスタの中を仕切る、名前の入れ物 | kube-system |
| コンテナ | アプリと必要なものを1つにまとめた箱 | |
| kubectl | クラスタに話しかけるコマンド | kubectl get nodes |
学生が入力するセルは、このプレビューでは空白です。
クラスタはノードの集まり
ノードは、クラスタの中の1台のコンピュータです。本物のクラスタには何台ものノードがあり、仕事を分け合います。
このラボの k3s は、軽い Kubernetes です。ノードは1台で、あなたの仮想マシンそのものです。1台でも、使い方は何台ものクラスタと同じです。
入れ物の大きさを比べる
| 言葉 | 何か | このラボでの例 |
|---|---|---|
| クラスタ | ノードと、それを管理するしくみの全体 | この仮想マシンの k3s |
| ノード | 1台のコンピュータ | ノード1台だけ |
| 名前空間 | クラスタの中の仕切り | default、kube-system |
| Pod | 動かす単位。コンテナが入る | kube-system の coredns |
| コンテナ | Podの中で動くアプリ | busybox |
学生が入力するセルは、このプレビューでは空白です。
kubectl get nodes はノードを並べる
kubectl get nodes は、ノードを1行に1つ出します。STATUS が Ready なら、仕事を受けられます。
ROLES には control-plane と出ます。クラスタを動かす役目も、この1台が持つという意味です。NAME の値と AGE は、マシンごとに違います。
ノードの一覧
kubectl get nodesここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
名前空間はクラスタの中の仕切り
名前空間は、クラスタの中を仕切る名前の入れ物です。別々の名前空間なら、同じ名前のものを置けます。
kube-system には、Kubernetes自身が使うPodが入っています。名前空間を選ぶには -n を付けます。付けないと、default の中を見ます。
名前空間の一覧
kubectl get namespacesここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
kube-systemのPod
kubectl get pods -n kube-systemここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
Podは動かす単位
Podは、コンテナを1つ以上入れた、動かす単位です。Kubernetesは、コンテナでなくPodを並べて動かします。
kubectl run は、Podを1つ作ります。kubectl get pods の READY は、動いているコンテナの数と、全部の数です。1/1 は、1つのうち1つが動いている印です。
名前空間を作る
kubectl create namespace cafeここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
Podを1つ作る
kubectl run order --image=busybox:1.37.0 -n cafe -- sleep 3600ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
Podが動くまで待つ
kubectl wait --for=condition=Ready pod/order -n cafe --timeout=90sここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
cafeのPod
kubectl get pods -n cafeここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
ノード名とIPも見る
kubectl get pods -n cafe -o wideここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
よくある間違い
注意
Podが消えたら、Kubernetesが自動で戻してくれると思いがちです。それは違います。kubectl run で作ったPod1つは、消すとそのままなくなります。戻す役目を持つのは、次のレッスンの Deployment です。
Podを消す
kubectl delete pod order -n cafeここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
消えたことを確かめる
kubectl get pods -n cafeここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
名前空間を片づける
kubectl delete namespace cafeここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
さらに挑戦: 表の見出しを読む
すべての名前空間のPodは、kubectl get pods -A で見られます。この表には、左に NAMESPACE の列が増えます。
課題の関数は、どこを直せばこの表も読めるでしょうか。列の位置が1つずれるので、parts[0] と parts[2] の番号を考えましょう。