LoginSignup
0
0

More than 5 years have passed since last update.

kubernetesで登場する概念的なやつの個人的メモ

Last updated at Posted at 2018-11-12

これは何?

私の技術メモです。
これから触るにあたって、overviewだけはふわーっと知っておきたいなと思った。

以下メモ

自分で調べてみて基本的な用語や概念など、理解したことを書いてみる。
「kubernetesってそもそも何するやつ?」はここには書いてない。
リソースやコンポーネントについてはとりあえず並べてみただけなので、もう少し学びが進んだら読み直してアップデートしていくかも。

k8sクラスタ

  • k8sそのものとなるサーバ群
  • 1台以上のmaster、1台以上のnodeで構成
    • master : api-serverの提供やコンテナのスケーリングなど
    • node : 基本的にはdockerホストに相当
      • masterとnodeは同じサーバが役割を担ってることもあるかも
  • dockerホストのクラスタ構成≒k8sのクラスタ構成 と思っている。

kubeadm

  • k8sクラスタの構築ツール。
  • kubeadmの基本的なコマンド。
    • kubeadm init : masterノードで実行。クラスタを初期化する。
    • kubeadm join : クラスタにノードを追加する。

kubectl

  • k8sクラスタ管理のためのCLI。masterノード上で動作。
  • ~/.kube/config : kubecetlの接続情報を書く。yaml形式。
  • kubeconfigの構成
    • clusters : 接続先クラスタ
    • users : 認証情報
    • contexts : clusters+users+namespaceの組み合わせ情報。これを切り替えながらkubectlを発行することで、どのクラスタに向けて発行するか決まるんだと思う。
  • kubectlの基本的なコマンド。
    • まだ。

マニフェストファイル

  • yaml形式の設定ファイル。
  • 後述する「リソース」を記述する。
  • マニフェストファイルの操作
    • 一括操作系:kubectl create/delete/apply
    • 特定リソース操作系:kubectl set/replace/edit
    • 情報取得系:kubectl get/describe/logs
    • ほか:kubectl exec/kubectl port-forward
  • 事実上のIaC化ということだと理解。

k8sの「リソース」

  • マニフェストファイルでmasterにリソースを登録する。
  • 主な登場人物を書いてみる。
    • workloads : クラスタ上にコンテナを起動するリソース。
      • deployment:replicaSetを管理。コンテナイメージが変更したりした場合、podを新しくしていってくれる。
      • replicaSet:podを管理。指定数のpodの稼働を保証する。
      • pod:複数コンテナからなる。IPアドレスがpod単位で紐づけられる。
      • daemonSet
      • statefulSet
    • desicovery&LB : 外部からアクセスするエンドポイントなど公開・アクセスに関する。
      • service
      • ingress
    • config&storage : その名の通り設定やボリュームなど。
      • secret
      • configMap
      • persistentVolumeClaim
    • cluster :
      • namespace
        • 一つのk8sクラスタを仮想的に分離させて複数のチームで利用したりできる。
        • デフォルトではdefault/kube-system/kube-publicの三つが存在。
      • node
    • metadata :
      • horizontalPodAutoscaler

k8sのコンポーネント

  • 主な登場人物を書いてみる。
    • etcd
      • クラスタに関わる情報すべて。冗長化するのが基本。
    • kubelet
      • 実際にコンテナランタイム(docker等)と連携し、コンテナの起動/停止を行う。
    • kube-proxy
    • kube-scheduler
      • podとnodeの紐づけをする。
    • kube-apiserver
      • k8sのAPIを提供する、中心となるコンポーネント。
    • kube-dns
    • kube-controller-manager

Liveness Probe/Readiness Probe

  • リソース(=マニフェストファイル)のPod内のcontainersで設定するコンテナのヘルスチェック。肝要そうなので別枠とした。
    • liveness : コンテナが起動しているか
    • readiness : コンテナがリクエストを受け付けられるか
  • livenessとreadinessの使い分けの考え方は諸説あるようだ。
  • k8sが取り扱う単位の最小は基本的にpodだが、これはコンテナを参照することになるようだ。

CNI(ContainerNetworkInterface)

  • コンテナ間の通信を可能にするネットワークインターフェース。
  • 現在の代表はflannel。
  • dockerホストの異なるpodは基本的に通信できないが、CNIにより通信が可能となる。
  • kube-proxyが仲介役をしているようだ。

その他

  • kubeletはSELinuxを無効にする必要あり。
  • クラスタ構築時は、kubeadm initの出力をもとにkubeadm joinしよう!
  • minikube : ローカルでk8sを試せる。冗長構成無し。virtualBox必要。

ひとまずの感想

kubernetesの世界は広大だ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0