■はじめに
•Kubernetesとは、製品名が長く先頭のkと末尾のsの間に8文字あるため「k8s」と略す。
•Kubernetes自身にはコンテナを実行する機能はありません。
◼︎Kubernetesの基本機能
1.コンテナ実行環境をマニフェスト(テキストファイル)で管理可能
2.コンテナのスケジューリング/オートヒーリング
→どのサーバでコンテナを起動するかの制御(=スケジューリング)
→ノードやコンテナ、アプリ故障時にコンテナを再起動や再作成して自動復旧
3.コンテナのリソース管理
→CPUやメモリ使用率に応じてコンテナのスケールイン/アウトが可能(手動も自動も可)
4.ロードバランシングとサービスディスカバリ
→コンテナへの通信をロードバランシング可能
→どのコンテナがどこで動いているかを知るサービスディスカバリ機能
5.基盤リソースの抽象化
→コンテナ間ネットワークの仮想化
→コンテナのボリューム(永続化領域)の抽象化
Kubernetesは管理下の複数のサーバをクラスタリング(まとめて管理)します。
〇Master…主にAPIを提供したり、サーバやコンテナを管理するコンポーネントが起動。
本資料では「Master」または「Master Node」と呼びます。
〇Node…主にユーザが作成したコンテナが起動。
「Worker」または「Worker Node」と呼ぶ。
■Kubernetes上のコンテナのネットワーク
Kubernetes上のコンテナ間のNWは仮想化されており、コンテナが起動しているサーバに関係なく、論理的にコンテナ同士は直接通信可能なネットワークに接続する。(=オーバーレイNW)
コンテナにはオーバーレイNW上のプライベートIPが付与され、通常では外部のサーバから直接アクセスできません。
~k8sのコマンドを打ってみよう~(´ω`)カタカタ
Kubernetesの操作には「kubectl」コマンドを使用。(言い方は、キューブコントロール)
✌コマンド実行は大きく2つ✌
①kubectlコマンドの引数を駆使して操作する方法。主に簡単な操作に使用。
②kubectlにマニフェストと呼ばれるテキストファイルを読み込ませて実行する方法。
複雑なコンテナやネットワークの設定をKubernetesに投入する場合に使用。
■Kubernetesの状態確認
→下記コマンドでKubernetesが正常に動作していることを確認する。
kubectl get node -o wide
☝-o wide はノードのIPやカーネル等の詳細情報を表示するためのオプションである。
■Hello World -Apacheの起動してみよう
→Kubernetes上で、Apacheコンテナ(Webサーバ)を起動しアクセスしてみましょう。
マニフェストを投入するには「kubectlapply-fファイル名」を使用。
kubectl apply -f/root/k8s/hello-world/hello-world.yaml
-f…filenameの略。
■Apacheコンテナの起動を確認
→コンテナができていることを確認する。
kubectl get pod
NAME READY STATUS RESTARTS AGE
kubectl get service
NAME EXTERNAL-IP PORT(S) AGE
kubernetes 10.46.0.7 493/TCP apache
apache 172.19.255.2 80:31419/TCP 4m54s#
apacheのアクセスIPアドレス、PORTは80となる。
kubectl get pod -o wide
→-owideオプションを付けるとより詳細な情報が表示される。
#kubectl get service -o yaml
→マニュフェストファイルを全て表示。
#kubectl get service apache-o yaml
→hello-worldで投入した「apache」という設定だけを対象に表示することもできる。
#kubectldescribe pod apache~
→「kubectldescribe~」で各設定の詳細情報や状態を確認することができる。
<削除のコマンド>
kubectl delete -f 場所
※設定を全て削除することができる。
全て削除できているか確認する。