インストール - Kubernetes
概要
Kubernetesは、コンテナを管理する基盤ツールである。
Kubernetesの基本機能として、デプロイ、拡張、負荷分散、ログ記録、監視などがある。
これは、ソフトウェアの開発および管理が簡便かつ安全になる。
また、ソフトウェアの運用において、高負荷等で異常が起きた場合、スケールアウトしたりフェールオーバーする必要がある。
仮想マシンを使用する構成では、管理はその仮想マシン単位になるため、スケールアウトおよびフェールオーバーの設定も仮想マシン単位でしか行えない。
Kubernetesを使用することにより、コンテナ単位つまりソフトウェア単位で管理することができるため、スケールアウトおよびフェールオーバーもソフトウェア単位で設定することができる。
Kubernetesの基本
Kubernetesをデプロイするとクラスタが展開される。
Kubernetesクラスタは、コンテナ化されたソフトウェアを実行するノード(Node)と呼ばれるワーカーマシンの集合である。
ソフトウェアのコンポーネントはPodと呼ばれ、下図のように、このPodがノードに1つ以上の含まれて展開される。
ノードの制御は、kubeletと呼ばれるエージェントで行われており、ノードへのアクセスはkube-proxyと呼ばれるプロキシを介して行われる。
また、コントロールプレーンと呼ばれるコンポーネントは、クラスタを制御する機能を持つ。
- コントロールプレーンコンポーネント
- kube-apiserver
- Kubernetes APIを外部に提供する。
- Kubernetesコントロールプレーンのフロントエンド
- etcd
- 一貫性、高可用性を持ったキーバリューストアで、Kubernetesの全てのクラスター情報の保存場所
- kube-scheduler
- Podにノードが割り当てられているかどうかを確認して、割り当てを行う。
- kube-controller-manager
- 通知やPodの数を監視する複数のコントローラープロセスを実行する。
- cloud-controller-manager
- 基盤であるクラウドプロバイダーと対話するコントローラーを実行する。
- kube-apiserver
- ノードコンポーネント
- kubelet
- クラスタ内の各ノードで実行されるエージェント。各コンテナがPodで実行されていることを保証する。
- kube-proxy
- クラスター内の各nodeで動作しているネットワークプロキシ
- kubelet
- コンテナランタイム
- コンテナの実行を担当する。
Kubernetesのインストール
クラスタのマイナーバージョン差が1つ以内のkubectlのバージョンを使用する必要がある。
例えば、kubectl v1.23のクライアントは、v1.22、v1.23、v1.24と通信することができる。
最新の互換性のあるバージョンのkubectlを使用することにより、予期せぬ問題を回避することができる。
Kubernetesをダウンロードする。
# 最新のKubernetesをダウンロードする curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" # Kubernetesのバージョンを指定する curl -LO https://dl.k8s.io/release/<バージョン>/bin/linux/amd64/kubectl 例. curl -LO https://dl.k8s.io/release/v1.23.0/bin/linux/amd64/kubectl
Kubernetesをインストールする。
# システムディレクトリにインストールする場合 sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl # 任意のディレクトリにインストールする場合 chmod u+x kubectl mkdir -p <Kubernetesのインストールディレクトリ> mv kubectl <Kubernetesのインストールディレクトリ>
任意のディレクトリにKubernetesをインストールした場合は、~/.profileファイル等に環境変数PATHを追記する。
vi ~/.profile
# ~/.profileファイル export PATH="<Kubernetesのインストールディレクトリ>:$PATH"
Kubernetesが正常にインストールされているかどうかを確認する。
kubectl version --client
次に、kubectl convertプラグインをインストールする。
このプラグインは、異なるバージョン間でマニフェストを変換することができる。
これは、Kubernetesでマニフェストを非推奨のAPIバージョンに移行するのに役立つ。
kubectl convertプラグインをダウンロードする。
curl -LO https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert
kubectl convertプラグインをインストールする。
# システムディレクトリにインストールする場合 sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert # 任意のディレクトリにインストールする場合 chmod u+x kubectl-convert mv kubectl-convert <Kubernetesのインストールディレクトリ>
kubectl convertプラグインが正常にインストールされているかどうかを確認する。
kubectl convert --help