Skip to content

Cilium Service Mesh アーキテクチャクイズ

このクイズでは、Cilium Service Meshのアーキテクチャ、eBPF datapath、node Envoy proxy、およびCRDモデルについての理解を確認します。

クイズの問題

1. Cilium Service Meshと従来のsidecarベースのservice meshとの主な違いは何ですか?

A. Kubernetesネイティブではない B. eBPFを使用してLinux kernelレベルでL3/L4トラフィックを処理する C. すべてのトラフィックをuser spaceで処理する D. Podごとに複数のproxyを使用する

回答を表示

回答: B. eBPFを使用してLinux kernelレベルでL3/L4トラフィックを処理する

解説: Cilium Service Meshは、eBPF(extended Berkeley Packet Filter)を使用して、Linux kernel内でL3/L4トラフィックを直接処理します。これは、すべてのトラフィックをuser-space sidecar proxy経由で処理する従来のservice meshとは根本的に異なります。L7処理が必要な場合にのみ、トラフィックはnodeごとに共有されるEnvoy proxyへ転送されます。

2. Ciliumプログラムが実行できるeBPF hook pointではないものはどれですか?

A. XDP (eXpress Data Path) B. TC (Traffic Control) C. Application Layer D. cgroup

回答を表示

回答: C. Application Layer

解説: eBPFプログラムはkernelレベルで実行され、主なhook pointにはXDP(NIC driver)、TC(network stack entry)、Socket Operations(socket level)、およびcgroup(process group)があります。Application Layerはuser spaceにあるため、eBPF hook pointではありません。

3. CiliumのnodeごとのEnvoy proxyモデルの利点は何ですか?

A. より複雑な設定が可能になる B. Podごとのメモリ使用量が増加する C. リソース効率と低レイテンシー D. すべてのトラフィックを暗号化できない

回答を表示

回答: C. リソース効率と低レイテンシー

解説: nodeごとに1つのEnvoy proxyを使用すると、Podごとにsidecarをデプロイする場合と比べて、使用メモリを大幅に削減できます。100 Podのclusterでは、Istioは約5GB(Podごとに50MB)を使用しますが、Ciliumは約500MB(nodeごとに100MB)のみを使用します。さらに、L3/L4トラフィックはeBPFで直接処理されるため、レイテンシーが大幅に低減されます。

4. CiliumEnvoyConfig CRDの主な目的は何ですか?

A. Kubernetes network policyを定義する B. 特定のService向けのEnvoy proxy設定を定義する C. Pod scheduling ruleを定義する D. storage classを定義する

回答を表示

回答: B. 特定のService向けのEnvoy proxy設定を定義する

解説: CiliumEnvoyConfigはnamespace-scoped CRDであり、特定のService向けにEnvoy proxyの設定(listener、route、clusterなど)を定義します。これにより、HTTP routing、header manipulation、load balancingなどのL7機能を設定できます。

5. Ciliumがkube-proxyを置き換える場合、consistent hashingを提供するload balancing algorithmはどれですか?

A. Random B. Round Robin C. Maglev D. Least Connection

回答を表示

回答: C. Maglev

解説: MaglevはGoogleが開発したconsistent hashing algorithmで、CiliumのeBPFベースのload balancerで使用されます。このalgorithmは、backendが変化しても既存の接続の大部分を維持するsession affinityを提供します。O(1)のlookup timeで高いパフォーマンスを実現します。

6. Cilium Identityについて正しい記述はどれですか?

A. IP addressに基づいてworkloadを識別する B. Pod labelをhash化してnumeric IDを生成する C. 識別にMAC addressを使用する D. ユーザーが手動で割り当てる必要がある

回答を表示

回答: B. Pod labelをhash化してnumeric IDを生成する

解説: Cilium Identityは、Pod label(namespace、service account、ユーザー定義labelなど)をhash化して一意のnumeric IDを生成します。このIDベースのアプローチには、IP addressが変更されてもpolicyが影響を受けないという利点があります。

7. CiliumでL7 policyが適用されると、トラフィックフローはどうなりますか?

A. すべてのトラフィックは常にEnvoyを経由する B. L7 policyを持つトラフィックのみがEnvoyへredirectされる C. Envoyは完全にbypassされる D. トラフィックはdropされる

回答を表示

回答: B. L7 policyを持つトラフィックのみがEnvoyへredirectされる

解説: 効率のため、CiliumはL7 policyを持つトラフィックのみをnode Envoy proxyへredirectします。L3/L4 policyのみ、またはpolicyがないトラフィックはeBPFで直接処理され、kernel内で高速にforwardされます。

8. Ciliumのconnection trackingはどこで実行されますか?

A. user spaceのconntrack daemon B. eBPF maps C. Envoy proxy D. Kubernetes API server

回答を表示

回答: B. eBPF maps

解説: Ciliumはconnection trackingにeBPF mapsを使用します。CT(Connection Tracking)mapはkernel内でconnection stateを保存およびlookupし、既存connectionに対するpolicy decisionのcacheと高速な適用を可能にします。

9. CiliumClusterwideNetworkPolicyとCiliumNetworkPolicyの違いは何ですか?

A. 両方とも同じscopeを持つ B. CiliumClusterwideNetworkPolicyはcluster全体に適用される C. CiliumNetworkPolicyの方が多くの機能を持つ D. CiliumClusterwideNetworkPolicyはL7 policyをサポートしない

回答を表示

回答: B. CiliumClusterwideNetworkPolicyはcluster全体に適用される

解説: CiliumNetworkPolicyはnamespace-scopedである一方、CiliumClusterwideNetworkPolicyはcluster-wide scopedです。cluster-wide policyは、default deny policyやすべてのnamespaceに適用する必要があるsecurity ruleに役立ちます。どちらのCRDもL7 policyをサポートします。

10. Cilium Service Meshで使用されるSPIFFE IDの形式は何ですか?

A. urn:spiffe:cluster/namespace/pod B. spiffe://cluster.local/ns/<namespace>/sa/<service-account> C. https://spiffe.io/id/\<pod-name> D. spiffe:<namespace>:<pod-name>

回答を表示

回答: B. spiffe://cluster.local/ns/<namespace>/sa/<service-account>

解説: SPIFFE(Secure Production Identity Framework for Everyone)IDは、workloadの一意な識別子です。Cilium Service MeshでSPIREと統合する場合、各workloadにはspiffe://cluster.local/ns/<namespace>/sa/<service-account>の形式のSPIFFE IDが付与されます。このIDはmTLS authenticationに使用されます。

11. Cilium Agentの役割ではないものはどれですか?

A. eBPFプログラム管理 B. Envoy設定の生成と同期 C. Kubernetes API serverの役割 D. Identity管理

回答を表示

回答: C. Kubernetes API serverの役割

解説: Cilium Agentは各node上で実行され、eBPFプログラム管理、policy compilation、Envoy設定の生成・同期、Identity管理、endpoint管理、flow loggingを担当します。Kubernetes API serverはKubernetes control planeの一部であり、Ciliumとは別のものです。

12. Ciliumは同一node上のPod-to-Pod通信に対して、どのような最適化を提供しますか?

A. 常にexternal networkを経由してrouteする B. network stackをbypassするeBPF経由のdirect kernel path C. すべてのトラフィックをEnvoyへforwardする D. 通信できない

回答を表示

回答: B. network stackをbypassするeBPF経由のdirect kernel path

解説: 同一node上のPod-to-Pod通信では、CiliumはeBPFを使用してdirect kernel path経由でトラフィックをforwardします。これによりLinux network stack全体をbypassし、非常に低いレイテンシー(~0.1ms)を実現します。