kubelet? kubectl? Minikube?

Kubernetesとは?

コンテナ化されたアプリケーションの展開、スケーリング、および管理を自動化するためのオープンソースシステム。

Kubernetesクラスタとは?

コンテナ化されたアプリケーションを実行するためのノードマシンのセット。Kubernetesを実行しているときは、クラスタが実行されている。

kubeletとは?

kubernetesマスターと通信するためのエージェントがkubelet。上段の画像を参照ください。Kubernetesクラスタでは、マスターでAPIサーバが動作しています。クラスターの中でワーカーマシンとして動いているノード(VMもしくは物理マシン)の中にkubeletがある。ノードは、マスターが公開しているKubernetes APIを使用してマスターと通信します。

ノード と pod と コンテナ の関係

  1. ノード > pod > (Docker)コンテナ
  2. podに対してネットワークが張られている(おそらく仮想ネットワークインタフェースがpodに付随し、一意のIPアドレスが割り当てられている)
  3. 1podにつき1(Docker)コンテナ、1podにつき複数(Docker)コンテナの両方が可能
  4. kubernetesは、コンテナではなくpodを管理する

kubectlとは?

マスターのAPIサーバに接続可能であれば、クラスタの外部からでもKubernetesを操作できます。kubectlはAPIを操作するためのコマンドラインツール。

kubectlインストール方法

Windowsの場合、コマンドプロンプトで以下を実行します。Windows PowerShellではエラーが出て実行できませんでした。

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/windows/amd64/kubectl.exe

kubectlバージョン確認

kubectl version --client

もしくは

kubectl version --short --client

kubeadmとは?

kubeadm initやkubeadm joinなどのコマンドを提供するツールで、Kubernetesクラスターを構築する上でのベストプラクティスを反映した「近道」を提供するもの

kubeadmは実用最小限のクラスターをセットアップするための処理を実行します。設計上、kubeadmはブートストラップのみを行い、マシンのプロビジョニングは行いません。同様に、Kubernetesダッシュボード、モニタリングソリューション、クラウド向けのアドオンなど、あれば便利でもなくても支障のない各種アドオンのインストールも範囲外です。

https://kubernetes.io/ja/docs/reference/setup-tools/kubeadm/

Minikubeとは?

Local Kubernetesの選択肢の一つ。ローカルマシン上にVMを作成し、1つのノードのみを含む単純なクラスターをデプロイする軽量なKubernetes実装。Linux、Windows、macOSで利用可能。

Minikube CLIとは?

起動、停止、ステータス、削除など、Kubernetesクラスターを操作するための基本的なブートストラップ操作を提供。

kindとは?

Local Kubernetesの選択肢の一つ。kind(Kubernetes in Docker)。

heptioとは?

aws-iam-authenticator(旧 heptio-authenticator-aws)のこと。おそらくAWSのIAMの認証を行うツール。EKS での k8s クラスタ作成と操作には awscli + kubectl + aws-iam-authenticator(旧 heptio-authenticator-aws) の3つが必要だったが、Amazon EKS API に GetToken API が追加され、awscli + kubectl の2つでよくなった。そのため、不要なものになった。

コメントをいただくことがしばしばあるため、コメント機能を有効化しました。わからないこと、間違っていること、疑問に思うこと、何でも質問受け付けます。間違っていることは適宜修正させていただきます。お気軽にコメントください。また、正しい回答を出来る方は、正しい回答でぶった斬ってコメントいただけますと幸いです。