米ノースウェスタン大学などに所属する研究者らが発表した論文「Quantum teleportation coexisting with classical communications in optical fiber」は、世界中のインターネット網で使われている既存の光ファイバーケーブルを、量子通信にも利用できる可能性が示された研究報告である。
「光通信」と「量子通信」の同時伝送に成功、世界初 インターネットを邪魔せず同じケーブル内で量子テレポーテーション:Innovative Tech - ITmedia NEWS
⇧ amazing...
Kubernetesでcontainerdとkubeletが利用するcgroup driverが異なる罠
前回、
⇧ Kubernetes環境が動作しなかったのだが、
⇧ 上記サイト様によりますと、「コンテナランタイム」によって「cgroup driver」が異なることで、KubernetesのAPI Serverに関する接続で問題が起こるということらしい。
コンテナランタイムとcgroup driver
Kubernetesの公式のドキュメントによりますと、
⇧ とありますと。
「CRI(Container Runtime Interface)」という仕様に準拠した「コンテナランタイム」のインストールが必要なのだが、「コンテナランタイム」には種類がありますと。
「CRI(Container Runtime Interface)」はというと、
What is CRI?
CRI (Container Runtime Interface) consists of a specifications/requirements (to-be-added), protobuf API, and libraries for container runtimes to integrate with kubelet on a node. The CRI API is currently in Alpha, and the CRI-Docker integration is used by default as of Kubernetes 1.7+.
https://kubernetes.io/ja/docs/setup/production-environment/container-runtimes/
⇧イメージしにくい...
「kubelet」で「コンテナランタイム」を操作するための「protobuf API」や「libraries」、仕様/要件などを定義したものが、「CRI(Container Runtime Interface)」ということらしい。
「Kubernetes」における「コンテナランタイム」はというと、
⇧ 上図のような構成になっているらしい。
「Kubernetes」においては「kubelet」で「コンテナランタイム」にアクセスしていますと。
で、「cgroup driver」はというと、
⇧ とありますと。
で、「cgroup」はというと、
cgroups (control groups) とは、プロセスグループのリソース(CPU、メモリ、ディスクI/Oなど)の利用を制限・隔離するLinuxカーネルの機能。"process containers" という名称で Rohit Seth が2006年9月から開発を開始し、2007年に cgroups と名称変更され、2008年1月に Linux カーネル 2.6.24 にマージされた。
名前空間の隔離
技術的には cgroups の一部ではないが、関連する機能として、名前空間の隔離があり、グループ内のプロセスから他のグループのリソースを見えないようにすることができる。例えば、PID 名前空間を使うとそれぞれの名前空間ごとに重複したプロセス番号を割り振ることが可能になる。マウント、UTS、ネットワーク、SysV IPC などの名前空間が利用可能。もし、"ns" cgroup がマウントされている場合、それぞれの名前空間は cgroup 階層構造内で新しいグループを作る。
利用法
cgroups とは、同じ基準で集められたプロセスの集合である。グループは階層構造を持ち、それぞれのグループは親グループの制限を引き継ぐ。カーネルは複数のコントローラ(サブシステム)に cgroup のインターフェイスを通じてアクセスできる。
⇧ とあるのだが、「cgroup」と「cgroups」の関係がいまいち分からない...
Kubernetesでコンテナランタイムとcgroup driverの設定などの対応が分り辛い...
で、
⇧ 公式のドキュメントによりますと、
- kubeletの設定
- コンテナランタイムの種類
- cgroupのバージョン
- cgroup driverの種類
- cgroupの設定
あたりを考慮する必要が出てくるっぽいのだが、関係性がサッパリ分からないので、ChatGPTに質問してみたところ、以下のような回答が返ってきた。
No | コンテナランタイム | cgroup | 設定ファイル | 関連設定 | |
---|---|---|---|---|---|
バージョン | ドライバー | ||||
1 | Docker Engine | v1 | cgroupfs |
|
|
2 | Docker Engine | v2 | systemd |
|
|
3 | containerd | v1 | cgroupfs |
/etc/containerd/config.toml |
|
4 | containerd | v2 | systemd |
/etc/containerd/config.toml |
|
5 | cri-o | v1 | cgroupfs |
/etc/crio/crio.conf |
|
6 | cri-o | v2 | systemd |
/etc/crio/crio.conf |
|
7 | Mirantis Container Runtime | v1 | cgroupfs |
/etc/mcr/config.json |
|
8 | Mirantis Container Runtime | v2 | systemd |
/etc/mcr/config.json |
|
9 | kubelet | v1 | cgroupfs |
/var/lib/kubelet/config.yaml |
|
10 | kubelet | v2 | systemd |
/var/lib/kubelet/config.yaml |
|
「幻覚(ハルシネーション)」な回答なのか、正確な回答なのかが分らないのだが、少なくとも、前回の「kubeadm」による「Kubernetes」環境の構築で「Kubernetes」環境が動作しなかったところを見ると、設定が関わってくるとは思うのだけど、公式のドキュメントが曖昧なこともあって、どの設定ファイルをどういう設定にすれば正解なのかが分らなさ過ぎる...
そもそも、「kubeadm」って「Kubernetes」環境の構築を手軽にしてくれるツールじゃないのかね?
公式のドキュメントがイケてなさ過ぎる気がして致し方無い...
毎度モヤモヤ感が半端ない…
今回はこのへんで。