ノードは、以前には ミニオン としても知られていた、Kubernetesにおけるワーカーマシンです。1つのノードはクラスターの性質にもよりますが、1つのVMまたは物理的なマシンです。各ノードにはPodを動かすために必要なサービスが含まれており、マスターコンポーネントによって管理されています。 ワーカノードの追加 追加のWorkerノードを起動. Masterノードをセットアップした時に表示された情報を元に、以下のコマンド … Workerノードを追加せずにMasterノードのみで運用する場合はこれで完了です。 お疲れ様でした。 [W] Masterノードにjoinする. すべてのKubernetesノードでは少なくとも以下のものが動作します。これらのコマンドを使用して、アプリケーションがいつデプロイされたか、それらの現在の状況、実行中の場所、および構成を確認することができます。Podは、アプリケーション固有の「論理ホスト」をモデル化し、比較的密接に結合されたさまざまなアプリケーションコンテナを含むことができます。 たとえば、Podには、Node.jsアプリケーションを含むコンテナと、Node.js Webサーバによって公開されるデータを供給する別のコンテナの両方を含めることができます。Pod内のコンテナはIPアドレスとポートスペースを共有し、常に同じ場所に配置され、同じスケジュールに入れられ、同じノード上の共有コンテキストで実行されます。クラスターのコンポーネントとコマンドラインの詳細についてわかったので、次にデプロイしたアプリケーションを探索してみましょう。Podは、Kubernetesプラットフォームの原子単位です。 Kubernetes上にDeploymentを作成すると、そのDeploymentはその中にコンテナを持つPodを作成します(コンテナを直接作成するのではなく)。 各Podは、スケジュールされているノードに関連付けられており、終了(再起動ポリシーに従って)または削除されるまでそこに残ります。 ノードに障害が発生した場合、同じPodがクラスター内の他の使用可能なノードにスケジュールされます。 新しいノードを Kubernetes Worker として追加するように Docker Enterprise を設定している場合(Admin Settings の Orchestration で設定)、新しいノードは Kubernetes Worker として起動されます。デフォルトでは「 swarm 」として設定されています。 Kubernetesで使用される設定ファイルの作成; etcd、apiserver、controller-manager、schedulerといったコンポーネントをコンテナ上で起動; 各種設定をクラスタ内に格納; クラスタ内にノードを追加するのに必要なトークンの生成; corednsやkube-proxyといったアドオンを起動 Dockerなどのコンテナ技術を使ったクラスタ技術の1つに「Kubernetes」がある。今回はこのKubernetesにおけるネットワーク関連の設定や、コンテナのデプロイについて紹介する。 今回紹介するKubernetesは、Googleが開発を主導するコンテナクラスタ構築ツールだ(図1)。 ノードのセットアップは、前述の1回目の「Kubenetes v1.10 クラスタをVagrantで構築したメモ」のVagrantfileを変更して、新たなノード k8s4 を作成します。 ノードをunschedulableとしてマークすると、新しいPodがそのノードにスケジュールされるのを防ぎますが、ノード上の既存のPodには影響しません。これは、ノードの再起動などの前の準備ステップとして役立ちます。たとえば、ノードにスケジュール不可能のマークを付けるには、次のコマンドを実行します:これらのフィールドの使い方は、お使いのクラウドプロバイダーやベアメタルの設定内容によって異なります。ノードで利用可能なリソース(CPU、メモリ、およびノードでスケジュールできる最大Pod数)について説明します。ノードコントローラーは、ノードの存続期間中に複数の役割を果たします。1つ目は、ノードが登録されたときにCIDRブロックをノードに割り当てることです(CIDR割り当てがオンになっている場合)。ノード上のラベルは、スケジューリングを制御するためにPod上のノードセレクタと組み合わせて使用できます。例えば、Podをノードのサブセットでのみ実行する資格があるように制限します。Kubernetes 1.4では、マスターに問題が発生した場合の対処方法を改善するように、ノードコントローラーのロジックをアップデートしています(マスターのネットワークに問題があるため)バージョン1.4以降、ノードコントローラーは、Podの退役について決定する際に、クラスター内のすべてのノードの状態を調べます。ノードのConditionはJSONオブジェクトで表現されます。例えば、正常なノードの場合は以下のようなレスポンスが表示されます。ユーザーは、古いスケジューリングモデルか、新しくてより柔軟なスケジューリングモデルのどちらかを選択できるようになりました。上記のtolerationがないPodは古いスケジュールモデルに従ってスケジュールされます。しかし、特定のノードのtaintを許容するPodについては、条件に合ったノードにスケジュールすることができます。ノードコントローラーは、ノードのさまざまな側面を管理するKubernetesのマスターコンポーネントです。自己登録については、kubeletは以下のオプションを伴って起動されます:現在、Kubernetesのノードインターフェースと相互作用する3つのコンポーネントがあります。ノードコントローラー、kubelet、およびkubectlです。2つ目は、ノードコントローラーの内部ノードリストをクラウドの利用可能なマシンのリストと一致させることです。クラウド環境で実行している場合、ノードに異常があると、ノードコントローラーはクラウドプロバイダーにそのNodeのVMがまだ使用可能かどうかを問い合わせます。使用可能でない場合、ノードコントローラーはノードのリストから該当ノードを削除します。カーネルのバージョン、Kubernetesのバージョン(kubeletおよびkube-proxyのバージョン)、(使用されている場合)Dockerのバージョン、OS名など、ノードに関する一般的な情報です。この情報はノードからkubeletを通じて取得されます。クラスター管理者はNodeオブジェクトを作成および変更できます。capacityブロック内のフィールドは、ノードが持っているリソースの合計量を示します。allocatableブロックは、通常のPodによって消費されるノード上のリソースの量を示します。バージョン1.8以降、ノードコントローラーに対してノードの状態を表すtaintを作成する責務を持たせることができます。これはバージョン1.8のアルファ機能です。ノードのステータスや、ノードに関するその他の詳細は、下記のコマンドを使うことで表示できます: 目標 KubernetesのPodについて学ぶ Kubernetesのノードについて学ぶ デプロイされたアプリケーションのトラブルシューティング Kubernetes Pod モジュール2でDeploymentを作成したときに、KubernetesはアプリケーションインスタンスをホストするためのPodを作成しました。 私の職場では、クバや、クーベルネティスと発音する人が多い感じがします。YouTubeで外人が発音しているのを聞くと、クーべネティスと言っている様に聞こえます。 発音について、Kubernetesの創設者の一人である@brendandburnsは、Twitterで次の様につぶやいています。https://twitter.com/brendandburns/status/585479466648018944長いので、略してk8sという表記も多く使われています。