Kubernetes
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>Open PaaS]]
--[[OpenShift]]
--[[Cloud Foundry]]
--[[Kubernetes]]
*目次 [#dc96026c]
#contents
*概要 [#ec699210]
-ネットワークインフラなどの自動展開やスケーリングといった...
フリーソフトウェアによって構成されるコンテナ・オーケスト...
-[[Open PaaS]]と比較されることが多いが、ジャンルとしては...
**呼称 [#r0c31f26]
-クバネティス / クバネテス / クーべネティス
-ギリシャ語で航海長またはパイロットを意味する。
-K8sと略記される。
**経緯 [#v0663bf1]
-当初、Googleが開発していた。~
Google の Borg という 15 年にわたるプロジェクトに基づいて...
-オープンソースソフトウェアとして公開したことで、~
MicrosoftやRed Hatといった多くのIT企業が開発に参加表明。
***2014年 [#b0c577b8]
Google、Kubernetes発表(6月)
***2015年 [#l593ed2e]
-2月~
OpenShift V3、[[Docker>#de77bde7]]とKubernetesをコアとす...
-7月
--バージョン1.0に達する
--CNCFが設立され開発主体がこの団体へ移動。
***2016年 [#r839d233]
[[Swarm>Docker#u512f6bd]] 対 Kubernetesの状態
-10月~
Kubernetesが独自コンテナランタイム([[cri-o>#wd8d1dac]])...
***2017年 [#a235c6fb]
コンテナ・オーケストレーションのデファクトになった。
-初頭に、Kubernetesをサポートする~
Public Cloud は Google Cloud Platformのみだった。
-2月~
Microsoft AzureがKubernetesの公式サポートを表明、~
クラウド業界は次第にKubernetesにシフトするようになった。
--オラクルやVMwareといった企業もCNCFに参加を表明
--GoogleやMicrosoftとは競合関係にあるAWSも参加
-10月に、[[Docker>#de77bde7]]がKubernetesサポートすること...
***2018年 [#c1de5ccb]
-1月時点でLinux Foundationの傘下にある~
CNCFが管理するオープンソースプロジェクトになった。
***[[標準化の動向>#c2b84e28]] [#f8f6436f]
*アーキテクチャ [#xbc57197]
-ネットワークで接続された複数のLinux上にクラスタを構築す...
-クラスタは主に複数の[[マスター>#x3a054be]] (master) と[[...
--[[マスター>#x3a054be]]がクラスターの管理を行い、
--各[[ノード>#w630aafb]]上にコンテナがデプロイされる。
-[[マスター>#x3a054be]]や[[ノード>#w630aafb]]を構成するコ...
-[[マスター>#x3a054be]]と[[ノード>#w630aafb]]のコンポーネ...
最小の構成では1台からなるKubernetesクラスタが構築出来る。
**マスター [#x3a054be]
制御プレーンとも。
***kube-apiserver [#vdc79d21]
Kubernetes APIを外部に公開するためのコンポーネント。
***etcd [#f3f1e957]
Kubernetesクラスタの情報を保存する分散キーバリューストア。
***kube-scheduler [#ybf9a720]
[[ポッド>#j268603c]]をどの[[ノード>#w630aafb]]に対してデ...
***kube-controller-manager [#bbc30c32]
Kubernetesクラスタの各種[[コントローラ>#zca03066]]を実行...
***cloud-controller-manager [#ccfc4f4b]
-Kubernetesとプラットフォームとなっている~
クラウドプロバイダとの相互作用を担うコンポーネント。
-各クラウドプロバイダに特化した機能を提供し、パフォーマン...
***[[その他アドオン>#y089c43f]] [#ubeb7941]
**ノード [#w630aafb]
実行ノードとも。
***kubelet [#a31f1808]
-ノード上に常駐し、ノードの生存をクラスタに対して通知する。
-自身に対する[[ポッド>#j268603c]]の割り当てが行われたかど...
--ボリュームのマウント、
--コンテナのダウンロード/デプロイ、
--[[ポッド>#j268603c]]の生存確認
>などを行い、クラスタに通知する機能も担う。
***kube-proxy [#wc90f28d]
外部やapiserverからのアクセスを、~
ノード上の各[[ポッド>#j268603c]]に対して転送し、~
[[ポッド>#j268603c]]へのアクセスを抽象化するコンポーネン...
**コンテナ・ランタイム [#r6074505]
-実際にコンテナを動作させるバックエンドに利用される。
-全て [[Kubernetes CRI (Container Runtime Interface)>#t04...
***[[Docker]] [#de77bde7]
***[[containerd>#h78f8fe9]] [#k8003d18]
***[[CRI-O>#n37e3d66]] [#wd8d1dac]
**アドオン [#y089c43f]
***DNS [#cd972417]
-環境内の他のDNSサーバ
-以下のDNSレコードを提供するDNSサーバ
--環境内の他のDNSサーバ
--Kubernetesサービスの
***ダッシュボード [#n1081d32]
***コンテナリソース監視 [#o0092bab]
-supervisord
-kubeletと[[Docker>#de77bde7]]が正しく動作~
し続けるように監視及び管理するコンポーネント。
***クラスターレベルログ [#m40c6bcb]
-fluentd
-クラスタレベルでのロギングを補助する。
**コントローラ [#zca03066]
[[マスター>#x3a054be]]上の[[kube-controller-manager>#bbc3...
***Deployments [#p7551857]
下位要素は、[[ReplicaSet>#w119c808]]
-CLIを使用したり、yaml や JSON で定義をコントローラに渡し...
-[[ポッド>#j268603c]]だけでなく[[サービス>#neadf311]]の定...
***ReplicaSet [#w119c808]
下位要素は、[[ポッド>#j268603c]]
-負荷分散や、SLAの維持のためレプリカ数の[[ポッド>#j268603...
-[[ポッド>#j268603c]]がどの[[ノード>#w630aafb]]で動くかは...
***DaemonSet [#e7cc1702]
下位要素は、[[ポッド>#j268603c]]
-[[ノード>#w630aafb]]が単一の[[ポッド>#j268603c]]のコピー...
-全[[ノード>#w630aafb]]や特定の[[ノード>#w630aafb]]群に対...
-具体的な利用シーンとしては、ログ収集のエージェントなどが...
***StatefulSet [#t7cc78b3]
下位要素は、[[ポッド>#j268603c]]
-データベースなどステートフルな[[ポッド>#j268603c]]が必要...
-[[Deployment>#p7551857]]では、全ての[[ポッド>#j268603c]]...
[[StatefulSet>#t7cc78b3]]で作成された[[ポッド>#j268603c]]...
-[[StatefulSet>#t7cc78b3]]を使うとストレージやネットワー...
-データベースなど、データの永続化の用途で利用される。
**ポッド [#j268603c]
***概要 [#ra6a9cd9]
-いくつかのコンテナをグループ化したもの。
-ポッド単位で作成、開始、停止、削除といった操作を行う。
-1つのコンテナを作成したいときも「コンテナが1つ含まれる...
***特徴 [#o1577b38]
以下の特徴がある。
-ポッド内のコンテナは、同一ホスト上に配備される。
-ポッド内のコンテナは、仮想NICやプロセステーブルを共有す...
→ つまり、同じIPを使えたり、互いのプロセスが見えたりする。
--各ポッドには固有のIPアドレスがあり、ポートスペース全体...
--ポッド内のコンテナはストレージを共有できる。
-ポッドには、ポッドをグループするための1つ以上のラベルを...
-一般的には、サーバと、そのサーバと共に実行する補助サービ...
--Webサーバ
--APサーバ
--DBサーバ
--KVSサーバ
**ボリューム [#jcc6a107]
-抽象化された[[ポッド>#j268603c]]と疎結合なリソースで、[[...
-[[ポッド>#j268603c]]内のコンテナがデータを読み書きできる...
-様々な種類が提供されている。
***種類や用途 [#s3ba1bd4]
ボリュームには様々な種類や用途がある。
-一時領域
--CONFIG
-データ共有
--永続領域
--高可用性
---DBの高可用性オプションによるもの
---[[ReplicaSet>#w119c808]]によるもの
***ボリューム・タイプ [#o6b09b53]
-emptyDir
--[[ポッド>#j268603c]]用の一時的なディスク領域
--[[ポッド>#j268603c]]が terminate されると削除される。
-hostPath~
[[ノード>#w630aafb]](ホスト)の任意の領域をマウントできる。
-[[PersistentVolume(PV)>#l873c79e]]~
永続化領域として確保されるボリューム。
**サービス [#neadf311]
ネットワーク機能を提供するコンポーネント
***用途 [#s545ffc7]
-[[ポッド>#j268603c]]に対して通信をルーティングする。
-[[ポッド>#j268603c]]に対する通信を維持する(SLA、負荷分...
***サービス・タイプ [#pd866509]
以下の種類がある。
-Node Port
-Cluster IP
-Load Balancer
-, etc.
※ 詳しくは[[コチラ>#u9217b63]]。
*リソースで分類 [#ee62200e]
に分類されます。リソースを定義するYAMLの記述方法の詳細はA...
**Workloads [#o20650b7]
Kubernetesを構成する基本的なリソース
***[[Deployment>#p7551857]] [#r5d77514]
***[[ReplicaSet>#w119c808]] [#k5d1f44c]
***[[Pod>#j268603c]] [#f39bdbac]
***[[DaemonSet>#e7cc1702]] [#le61eab5]
***[[StatefulSet>#t7cc78b3]] [#n861cc2c]
***Job/CronJob [#f9dce694]
-Job~
バッチ処理が終わったらPodが(正常)終了。
-CronJob~
Jobをスケジュール実行する。
**Discovery & LB [#u5daf1b9]
基本的なリソースに対して、外部から参照する口を提供するもの
***Service [#u9217b63]
-L4のロードバランシングを実現する。
-Serviceは、既定で利用可能。
-種別~
以下のような種別がある。
--Node Port
---'<Node IP>:<Node Port>にアクセスを提供する。
---<Node IP>は、マスタのIPで、サービスの全Nodeを公開
--Cluster IP~
サービスの特定のNodeを公開(内部通信用)
--External IP~
サービスの特定のNodeを公開(外部通信用)
--Headless~
DNS ラウンドロビンによる転送先PodのIPアドレス取得
--Endpoint(selector 指定無し)
***負荷分散 [#sba5ab4d]
-Load balancer
--L4ロード・バランシングを実現する。
--Cluster IPに負荷分散機能を加えている。
-Ingress
--L7ロード・バランシングを実現する。
--IngressリソースにはIngressコントローラーが必要。
***Outbound [#n6e47aba]
-External Name
--外部のドメイン宛のCNAMEを返す機能を提供する。
--例えば、Podから外部のexample.comへアクセスする場合。
-None-Selector~
外部のサービスに対してロード・バランシング
**Config & Storage [#iffeeae0]
***Config Map [#b03c67e4]
Key-Valueで構成され、アプリケーションの設定値を管理するリ...
***Secret [#cdb67527]
パスワードなどの機密情報を管理するリソース。
***Volume [#l873c79e]
Podのデータを永続化するための仕組み。
-PersistentVolumeClaim (PVC)~
PodにVolumeや[[PersistentVolume (PV)>#sf7eb14d]]を間接的...
--PV の要求を行うリソース。
--PVC は要求された内容(容量、ラベル)から~
適切な PV を探し、ボリュームを割り当てる。
--プロビジョニングの方法として以下の2つの方法がある。
---Static : 予め PV を作成
---Dynamic : PVC が作成した際に動的に PV を作成
***Cluster [#sf7eb14d]
-[[Node>#w630aafb]]
-Namespace~
分離 / 独立した環境を準備する。
-PersistentVolume (PV)
--[[PersistentVolumeClaim(PVC)>#l873c79e]]経由で利用する。
--accessModes, capacity, storageClassName, volumeMode, et...
-RBAC (Role Based Access Control)
--Role
--ClusterRole
--RoleBinding
--ClusterRoleBinding
***Metadata [#eefe0c0e]
-Resource Quota
--resource.request~
NamespaceおよびPodに割り当てるリソース量を定義
--resource.limit~
NamespaceおよびPodに割り当てるリソースの上限を定義
--LimitRange~
最小 / 最大・デフォルト値を定義
---リソースタイプ~
Pod / Container / PersistentVolumeClaim
---マシンリソース~
CPU / メモリ
---設定値~
最大値 / 最小値 / デフォルト / resource.limitとresource.r...
-QoS Classes~
マシンリソースを超えたリソースを割当を行う場合、~
どのPodに優先 / 削除する必要があるかを決定する。
--Guaranteed~
CPU/メモリ共にresource.limit/requestが設定&limit=request
--Burstable~
CPU/メモリのいずれかがresource.limit/requestが設定
--BestEffort~
上記条件に当てはまらない
-HorizontalPodAutoscaler(HPA)
--Pod数を増減
--動的な水平スケーリングを実現
--Webサーバなど永続化データを持たないサーバが対象
-VerticalPodAutoscaler(VPA)
--Podに割り当てるCPU / メモリ量を増減
--動的な垂直スケーリングを実現
--DBサーバなど永続化データを持つサーバが対象
*エコシステム [#na158cd0]
**[[kubectl]] [#o2eaedf8]
***[[kubectlコマンド>kubectl#n7027448]] [#n7027448]
***[[kube configファイル>kubectl#ja6b145e]] [#ja6b145e]
**サブシステム [#y92d3a2a]
***[[Compose on Kubernetes]] [#l49a8b15]
[[Kompose>#fbdd4dc8]]と同じだが、開発元が社
***[[Kompose]] [#fbdd4dc8]
Docker Compose ファイルを Kubernetes オブジェクトに変...
***[[Helm Charts]] [#qb08430b]
Kubernetes の charts を利用するための簡単なツール
***[[Rancher Charts]] [#s02dcf6f]
[[Helm>#qb08430b]]のウワモノ。
**ツール類 [#od0fea25]
***[[構築ツール類>Kubernetesの構築]] [#l3e7f5de]
***[[運用ツール類>Kubernetesの運用]] [#z0740fe8]
***[[監視ツール類>Kubernetesの監視]] [#h8d0c17c]
*トレンド [#dfd9871c]
**[[コンテナの標準仕様]] [#lb9e85e4]
***[[CRI(Container Runtime Interface)>コンテナの標準仕...
→ [[コンテナ・ランタイム>#r6074505]]
***[[OCI(Open Container Initiative)>コンテナの標準仕様#...
***[[CSI(Container Storage Interface)>コンテナの標準仕...
***[[CNI(Container Network Interface)>コンテナの標準仕...
**標準化の動向 [#c2b84e28]
***2015年 [#u50a190d]
[[OCI(Open Container Initiative)>#z00fdca5]]
-コンテナ・ランタイムとコンテナ・イメージの標準
-6月にDocker社などの複数の企業によりイニシアチブ(組織)...
***2016年 [#vd6fce6b]
[[CRI(Container Runtime Interface)>#t04d9c7b]]
-[[Docker]]以外のコンテナ・ランタイムを組み込み易くするI/...
-12月にkubeletとコンテナランタイムの通信規格として規定さ...
***2017年 [#i2ec3011]
-[[OCI(Open Container Initiative)>#z00fdca5]]~
7月に「OCI v1.0」が策定、以下がリリースされている。
--コンテナランタイムの標準仕様である「Runtime Specificati...
--コンテナイメージの標準仕様である「Image Format Specific...
-[[CRI(Container Runtime Interface)>#t04d9c7b]]
--「[[cri-o>#n37e3d66]]」も1.0に到達
--kubeletとコンテナランタイム間のAPIのI/Fも「CRI」準拠の...
***2018年 [#q1c2e1bd]
-[[OCI(Open Container Initiative)>#z00fdca5]]~
4月にはコンテナイメージ配布の標準仕様を策定する、~
「Distribution Specification」プロジェクトへの着手が発表。
-[[CSI(Container Storage Interface)>#odd00978]]~
11月にコンテナ・オーケストレーション・ツールと~
ストレージ間のI/Fの標準仕様として、v1.0に到達した。
**[[Docker]]との関係 [#nd0739d1]
昨今、開発寄りなのかも知れない。
-アプリケーションの開発フェーズにおいて[[Docker]]が使われ...
-今後は、コンテナ・ランタイムの多様化が起きると言われてい...
***containerd [#h78f8fe9]
デファクト・スタンダードのコンテナ・ランタイム
-2016年
--6-8月~
[[Swarm>Docker#u512f6bd]] と Kubernetesのコンテナ・オーケ...
--10月~
Kubernetesが独自コンテナランタイム([[cri-o>#n37e3d66]])...
--12月~
中立的なコンテナ・ランタイムのため、[[Docker]]からcontain...
***cri-o [#n37e3d66]
[[Docker]]に依存しない軽量コンテナ・ランタイム
-2017年
--1.0が2017/10/17にリリースされた。
--ランタイムのみなので、[[Docker]]コマンドのような機能は...
*参考 [#g54270bb]
-Kubernetes~
https://ja.wikipedia.org/wiki/Kubernetes
-GKEを用いたレガシーシステムからのリプレース事例~
https://lp.google-mkto.com/rs/248-TPC-286/images/Google_C...
-Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャ...
https://www.slideshare.net/ToruMakabe/kubernetes-120907020
**Qiita [#gd21561e]
-今さら人に聞けない Kubernetes とは?~
https://qiita.com/MahoTakara/items/85096f8b2632c802ab22
-構築関連は[[コチラ>Kubernetesの構築#gd21561e]]に移動しま...
**Publickey [#b2ba6395]
-Dockerを管理するKubernetesの基本的な動作や仕組みとは?~
Kubernetesを触ってみた。第20回 PaaS勉強会~
https://www.publickey1.jp/blog/14/dockerkubernetes_kubern...
-Dockerコンテナ時代の第一章の終わり、そして第二章の展望な...
https://www.publickey1.jp/blog/17/post_265.html
***CRI [#bd0a533b]
-Kubernetes、独自のコンテナランタイム「cri-o」開発中。~
コンテナランタイムのインターフェイスを標準化し、~
Dockerだけでなくどんなコンテナランタイムでも対応可能に~
https://www.publickey1.jp/blog/16/kubernetescri-odocker.h...
-「Kubernetesはオープンソースの~
コンテナオーケストレーションのデファクトになった」と、~
CoreOSがfleetの開発を終了、代わりにKubernetes採用を発表~
https://www.publickey1.jp/blog/17/kubernetescoreosfleetku...
***OCI [#y2471083]
-Dockerエンジンのコアランタイムが~
「containerd」として分離、独立したオープンソースプロジェ...
Docker、AWS、Google、IBM、マイクロソフトらが協力して開発...
https://www.publickey1.jp/blog/16/dockercontainerddockera...
-Open Container Initiativeによる~
コンテナランタイムとコンテナイメージの~
最初の標準化作業が完了、「OCI v1.0」発表~
https://www.publickey1.jp/blog/17/open_container_initiati...
-Kubernetes、Dockerに依存しないKubernetes用の~
軽量コンテナランタイム「cri-o」正式版1.0リリース~
https://www.publickey1.jp/blog/17/kubernetesdockerkuberne...
-事実上の標準コンテナランタイム~
「containerd」がバージョン1.0に到達~
https://www.publickey1.jp/blog/17/containerd10.html
-Kubernetes対応コンテナランタイム「containerd 1.1」正式リ...
CRIにネイティブ対応し、Dockerより軽量で高速な動作を実現~
https://www.publickey1.jp/blog/18/kubernetescontainerd_11...
**IT Search+ [#j81f922c]
【連載】Kubernetes入門
-[1]Kubernetesとは~
https://news.mynavi.jp/itsearch/article/devsoft/4097
-[2]Dockerを触ってみる~
https://news.mynavi.jp/itsearch/article/devsoft/4208
-[[[3]Kubernetesを試す>Kubernetesの構築#i3250356]]
-[4]Kubernetesの4つのリソース - Pod/ReplicaSet/Deployment...
https://news.mynavi.jp/itsearch/article/devsoft/4358
-Kubernetesのリソースタイプを体系的に学ぶ
--[5] Workloads~
https://news.mynavi.jp/itsearch/article/devsoft/4413
--[6] Discovery & LB~
https://news.mynavi.jp/itsearch/article/devsoft/4459
--[7] Config & Storage~
https://news.mynavi.jp/itsearch/article/devsoft/4516
--[8] Cluster~
https://news.mynavi.jp/itsearch/article/devsoft/4611
--[9] Metadata~
https://news.mynavi.jp/itsearch/article/devsoft/4665
-[10]Kubernetesのアーキテクチャ~
https://news.mynavi.jp/itsearch/article/devsoft/4729
-[[[11]-[13]k8s構築ツールの選択肢>Kubernetesの構築#i32503...
-[[[14]その他の学習用サービス>Kubernetesの構築#i3250356]]
-[15]CI/CDにおける潮流 - CIOpsからGitOpsへ~
https://news.mynavi.jp/itsearch/article/devsoft/5025
-DevOps
--[16]Jenkins Xを使ってKubernetesでDevOps~
https://news.mynavi.jp/itsearch/article/devsoft/5079
--[17]「ArgoCD」を使ってKubernetesでDevOps~
https://news.mynavi.jp/itsearch/article/devsoft/5154
--[18]Tektonを使ってKubernetesでDevOps~
https://news.mynavi.jp/itsearch/article/devsoft/5218
--[19]Spinnakerを使ってKubernetesでDevOps~
https://news.mynavi.jp/itsearch/article/devsoft/5311
**Kubernetes [#f9f4c856]
-Kubernetes Documentation~
https://kubernetes.io/docs/home/
***Concepts [#r02d3a19]
https://kubernetes.io/docs/concepts/
-Overview
-Cluster Architecture
-Workloads
-Services, Load Balancing, and Networking
-Storage
-Configuration
-Security
-Policies
-Scheduling
-Cluster Administration
-Extending Kubernetes
***Kubectl [#l10a8c3a]
-kubectl CLI~
https://kubernetes.io/docs/reference/kubectl/
-Kubectl Reference Docs~
https://kubernetes.io/docs/reference/generated/kubectl/ku...
***github.com [#d01789e2]
-kubernetes/kubernetes:~
Production-Grade Container Scheduling and Management~
https://github.com/kubernetes/kubernetes
**マイクロソフト系技術情報 Wiki [#ke5e4ce1]
***[[Docker Desktop for Windows>https://techinfoofmicroso...
***[[Azure Kubernetes Service (AKS)>https://techinfoofmic...
終了行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>Open PaaS]]
--[[OpenShift]]
--[[Cloud Foundry]]
--[[Kubernetes]]
*目次 [#dc96026c]
#contents
*概要 [#ec699210]
-ネットワークインフラなどの自動展開やスケーリングといった...
フリーソフトウェアによって構成されるコンテナ・オーケスト...
-[[Open PaaS]]と比較されることが多いが、ジャンルとしては...
**呼称 [#r0c31f26]
-クバネティス / クバネテス / クーべネティス
-ギリシャ語で航海長またはパイロットを意味する。
-K8sと略記される。
**経緯 [#v0663bf1]
-当初、Googleが開発していた。~
Google の Borg という 15 年にわたるプロジェクトに基づいて...
-オープンソースソフトウェアとして公開したことで、~
MicrosoftやRed Hatといった多くのIT企業が開発に参加表明。
***2014年 [#b0c577b8]
Google、Kubernetes発表(6月)
***2015年 [#l593ed2e]
-2月~
OpenShift V3、[[Docker>#de77bde7]]とKubernetesをコアとす...
-7月
--バージョン1.0に達する
--CNCFが設立され開発主体がこの団体へ移動。
***2016年 [#r839d233]
[[Swarm>Docker#u512f6bd]] 対 Kubernetesの状態
-10月~
Kubernetesが独自コンテナランタイム([[cri-o>#wd8d1dac]])...
***2017年 [#a235c6fb]
コンテナ・オーケストレーションのデファクトになった。
-初頭に、Kubernetesをサポートする~
Public Cloud は Google Cloud Platformのみだった。
-2月~
Microsoft AzureがKubernetesの公式サポートを表明、~
クラウド業界は次第にKubernetesにシフトするようになった。
--オラクルやVMwareといった企業もCNCFに参加を表明
--GoogleやMicrosoftとは競合関係にあるAWSも参加
-10月に、[[Docker>#de77bde7]]がKubernetesサポートすること...
***2018年 [#c1de5ccb]
-1月時点でLinux Foundationの傘下にある~
CNCFが管理するオープンソースプロジェクトになった。
***[[標準化の動向>#c2b84e28]] [#f8f6436f]
*アーキテクチャ [#xbc57197]
-ネットワークで接続された複数のLinux上にクラスタを構築す...
-クラスタは主に複数の[[マスター>#x3a054be]] (master) と[[...
--[[マスター>#x3a054be]]がクラスターの管理を行い、
--各[[ノード>#w630aafb]]上にコンテナがデプロイされる。
-[[マスター>#x3a054be]]や[[ノード>#w630aafb]]を構成するコ...
-[[マスター>#x3a054be]]と[[ノード>#w630aafb]]のコンポーネ...
最小の構成では1台からなるKubernetesクラスタが構築出来る。
**マスター [#x3a054be]
制御プレーンとも。
***kube-apiserver [#vdc79d21]
Kubernetes APIを外部に公開するためのコンポーネント。
***etcd [#f3f1e957]
Kubernetesクラスタの情報を保存する分散キーバリューストア。
***kube-scheduler [#ybf9a720]
[[ポッド>#j268603c]]をどの[[ノード>#w630aafb]]に対してデ...
***kube-controller-manager [#bbc30c32]
Kubernetesクラスタの各種[[コントローラ>#zca03066]]を実行...
***cloud-controller-manager [#ccfc4f4b]
-Kubernetesとプラットフォームとなっている~
クラウドプロバイダとの相互作用を担うコンポーネント。
-各クラウドプロバイダに特化した機能を提供し、パフォーマン...
***[[その他アドオン>#y089c43f]] [#ubeb7941]
**ノード [#w630aafb]
実行ノードとも。
***kubelet [#a31f1808]
-ノード上に常駐し、ノードの生存をクラスタに対して通知する。
-自身に対する[[ポッド>#j268603c]]の割り当てが行われたかど...
--ボリュームのマウント、
--コンテナのダウンロード/デプロイ、
--[[ポッド>#j268603c]]の生存確認
>などを行い、クラスタに通知する機能も担う。
***kube-proxy [#wc90f28d]
外部やapiserverからのアクセスを、~
ノード上の各[[ポッド>#j268603c]]に対して転送し、~
[[ポッド>#j268603c]]へのアクセスを抽象化するコンポーネン...
**コンテナ・ランタイム [#r6074505]
-実際にコンテナを動作させるバックエンドに利用される。
-全て [[Kubernetes CRI (Container Runtime Interface)>#t04...
***[[Docker]] [#de77bde7]
***[[containerd>#h78f8fe9]] [#k8003d18]
***[[CRI-O>#n37e3d66]] [#wd8d1dac]
**アドオン [#y089c43f]
***DNS [#cd972417]
-環境内の他のDNSサーバ
-以下のDNSレコードを提供するDNSサーバ
--環境内の他のDNSサーバ
--Kubernetesサービスの
***ダッシュボード [#n1081d32]
***コンテナリソース監視 [#o0092bab]
-supervisord
-kubeletと[[Docker>#de77bde7]]が正しく動作~
し続けるように監視及び管理するコンポーネント。
***クラスターレベルログ [#m40c6bcb]
-fluentd
-クラスタレベルでのロギングを補助する。
**コントローラ [#zca03066]
[[マスター>#x3a054be]]上の[[kube-controller-manager>#bbc3...
***Deployments [#p7551857]
下位要素は、[[ReplicaSet>#w119c808]]
-CLIを使用したり、yaml や JSON で定義をコントローラに渡し...
-[[ポッド>#j268603c]]だけでなく[[サービス>#neadf311]]の定...
***ReplicaSet [#w119c808]
下位要素は、[[ポッド>#j268603c]]
-負荷分散や、SLAの維持のためレプリカ数の[[ポッド>#j268603...
-[[ポッド>#j268603c]]がどの[[ノード>#w630aafb]]で動くかは...
***DaemonSet [#e7cc1702]
下位要素は、[[ポッド>#j268603c]]
-[[ノード>#w630aafb]]が単一の[[ポッド>#j268603c]]のコピー...
-全[[ノード>#w630aafb]]や特定の[[ノード>#w630aafb]]群に対...
-具体的な利用シーンとしては、ログ収集のエージェントなどが...
***StatefulSet [#t7cc78b3]
下位要素は、[[ポッド>#j268603c]]
-データベースなどステートフルな[[ポッド>#j268603c]]が必要...
-[[Deployment>#p7551857]]では、全ての[[ポッド>#j268603c]]...
[[StatefulSet>#t7cc78b3]]で作成された[[ポッド>#j268603c]]...
-[[StatefulSet>#t7cc78b3]]を使うとストレージやネットワー...
-データベースなど、データの永続化の用途で利用される。
**ポッド [#j268603c]
***概要 [#ra6a9cd9]
-いくつかのコンテナをグループ化したもの。
-ポッド単位で作成、開始、停止、削除といった操作を行う。
-1つのコンテナを作成したいときも「コンテナが1つ含まれる...
***特徴 [#o1577b38]
以下の特徴がある。
-ポッド内のコンテナは、同一ホスト上に配備される。
-ポッド内のコンテナは、仮想NICやプロセステーブルを共有す...
→ つまり、同じIPを使えたり、互いのプロセスが見えたりする。
--各ポッドには固有のIPアドレスがあり、ポートスペース全体...
--ポッド内のコンテナはストレージを共有できる。
-ポッドには、ポッドをグループするための1つ以上のラベルを...
-一般的には、サーバと、そのサーバと共に実行する補助サービ...
--Webサーバ
--APサーバ
--DBサーバ
--KVSサーバ
**ボリューム [#jcc6a107]
-抽象化された[[ポッド>#j268603c]]と疎結合なリソースで、[[...
-[[ポッド>#j268603c]]内のコンテナがデータを読み書きできる...
-様々な種類が提供されている。
***種類や用途 [#s3ba1bd4]
ボリュームには様々な種類や用途がある。
-一時領域
--CONFIG
-データ共有
--永続領域
--高可用性
---DBの高可用性オプションによるもの
---[[ReplicaSet>#w119c808]]によるもの
***ボリューム・タイプ [#o6b09b53]
-emptyDir
--[[ポッド>#j268603c]]用の一時的なディスク領域
--[[ポッド>#j268603c]]が terminate されると削除される。
-hostPath~
[[ノード>#w630aafb]](ホスト)の任意の領域をマウントできる。
-[[PersistentVolume(PV)>#l873c79e]]~
永続化領域として確保されるボリューム。
**サービス [#neadf311]
ネットワーク機能を提供するコンポーネント
***用途 [#s545ffc7]
-[[ポッド>#j268603c]]に対して通信をルーティングする。
-[[ポッド>#j268603c]]に対する通信を維持する(SLA、負荷分...
***サービス・タイプ [#pd866509]
以下の種類がある。
-Node Port
-Cluster IP
-Load Balancer
-, etc.
※ 詳しくは[[コチラ>#u9217b63]]。
*リソースで分類 [#ee62200e]
に分類されます。リソースを定義するYAMLの記述方法の詳細はA...
**Workloads [#o20650b7]
Kubernetesを構成する基本的なリソース
***[[Deployment>#p7551857]] [#r5d77514]
***[[ReplicaSet>#w119c808]] [#k5d1f44c]
***[[Pod>#j268603c]] [#f39bdbac]
***[[DaemonSet>#e7cc1702]] [#le61eab5]
***[[StatefulSet>#t7cc78b3]] [#n861cc2c]
***Job/CronJob [#f9dce694]
-Job~
バッチ処理が終わったらPodが(正常)終了。
-CronJob~
Jobをスケジュール実行する。
**Discovery & LB [#u5daf1b9]
基本的なリソースに対して、外部から参照する口を提供するもの
***Service [#u9217b63]
-L4のロードバランシングを実現する。
-Serviceは、既定で利用可能。
-種別~
以下のような種別がある。
--Node Port
---'<Node IP>:<Node Port>にアクセスを提供する。
---<Node IP>は、マスタのIPで、サービスの全Nodeを公開
--Cluster IP~
サービスの特定のNodeを公開(内部通信用)
--External IP~
サービスの特定のNodeを公開(外部通信用)
--Headless~
DNS ラウンドロビンによる転送先PodのIPアドレス取得
--Endpoint(selector 指定無し)
***負荷分散 [#sba5ab4d]
-Load balancer
--L4ロード・バランシングを実現する。
--Cluster IPに負荷分散機能を加えている。
-Ingress
--L7ロード・バランシングを実現する。
--IngressリソースにはIngressコントローラーが必要。
***Outbound [#n6e47aba]
-External Name
--外部のドメイン宛のCNAMEを返す機能を提供する。
--例えば、Podから外部のexample.comへアクセスする場合。
-None-Selector~
外部のサービスに対してロード・バランシング
**Config & Storage [#iffeeae0]
***Config Map [#b03c67e4]
Key-Valueで構成され、アプリケーションの設定値を管理するリ...
***Secret [#cdb67527]
パスワードなどの機密情報を管理するリソース。
***Volume [#l873c79e]
Podのデータを永続化するための仕組み。
-PersistentVolumeClaim (PVC)~
PodにVolumeや[[PersistentVolume (PV)>#sf7eb14d]]を間接的...
--PV の要求を行うリソース。
--PVC は要求された内容(容量、ラベル)から~
適切な PV を探し、ボリュームを割り当てる。
--プロビジョニングの方法として以下の2つの方法がある。
---Static : 予め PV を作成
---Dynamic : PVC が作成した際に動的に PV を作成
***Cluster [#sf7eb14d]
-[[Node>#w630aafb]]
-Namespace~
分離 / 独立した環境を準備する。
-PersistentVolume (PV)
--[[PersistentVolumeClaim(PVC)>#l873c79e]]経由で利用する。
--accessModes, capacity, storageClassName, volumeMode, et...
-RBAC (Role Based Access Control)
--Role
--ClusterRole
--RoleBinding
--ClusterRoleBinding
***Metadata [#eefe0c0e]
-Resource Quota
--resource.request~
NamespaceおよびPodに割り当てるリソース量を定義
--resource.limit~
NamespaceおよびPodに割り当てるリソースの上限を定義
--LimitRange~
最小 / 最大・デフォルト値を定義
---リソースタイプ~
Pod / Container / PersistentVolumeClaim
---マシンリソース~
CPU / メモリ
---設定値~
最大値 / 最小値 / デフォルト / resource.limitとresource.r...
-QoS Classes~
マシンリソースを超えたリソースを割当を行う場合、~
どのPodに優先 / 削除する必要があるかを決定する。
--Guaranteed~
CPU/メモリ共にresource.limit/requestが設定&limit=request
--Burstable~
CPU/メモリのいずれかがresource.limit/requestが設定
--BestEffort~
上記条件に当てはまらない
-HorizontalPodAutoscaler(HPA)
--Pod数を増減
--動的な水平スケーリングを実現
--Webサーバなど永続化データを持たないサーバが対象
-VerticalPodAutoscaler(VPA)
--Podに割り当てるCPU / メモリ量を増減
--動的な垂直スケーリングを実現
--DBサーバなど永続化データを持つサーバが対象
*エコシステム [#na158cd0]
**[[kubectl]] [#o2eaedf8]
***[[kubectlコマンド>kubectl#n7027448]] [#n7027448]
***[[kube configファイル>kubectl#ja6b145e]] [#ja6b145e]
**サブシステム [#y92d3a2a]
***[[Compose on Kubernetes]] [#l49a8b15]
[[Kompose>#fbdd4dc8]]と同じだが、開発元が社
***[[Kompose]] [#fbdd4dc8]
Docker Compose ファイルを Kubernetes オブジェクトに変...
***[[Helm Charts]] [#qb08430b]
Kubernetes の charts を利用するための簡単なツール
***[[Rancher Charts]] [#s02dcf6f]
[[Helm>#qb08430b]]のウワモノ。
**ツール類 [#od0fea25]
***[[構築ツール類>Kubernetesの構築]] [#l3e7f5de]
***[[運用ツール類>Kubernetesの運用]] [#z0740fe8]
***[[監視ツール類>Kubernetesの監視]] [#h8d0c17c]
*トレンド [#dfd9871c]
**[[コンテナの標準仕様]] [#lb9e85e4]
***[[CRI(Container Runtime Interface)>コンテナの標準仕...
→ [[コンテナ・ランタイム>#r6074505]]
***[[OCI(Open Container Initiative)>コンテナの標準仕様#...
***[[CSI(Container Storage Interface)>コンテナの標準仕...
***[[CNI(Container Network Interface)>コンテナの標準仕...
**標準化の動向 [#c2b84e28]
***2015年 [#u50a190d]
[[OCI(Open Container Initiative)>#z00fdca5]]
-コンテナ・ランタイムとコンテナ・イメージの標準
-6月にDocker社などの複数の企業によりイニシアチブ(組織)...
***2016年 [#vd6fce6b]
[[CRI(Container Runtime Interface)>#t04d9c7b]]
-[[Docker]]以外のコンテナ・ランタイムを組み込み易くするI/...
-12月にkubeletとコンテナランタイムの通信規格として規定さ...
***2017年 [#i2ec3011]
-[[OCI(Open Container Initiative)>#z00fdca5]]~
7月に「OCI v1.0」が策定、以下がリリースされている。
--コンテナランタイムの標準仕様である「Runtime Specificati...
--コンテナイメージの標準仕様である「Image Format Specific...
-[[CRI(Container Runtime Interface)>#t04d9c7b]]
--「[[cri-o>#n37e3d66]]」も1.0に到達
--kubeletとコンテナランタイム間のAPIのI/Fも「CRI」準拠の...
***2018年 [#q1c2e1bd]
-[[OCI(Open Container Initiative)>#z00fdca5]]~
4月にはコンテナイメージ配布の標準仕様を策定する、~
「Distribution Specification」プロジェクトへの着手が発表。
-[[CSI(Container Storage Interface)>#odd00978]]~
11月にコンテナ・オーケストレーション・ツールと~
ストレージ間のI/Fの標準仕様として、v1.0に到達した。
**[[Docker]]との関係 [#nd0739d1]
昨今、開発寄りなのかも知れない。
-アプリケーションの開発フェーズにおいて[[Docker]]が使われ...
-今後は、コンテナ・ランタイムの多様化が起きると言われてい...
***containerd [#h78f8fe9]
デファクト・スタンダードのコンテナ・ランタイム
-2016年
--6-8月~
[[Swarm>Docker#u512f6bd]] と Kubernetesのコンテナ・オーケ...
--10月~
Kubernetesが独自コンテナランタイム([[cri-o>#n37e3d66]])...
--12月~
中立的なコンテナ・ランタイムのため、[[Docker]]からcontain...
***cri-o [#n37e3d66]
[[Docker]]に依存しない軽量コンテナ・ランタイム
-2017年
--1.0が2017/10/17にリリースされた。
--ランタイムのみなので、[[Docker]]コマンドのような機能は...
*参考 [#g54270bb]
-Kubernetes~
https://ja.wikipedia.org/wiki/Kubernetes
-GKEを用いたレガシーシステムからのリプレース事例~
https://lp.google-mkto.com/rs/248-TPC-286/images/Google_C...
-Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャ...
https://www.slideshare.net/ToruMakabe/kubernetes-120907020
**Qiita [#gd21561e]
-今さら人に聞けない Kubernetes とは?~
https://qiita.com/MahoTakara/items/85096f8b2632c802ab22
-構築関連は[[コチラ>Kubernetesの構築#gd21561e]]に移動しま...
**Publickey [#b2ba6395]
-Dockerを管理するKubernetesの基本的な動作や仕組みとは?~
Kubernetesを触ってみた。第20回 PaaS勉強会~
https://www.publickey1.jp/blog/14/dockerkubernetes_kubern...
-Dockerコンテナ時代の第一章の終わり、そして第二章の展望な...
https://www.publickey1.jp/blog/17/post_265.html
***CRI [#bd0a533b]
-Kubernetes、独自のコンテナランタイム「cri-o」開発中。~
コンテナランタイムのインターフェイスを標準化し、~
Dockerだけでなくどんなコンテナランタイムでも対応可能に~
https://www.publickey1.jp/blog/16/kubernetescri-odocker.h...
-「Kubernetesはオープンソースの~
コンテナオーケストレーションのデファクトになった」と、~
CoreOSがfleetの開発を終了、代わりにKubernetes採用を発表~
https://www.publickey1.jp/blog/17/kubernetescoreosfleetku...
***OCI [#y2471083]
-Dockerエンジンのコアランタイムが~
「containerd」として分離、独立したオープンソースプロジェ...
Docker、AWS、Google、IBM、マイクロソフトらが協力して開発...
https://www.publickey1.jp/blog/16/dockercontainerddockera...
-Open Container Initiativeによる~
コンテナランタイムとコンテナイメージの~
最初の標準化作業が完了、「OCI v1.0」発表~
https://www.publickey1.jp/blog/17/open_container_initiati...
-Kubernetes、Dockerに依存しないKubernetes用の~
軽量コンテナランタイム「cri-o」正式版1.0リリース~
https://www.publickey1.jp/blog/17/kubernetesdockerkuberne...
-事実上の標準コンテナランタイム~
「containerd」がバージョン1.0に到達~
https://www.publickey1.jp/blog/17/containerd10.html
-Kubernetes対応コンテナランタイム「containerd 1.1」正式リ...
CRIにネイティブ対応し、Dockerより軽量で高速な動作を実現~
https://www.publickey1.jp/blog/18/kubernetescontainerd_11...
**IT Search+ [#j81f922c]
【連載】Kubernetes入門
-[1]Kubernetesとは~
https://news.mynavi.jp/itsearch/article/devsoft/4097
-[2]Dockerを触ってみる~
https://news.mynavi.jp/itsearch/article/devsoft/4208
-[[[3]Kubernetesを試す>Kubernetesの構築#i3250356]]
-[4]Kubernetesの4つのリソース - Pod/ReplicaSet/Deployment...
https://news.mynavi.jp/itsearch/article/devsoft/4358
-Kubernetesのリソースタイプを体系的に学ぶ
--[5] Workloads~
https://news.mynavi.jp/itsearch/article/devsoft/4413
--[6] Discovery & LB~
https://news.mynavi.jp/itsearch/article/devsoft/4459
--[7] Config & Storage~
https://news.mynavi.jp/itsearch/article/devsoft/4516
--[8] Cluster~
https://news.mynavi.jp/itsearch/article/devsoft/4611
--[9] Metadata~
https://news.mynavi.jp/itsearch/article/devsoft/4665
-[10]Kubernetesのアーキテクチャ~
https://news.mynavi.jp/itsearch/article/devsoft/4729
-[[[11]-[13]k8s構築ツールの選択肢>Kubernetesの構築#i32503...
-[[[14]その他の学習用サービス>Kubernetesの構築#i3250356]]
-[15]CI/CDにおける潮流 - CIOpsからGitOpsへ~
https://news.mynavi.jp/itsearch/article/devsoft/5025
-DevOps
--[16]Jenkins Xを使ってKubernetesでDevOps~
https://news.mynavi.jp/itsearch/article/devsoft/5079
--[17]「ArgoCD」を使ってKubernetesでDevOps~
https://news.mynavi.jp/itsearch/article/devsoft/5154
--[18]Tektonを使ってKubernetesでDevOps~
https://news.mynavi.jp/itsearch/article/devsoft/5218
--[19]Spinnakerを使ってKubernetesでDevOps~
https://news.mynavi.jp/itsearch/article/devsoft/5311
**Kubernetes [#f9f4c856]
-Kubernetes Documentation~
https://kubernetes.io/docs/home/
***Concepts [#r02d3a19]
https://kubernetes.io/docs/concepts/
-Overview
-Cluster Architecture
-Workloads
-Services, Load Balancing, and Networking
-Storage
-Configuration
-Security
-Policies
-Scheduling
-Cluster Administration
-Extending Kubernetes
***Kubectl [#l10a8c3a]
-kubectl CLI~
https://kubernetes.io/docs/reference/kubectl/
-Kubectl Reference Docs~
https://kubernetes.io/docs/reference/generated/kubectl/ku...
***github.com [#d01789e2]
-kubernetes/kubernetes:~
Production-Grade Container Scheduling and Management~
https://github.com/kubernetes/kubernetes
**マイクロソフト系技術情報 Wiki [#ke5e4ce1]
***[[Docker Desktop for Windows>https://techinfoofmicroso...
***[[Azure Kubernetes Service (AKS)>https://techinfoofmic...
ページ名: