がじぇったー

お金と家電とプログラミングのブログ

Kubernetesのアーキテクチャと構成するコンポーネント(Worker Node)

こんにちわ

がじぇったー (@hackmylife7) | Twitter


です。


Kubernetesアーキテクチャと構成するコンポーネントについて書いていきます。
今回はWorker Nodeで稼働するコンポーネントについてとりあげていきます。


TL;DR(要約)

  • Worker Nodeはユーザーからのリクエストを受け付け、アプリケーションを動かす働きを持つ
  • Worker Nodeで稼働するPod内でコンテナの起動/停止を担うのがkubelet
  • ユーザからのトラフィックをさばいたり、portでロードバランスを行うのがkube-proxyであり、実態はiptables

全体構成

まずKubernetesの全体構成は以下画像の通りです。kube-apiserverを中心として分散構成となっています。

f:id:gadgeterkun:20190630173604p:plain

Podが作成される流れ

Podが作成される流れをおさえます。

  1. kubectlコマンドの発行
  2. k8sはkube-apiserverでリクエストを受け取り、 Podのリソースの情報をetcdに書き込む(起動するノードは未割り当ての状態)
  3. kube-schedulerはetcdに書き込まれて情報を検知し、Podをどのノードで起動させるかを決定し、kube-apiserverにリクエストを送る= etcdの情報が書き換わる
  4. kubeletはetcdに書き込まれた情報を検知し、自身のノードでまだ起動していないPodがあれば起動する

Worker Node

  • Podを動かす役割を持つ
    • ユーザーからのリクエストを受け付け、アプリケーションを動かす働きを持つ
    • サーバリソースをコンテナに割り当てる
  • コンテナランタイムを稼働させる

Master Node

  • Control Planeを動かす役割を持つ
    • Master Nodeで稼働させるコンポーネントは実際どのサーバで動かしても良いが、集約させるのが一般的な設計
  • HA化することができる

kubectl

  • KubernetesAPIと連携するためのコマンドラインツール
  • どのマシン上でも稼働させることが可能(クラスタ外部でも可能)
  • どのクラスタにアクセスするのか、どのネームスペースにアクセスするのか 、Contextという形で" ~/.kube/config"ファイルで管理されている
$ cat  ~/.kube/config
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: ****略
    server: https://172.16.1.157:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: ****略
    client-key-data: ****略
$

Worker Node上で動くコンポーネント

kubelet

  • 各Worker Node上で動作
  • 間接的にコンテナを管理する
    • etcdの情報を見にいき、自身が稼働するNodeでまだ起動するべきPodが起動していなければ立ち上げる
    • Kubernetes APIと連携し、稼働するNode上でコンテナの起動や停止を行う
      • Host NodeへのVolumeへのマウント
      • secretsのダウンロード
      • liveness probesの定期実行
      • PodのStatus(リソース状況)の報告
      • NodeのStatus(リソース状況)の報告

kube-proxy

参考(Kubernetesの最強参考書)

Kubernetes完全ガイド (impress top gear)

Kubernetes完全ガイド (impress top gear)




Kubernetesの他の記事へは下記の一覧から飛べるようにしているので参照ください。

gadgeterkun.hatenablog.com