トキヌク。

KCNA サンプル問題

Kubernetes and Cloud Native Associate(KCNA)対策のオリジナル問題50問を無料公開。アプリの無料枠と同じ問題で、全400問収録のKCNA問題集から抜粋しています。「答えと解説を見る」を開くと、正解だけでなく全選択肢の解説を読めます。

50問無料公開 全400問収録 全選択肢解説付き
アプリで解く(無料・登録不要)→

Kubernetes基礎

コンポーネント役割

Q1. Deployment配下のPodでコンテナが終了しました。Pod名・UID・配置ノードは変わらず、RESTARTSが増えています。restartPolicyに従って同じPod内のコンテナを再起動させる主体はどれですか?

  1. A. kubelet
  2. B. kube-scheduler
  3. C. kube-controller-manager
  4. D. kube-apiserver
答えと解説を見る

正解:A

A(正解) 正解。ノード上でコンテナランタイムを制御し、restartPolicyに従って再起動する

B 未配置Podの配置先を決める。既に割り当てられたPod内の再起動は担当しない

C レプリカ不足を補うなどの調整を行う。同じPod内の再起動はkubeletの役割

D APIの受付と状態保存を仲介する。ノード上の再起動を実行する役割ではない

コンポーネント役割

Q2. 障害復旧計画で、Deploymentの宣言やSecretなどKubernetes APIの状態を保存するデータストアのバックアップが必要です。アプリのデータベースとは別に対象とするものはどれですか?

  1. A. コンテナレジストリ
  2. B. etcd
  3. C. CoreDNS
  4. D. kube-scheduler
答えと解説を見る

正解:B

A イメージを保管する。DeploymentやSecretのAPI状態の保管先ではない

B(正解) 正解。KubernetesのAPIオブジェクトの状態を保存するキー・バリュー型データストア

C Service名などの名前解決を行う。APIオブジェクトの永続化先ではない

D Podの配置を判断する。クラスター状態を保存するデータストアではない

コンポーネント役割

Q3. 新しいPodにはCPUのrequestとnodeSelectorが設定されています。APIに作成されましたが、spec.nodeNameは未設定です。配置可能なノードを評価して割り当てる主体はどれですか?

  1. A. kube-proxy
  2. B. ReplicaSetコントローラー
  3. C. kube-scheduler
  4. D. kubelet
答えと解説を見る

正解:C

A Serviceの通信経路を構成する。CPU要求による配置判断は行わない

B 必要なPod数を維持する。作成したPodのノード選定はschedulerに委ねる

C(正解) 正解。未配置Podの要求量や配置条件を評価してノードを選ぶ

D 選ばれたノードでPodを実行する。複数ノードから配置先を選ぶ役割ではない

コンポーネント役割

Q4. spec.replicasが3のReplicaSetで、Podを1つ削除したところ、新しいPodオブジェクトが作成されました。この不足を検知して作成を要求するコントローラーを動かす標準コンポーネントはどれですか?

  1. A. kube-apiserver
  2. B. kube-scheduler
  3. C. cloud-controller-manager
  4. D. kube-controller-manager
答えと解説を見る

正解:D

A 削除・作成要求を受け付ける。レプリカ数を比較する調整ループとは別

B 新しく作成されたPodを配置する。不足Podの作成はReplicaSetコントローラーが担う

C クラウドのノードやロードバランサーとの統合を担う。ReplicaSetの数調整とは別

D(正解) 正解。ReplicaSetコントローラーなどを実行し、宣言数と実際の数の差を埋める

コンポーネント役割

Q5. kubectlでPodの一覧取得を要求したユーザーにForbiddenが返りました。認証された主体に対し、そのAPI操作を認可するクラスター側の入口はどれですか?

  1. A. kube-apiserver
  2. B. kubelet
  3. C. CoreDNS
  4. D. kube-proxy
答えと解説を見る

正解:A

A(正解) 正解。APIリクエストを受け、認証・認可を通してリソースへのアクセスを判断する

B ノード上でPodを管理する。kubectlによるAPIの一覧要求の入口ではない

C 名前解決を担う。ユーザーのAPI操作権限は判定しない

D Service通信の転送を扱う。Kubernetes APIの認可はapiserverが担う

コンポーネント役割

Q6. クラウド連携を組み込んだクラスターで、LoadBalancer型Serviceを作成するとクラウド側のロードバランサーが用意されます。クラウド固有の制御をコアの制御から分離する標準コンポーネントはどれですか?

  1. A. CoreDNS
  2. B. cloud-controller-manager
  3. C. kube-scheduler
  4. D. kube-apiserver
答えと解説を見る

正解:B

A ServiceのDNS名を解決する。クラウドAPIでロードバランサーを作る役割ではない

B(正解) 正解。クラウドプロバイダーのAPIと連携するService・Nodeなどのコントローラーを実行する

C Podの配置先を選ぶ。クラウドのロードバランサー作成の担当ではない

D Serviceオブジェクトを受け付ける。クラウド固有の作成処理は別コントローラーが担う

コンポーネント役割

Q7. 担当者はコントロールプレーンの障害調査と、各ノードのService通信障害調査を分担します。標準構成で後者のノード側担当に分類するコンポーネントはどれですか?

  1. A. kube-scheduler
  2. B. kube-apiserver
  3. C. kube-proxy
  4. D. etcd
答えと解説を見る

正解:C

A Pod配置を決めるコントロールプレーン側のコンポーネント

B APIを公開するコントロールプレーン側のコンポーネント

C(正解) 正解。各ノードのService転送ルールを管理するノードコンポーネント

D APIオブジェクトの状態を保持するコントロールプレーン側のデータストア

コンポーネント役割

Q8. kube-proxyを使うクラスターで、Pod IPへは接続できますが、Serviceの仮想IPへの通信に問題があります。EndpointSliceを参照してノードのService転送ルールを管理するのはどれですか?

  1. A. kubelet
  2. B. kube-scheduler
  3. C. CoreDNS
  4. D. kube-proxy
答えと解説を見る

正解:D

A コンテナ実行やProbeを管理する。Service仮想IPの転送ルールの担当ではない

B Pod配置を判断する。Service通信経路の同期は行わない

C Service名をIPへ解決する。既知の仮想IPへの転送ルールは管理しない

D(正解) 正解。Serviceとエンドポイント情報からノード上の通信ルールを構成する

コンポーネント役割

Q9. Deploymentマニフェストをkubectl applyしたところ、Pod作成前にスキーマ検証エラーが返りました。このAPI要求を受けて検証する標準コンポーネントはどれですか?

  1. A. kube-apiserver
  2. B. etcd
  3. C. kube-scheduler
  4. D. kube-proxy
答えと解説を見る

正解:A

A(正解) 正解。認証・認可や検証、アドミッション処理を通してオブジェクトを受け付ける

B 検証後の状態を保存する。kubectlの要求を直接受けてDeploymentの検証を行う入口ではない

C 作成済みの未配置Podを扱う。DeploymentマニフェストのAPI検証は担当しない

D Serviceの転送ルールを更新する。Deploymentのフィールド検証は行わない

コンポーネント役割

Q10. Podはnode-aに割り当て済みです。イメージ取得やコンテナ起動をランタイムへ依頼し、Probeの結果を監視するノードエージェントはどれですか?

  1. A. kube-proxy
  2. B. kubelet
  3. C. kube-controller-manager
  4. D. kube-scheduler
答えと解説を見る

正解:B

A Service通信のルールを維持する。ランタイムへのコンテナ起動指示は行わない

B(正解) 正解。割り当てられたPodの仕様に従ってランタイムを制御し、状態を報告する

C クラスター全体の調整を行う。各ノードのProbe実行主体ではない

D Podの割り当てを決める。割り当て後のコンテナ起動を実行しない

リソース使い分け

Q11. APIサーバーアプリは3レプリカを同じ扱いで実行し、イメージ更新時には古いPodと新しいPodを段階的に入れ替えたいです。専用の固定IDや各Podの専用ディスクは不要です。どれを選びますか?

  1. A. DaemonSet
  2. B. Job
  3. C. Deployment
  4. D. StatefulSet
答えと解説を見る

正解:C

A 対象ノードごとにPodを配置する。任意の3レプリカを維持する目的とは異なる

B 処理の完了を管理する。継続稼働するAPIのローリング更新には適さない

C(正解) 正解。交換可能なレプリカの数とPodテンプレートの段階的更新を管理する

D 安定したIDや専用ストレージが必要な用途向け。今回の条件ではDeploymentが標準的

リソース使い分け

Q12. 3台のデータベースメンバーに、db-0、db-1、db-2という識別子とそれぞれのPVCを割り当てたいです。Podが再作成されても同じメンバーの識別子とストレージを使うために選ぶのはどれですか?

  1. A. Deployment
  2. B. DaemonSet
  3. C. ReplicaSet
  4. D. StatefulSet
答えと解説を見る

正解:D

A Podは交換可能なレプリカとして管理され、番号付きの安定IDや各レプリカのPVC管理を提供しない

B ノード単位の配置を管理する。データベースメンバーごとの番号付きID管理とは異なる

C レプリカ数を維持する。安定した番号やレプリカ別PVCの管理はStatefulSetの機能

D(正解) 正解。レプリカごとの安定したIDとvolumeClaimTemplatesによるPVCを管理できる

リソース使い分け

Q13. ノード追加時に、そのノードにも自動で監視エージェントを配置したいです。対象ノードごとに1つのPodが必要で、クラスター全体の固定レプリカ数は決めません。適切なリソースはどれですか?

  1. A. DaemonSet
  2. B. Deployment
  3. C. StatefulSet
  4. D. CronJob
答えと解説を見る

正解:A

A(正解) 正解。適格な各ノードにPodを配置し、ノード追加にも追従する

B 指定した総レプリカ数を管理する。対象ノードごとに1つという配置を保証しない

C レプリカごとの安定したIDを管理する。ノード追加に応じたエージェント配置とは別

D 時刻に応じてJobを起動する。ノードごとの常駐エージェント管理には使わない

リソース使い分け

Q14. データ移行処理を今回1回実行し、成功を完了として記録したいです。失敗時は再試行できますが、成功後に常駐させる必要はありません。適切なリソースはどれですか?

  1. A. CronJob
  2. B. Job
  3. C. Deployment
  4. D. DaemonSet
答えと解説を見る

正解:B

A 周期的にJobを生成する。今回の単発処理に時刻スケジュールは不要

B(正解) 正解。成功した実行の完了数を管理し、必要に応じて失敗を再試行する

C 継続稼働するレプリカを維持する。成功して終了する処理の完了管理とは異なる

D ノードごとのPodを維持する。単発の移行成功を完了として管理する用途ではない

リソース使い分け

Q15. 毎晩バックアップを実行するため、時刻の定義と実行結果の管理を分けたいです。スケジュールに従ってJobを生成する親リソースはどれですか?

  1. A. Deployment
  2. B. DaemonSet
  3. C. CronJob
  4. D. Job
答えと解説を見る

正解:C

A 常駐するレプリカを維持する。時間に基づくJob生成を行わない

B 対象ノードごとのPodを維持する。時間に基づくJob生成を行わない

C(正解) 正解。cron形式のスケジュールに従ってJobを生成し、各実行はJobが管理する

D 1回の実行の成功数を管理する。日次スケジュールを持つ親はCronJob

YAML・マニフェスト

Q16. 次のPodラベルに一致するkubectlの-l指定を選びます。YAMLのキー・値とCLIの等値条件の対応として正しいものはどれですか? metadata: labels: app: web

  1. A. -l tier=web
  2. B. -l app!=web
  3. C. -l app=web
  4. D. -l app=api
答えと解説を見る

正解:C

A 等値条件として有効だが、キーがappではなくtierなので同じ条件にならない

B web以外の値やそのキーがないPodを選ぶ不等値条件で、要求と逆

C(正解) 正解。YAMLではapp: webというマッピング、CLIの等値セレクターではapp=webと表す

D 等値条件として有効だが、値がwebではなくapiなので一致しない

リソース使い分け

Q17. 次のPodマニフェストを読みます。nameとcontainersが表す対象の組み合わせはどれですか? apiVersion: v1 kind: Pod metadata: name: web spec: containers: - name: app image: nginx:1.27

  1. A. metadata.nameはNamespace名、spec.containersはServiceの列
  2. B. metadata.nameはコンテナ名、spec.containersはPVCの列
  3. C. metadata.nameはPod名、spec.containersは実行コンテナの列
  4. D. metadata.nameはイメージ名、spec.containersはノードの列
答えと解説を見る

正解:C

A Namespace指定はmetadata.namespace。containersはPod内のコンテナ定義

B コンテナ名はcontainers内のname。トップレベルmetadata.nameはPod名

C(正解) 正解。metadataはオブジェクトの識別情報、specは望ましい構成を定義する

D Pod名はweb、イメージはimageの値。containersはノード一覧ではない

スケジューリング/スケール

Q18. 次のPod specの抜粋を適用します。ノードAはdisktype=hdd、ノードBはdisktype=ssdです。その他の配置条件は満たすとき、nodeSelectorの意味はどれですか? nodeSelector: disktype: ssd

  1. A. ノードBにSSDディスクを作成する
  2. B. ノードBを配置候補にする
  3. C. ノードAを配置候補にする
  4. D. Podにdisktype=ssdのラベルを付ける
答えと解説を見る

正解:B

A 既存のノードラベルを評価する指定で、ストレージを作成する操作ではない

B(正解) 正解。nodeSelectorはノードラベルとの一致条件。Pod自身のラベルではなくノードのラベルを評価する

C hddは指定値ssdと一致しないため候補にならない

D Podラベルの付与はmetadata.labels。nodeSelectorは配置先の条件を表す

kubectl

Q19. Pod webにはappとproxyがあります。app内のshを新しく起動し、対話的に調べます。既存プロセスへ接続するのではなくシェルを起動するコマンドはどれですか?

  1. A. kubectl exec -it web -c app -- sh
  2. B. kubectl attach -it web -c app
  3. C. kubectl exec -it web -c proxy -- sh
  4. D. kubectl logs -f web -c app
答えと解説を見る

正解:A

A(正解) 正解。-cでコンテナを選び、--以降のコマンドをコンテナ内で新規実行する

B 既存プロセスの入出力へ接続する。新しいshを起動する操作ではない

C 新しいshは起動できるが、対象がproxyであり、調べたいappではない

D appの標準出力ログを追う。コンテナ内にシェルを起動しない

kubectl

Q20. Namespace prodのDeployment webを更新した直後に不具合が判明しました。直前のPodテンプレートのリビジョンが保存されています。そこへ戻すコマンドはどれですか?

  1. A. kubectl rollout undo deployment/web -n prod
  2. B. kubectl rollout restart deployment/web -n prod
  3. C. kubectl rollout status deployment/web -n prod
  4. D. kubectl scale deployment/web -n prod --replicas=3
答えと解説を見る

正解:A

A(正解) 正解。Deploymentの保存済み履歴を使って直前のPodテンプレートへ戻す

B 現在のテンプレートでPodを作り直す。過去のイメージや設定には戻さない

C 更新の進行状況を監視する。リビジョンを変更しない

D レプリカ数を変更する。過去のPodテンプレートへ戻す操作ではない

kubectl

Q21. Namespace prodのPod web-7がPendingです。コンテナはまだ起動していません。FailedSchedulingなどのイベントと要求量をまとめて確認する最初のコマンドはどれですか?

  1. A. kubectl get pod web-7 -n prod
  2. B. kubectl logs web-7 -n prod --previous
  3. C. kubectl top pod web-7 -n prod
  4. D. kubectl describe pod web-7 -n prod
答えと解説を見る

正解:D

A 主に状態の要約を表示する。詳細なイベント確認にはdescribeを使う

B 前回終了したコンテナのログを見る。未起動Podのスケジューリングイベントは表示しない

C 使用量を取得する。未起動Podの配置失敗理由を表示するコマンドではない

D(正解) 正解。Podの詳細とEventsを表示し、配置不可の理由などを確認できる

kubectl

Q22. 各ノードで現在使用中のCPUとメモリを比較します。Metrics Serverが正常で、要求済み資源の合計ではなく実測の使用量一覧が必要です。どれを実行しますか?

  1. A. kubectl get nodes -o wide
  2. B. kubectl top pods -A
  3. C. kubectl top nodes
  4. D. kubectl describe nodes
答えと解説を見る

正解:C

A 状態やアドレスなどの一覧を広げる。現在のCPU・メモリ使用量は表示しない

B 全NamespaceのPod使用量を表示する。ノード単位の使用量一覧とは対象が異なる

C(正解) 正解。Metrics APIからノードの現在のCPU・メモリ使用量を表示する

D 容量や要求量、イベントを確認できるが、現在の実測使用量一覧を取得するコマンドではない

コンテナオーケストレーション

スケジューリング/スケール

Q23. CPU requestsを設定したWebアプリにアクセスが集中しています。各Podのサイズを変えず、CPU使用率に応じてDeploymentのレプリカ数を調整したいです。必要なメトリクスAPIが利用できる場合、どの仕組みが適切ですか?

  1. A. PodDisruptionBudget
  2. B. VerticalPodAutoscaler
  3. C. HorizontalPodAutoscaler
  4. D. Cluster Autoscaler
答えと解説を見る

正解:C

A 自発的中断で同時に利用不能となるPod数を制限する。負荷に応じてPodを増減させる機能ではない

B VPAはPodのリソース要求を推奨・調整する。レプリカ数を増やして負荷を分散する仕組みではない

C(正解) 正解。HPAは対象ワークロードのレプリカ数をメトリクスに基づいて調整する。CPU使用率はrequestsを基準に計算する

D ノードグループの容量を調整する。DeploymentのCPU使用率を直接の目標としてレプリカ数を制御するものではない

スケジューリング/スケール

Q24. 処理の都合でレプリカ数は3に固定していますが、各PodのCPU requestsが実測に比べて過大です。使用実績からPod単体のrequestsの推奨値を得たい場合、どの仕組みが適切ですか?

  1. A. VerticalPodAutoscaler
  2. B. Cluster Autoscaler
  3. C. HorizontalPodAutoscaler
  4. D. kube-scheduler
答えと解説を見る

正解:A

A(正解) 正解。VPAはCPUやメモリの使用実績からrequestsを推奨する。推奨だけを利用する運用もでき、Pod数の変更とは別の調整となる

B スケジュールできないPodや余剰容量を踏まえてノード数を調整する。Pod単体のrequestsを推奨しない

C HPAの調整対象はレプリカ数である。各Podのrequestsの推奨値を算出する目的にはVPAを用いる

D 既存のrequestsなどを使ってPodの配置先を決める。実測からrequestsの推奨値を生成する機能ではない

スケジューリング/スケール

Q25. DeploymentのPodが増えましたが、どのノードにも要求CPUを収容できずPendingになっています。クラウドのノードグループを上限の範囲内で拡張して配置可能にする仕組みはどれですか?

  1. A. Cluster Autoscaler
  2. B. cloud-controller-manager
  3. C. HorizontalPodAutoscaler
  4. D. DaemonSet
答えと解説を見る

正解:A

A(正解) 正解。配置できないPodの要求とノードグループの構成を評価してノードを増やす。任意のPending理由を解消するわけではない

B クラウド固有のノード情報やロードバランサーを連携する。容量不足を判断してノード数を増減する役割とは異なる

C Podのレプリカ数は変更できるが、要求CPUを収容するノード自体を作成する機能ではない

D 対象ノードにPodを配置するコントローラーである。ノードグループの容量を増やす機能ではない

スケジューリング/スケール

Q26. 専用ノードにdedicated=batch:NoScheduleというtaintを設定しました。既存Podと、対応するtolerationがない新規Podの扱いとして正しいものはどれですか?

  1. A. 既存Podは残り、新規Podの配置は拒まれる
  2. B. 既存Podは残り、新規Podも通常どおり配置される
  3. C. 既存Podも退去し、新規Podだけ配置される
  4. D. 既存Podも退去し、新規Podの配置も拒まれる
答えと解説を見る

正解:A

A(正解) 正解。NoScheduleは新規のスケジューリングを防ぐ。既存Podの退去はNoExecuteと区別し、tolerationがあっても配置を保証しない

B NoScheduleに一致するtolerationがないPodはこのtaintを許容できない。ラベルを追加するだけの操作とは異なる

C NoScheduleは既存Podを退去させず、許容しない新規Podの配置を防ぐ。既存と新規の扱いが逆になっている

D 既存Podも退去の対象にする効果はNoExecuteである。NoScheduleを付けるだけでは既存Podを追い出さない

セキュリティ

Q27. 古い手順書にPodSecurityPolicyを適用して特権コンテナを拒否する記述があります。Kubernetes v1.25以降のクラスターに移行する際の判断として適切なものはどれですか?

  1. A. 現行APIのため、Namespace名だけ修正して適用する
  2. B. 削除されたAPIのため、現行のAdmission制御へ移行する
  3. C. NetworkPolicyのため、通信許可ルールへ読み替える
  4. D. RBACのため、同名のClusterRoleを作れば置き換わる
答えと解説を見る

正解:B

A PodSecurityPolicyのAPI自体が削除されている。Namespaceを変更しても利用できず、代替の制御を設計する必要がある

B(正解) 正解。PodSecurityPolicyはv1.25で削除された。Pod Security Admissionなどへ要件を対応付けて移行する必要がある

C PodSecurityPolicyはPodのセキュリティ設定を制約する旧APIである。NetworkPolicyはネットワーク通信の許可を扱う

D RBACはAPI操作の権限を制御する。Podの特権設定を制限する要件を同名のRoleだけで満たすことはできない

セキュリティ

Q28. PodのYAMLで、アプリを非rootとして実行し、コンテナのルートファイルシステムを書き込み禁止にしたいです。これらの実行時設定を記述するフィールドはどれですか?

  1. A. securityContext
  2. B. readinessProbe
  3. C. resources
  4. D. serviceAccountName
答えと解説を見る

正解:A

A(正解) 正解。runAsNonRootはPodまたはコンテナのsecurityContext、readOnlyRootFilesystemはコンテナのsecurityContextで指定できる

B Podがトラフィックを受けられるかを検査する。root実行やルートファイルシステムへの書き込みを制限する設定ではない

C CPU・メモリなどのrequestsとlimitsを指定する。実行ユーザーやファイルシステム権限の制御とは異なる

D APIアクセス時に利用するServiceAccountを選ぶフィールドである。Linuxユーザーやファイルシステムの書き込み可否は指定しない

セキュリティ

Q29. あるServiceAccountに、Namespace内のPodの一覧取得だけを許可したいです。Pod間通信の制御ではなく、kube-apiserverへの操作を制限する仕組みはどれですか?

  1. A. NetworkPolicy
  2. B. Pod Security Admission
  3. C. taintとtoleration
  4. D. RBAC
答えと解説を見る

正解:D

A Pod間などのネットワーク通信を制限する。APIのlistやdeleteを操作別に認可する仕組みではない

B Podのセキュリティ標準をAdmission時に検査する。ServiceAccountにAPIの一覧取得権限を付与する仕組みではない

C Podとノードのスケジューリング制約を扱う。APIリソースへの操作権限はRoleなどで定義する

D(正解) 正解。Roleのresourcesとverbsで許可する操作を定義し、RoleBindingでServiceAccountへ割り当てる

ネットワーク/Service

Q30. 複数のサービス間でmTLS、HTTPルーティング、通信メトリクスを統一的に管理したいです。ネットワークプロキシと、その設定を配る制御プレーンを持つサービスメッシュはどれですか?

  1. A. Envoy
  2. B. CoreDNS
  3. C. Istio
  4. D. Calico
答えと解説を見る

正解:C

A 設定されたルールに従い通信を処理するプロキシである。プロキシ単体と、それを管理するサービスメッシュ全体を区別する

B Serviceなどの名前解決を提供するDNSサーバーである。サービス間のHTTPルーティングやmTLSをまとめて管理しない

C(正解) 正解。サービスメッシュとして通信ポリシーやルーティングを管理する。サイドカーモードではEnvoyがデータプレーンを担う

D Podネットワークやネットワークポリシーを実装する。ここで求めるHTTP通信を管理するサービスメッシュとは役割が異なる

ネットワーク/Service

Q31. Istioのサイドカーモードで、制御プレーンから受け取った設定に従って各Podの通信を中継するコンポーネントはどれですか?

  1. A. kube-scheduler
  2. B. Envoy
  3. C. CoreDNS
  4. D. Istiod
答えと解説を見る

正解:B

A Podの配置先を選ぶ。配置後のサービス間通信を中継するデータプレーンではない

B(正解) 正解。Envoyプロキシがデータプレーンとして通信を処理する。Istiodなどの制御プレーンは設定や証明書を管理する

C DNSによる名前解決を担う。HTTPリクエストをメッシュの設定に従って中継するプロキシではない

D サービス検出や設定配布などの制御プレーンを担う。各Podのデータ通信をサイドカーとして中継する役割ではない

ネットワーク/Service

Q32. PodにIPを割り当てる処理が失敗し、別ノード上のPodとの接続も確認できません。KubernetesのPodネットワークを実装する仕組みとして最初に確認する対象はどれですか?

  1. A. CSI対応のストレージドライバー
  2. B. CoreDNSによるDNS設定
  3. C. CNI対応のネットワークプラグイン
  4. D. Ingressコントローラー
答えと解説を見る

正解:C

A ボリュームの作成や接続を扱う。コンテナへのネットワーク接続はCNI対応プラグインの担当となる

B Service名などの名前解決を提供する。Podのネットワーク接続を作成してIPを割り当てる役割ではない

C(正解) 正解。ネットワークプラグインがPodのネットワーク接続を用意し、IPAMなどと連携してIPを割り当てる。実装方式はプラグインにより異なる

D 主に外部からのHTTP(S)ルーティングを実装する。PodネットワークそのものやPodのIP割り当ては担わない

ネットワーク/Service

Q33. ServiceのClusterIPへ直接接続すると応答しますが、web.default.svc.cluster.localでは名前解決に失敗します。一般的なクラスターで、この名前解決を担うコンポーネントはどれですか?

  1. A. CoreDNS
  2. B. kube-proxy
  3. C. kube-scheduler
  4. D. etcd
答えと解説を見る

正解:A

A(正解) 正解。KubernetesのService情報を利用してクラスター内DNSを提供する。IP接続とDNS解決を分けて調査できる

B Serviceの仮想IPへ届いた通信の転送を実装する。DNS名をIPへ解決するサーバーではない

C Podの配置先ノードを選択する。配置後のDNS問い合わせに回答する役割は持たない

D クラスターの状態を保存する。PodからのDNS問い合わせを受け付けてService名を解決しない

リソース使い分け

Q34. Webコンテナと補助プロキシを同じノードへ一緒に配置し、ネットワーク名前空間を共有させます。Kubernetesが両者をまとめてスケジュールする単位はどれですか?

  1. A. Namespace
  2. B. Pod
  3. C. コンテナ
  4. D. ReplicaSet
答えと解説を見る

正解:B

A オブジェクトを論理的に分けるスコープである。同じNamespaceでもPodは異なるノードへ配置できる

B(正解) 正解。Podが1つ以上のコンテナをまとめる最小のデプロイ単位となる。同一Podのコンテナは一緒に配置される

C コンテナはPod内で実行される。Kubernetesのschedulerがそれぞれ独立に別ノードへ配置する単位ではない

D 希望する数のPodを維持するコントローラーである。コンテナの共有ネットワークを定義する最小単位ではない

リソース使い分け

Q35. アプリが書き出すファイルを補助コンテナが読み、localhost経由でも連携します。両者は必ず一緒に増減させる設計です。同一Podにまとめる理由として適切なものはどれですか?

  1. A. ネットワークとマウントしたボリュームを共有できる
  2. B. 補助コンテナだけ独立にスケールできる
  3. C. 共有カーネルによる隔離を完全になくせる
  4. D. コンテナ間でファイルシステム全体を自動共有する
答えと解説を見る

正解:A

A(正解) 正解。同一Podではlocalhostで通信でき、同じボリュームを各コンテナにマウントできる。密結合な補助処理を同居させる設計に向く

B Podはコンテナ群をまとめて複製する。同じPodに入れると、補助コンテナだけ別のレプリカ数へ変更することはできない

C 同一Podでもコンテナは個別の実行環境を持つ。目的は必要なネットワークとボリュームを共有し、連携を容易にすることにある

D コンテナごとのルートファイルシステムは別である。ファイルの共有には同じボリュームをそれぞれへマウントする

リソース使い分け

Q36. アプリのコードを変更せず、実行中のアプリが出すログを同じPod内から継続的に転送したいです。この補助処理の配置パターンはどれですか?

  1. A. ブルーグリーンデプロイパターン
  2. B. DaemonSetによるノード単位の配置
  3. C. 通常のInit Containerパターン
  4. D. サイドカーパターン
答えと解説を見る

正解:D

A 旧版と新版を並行稼働させて通信先を切り替える更新方式である。ログ転送コンテナの同居を指す用語ではない

B 各対象ノードにPodを配置する方式である。今回の要件はノードごとではなくアプリと同じPodでの補助処理となる

C 通常のInit Containerはアプリ起動前に実行を完了する。実行中のアプリのログを継続転送する用途には常駐する補助処理を使う

D(正解) 正解。アプリと並走する補助コンテナを同じPodに配置する。起動前に完了する準備処理とは用途が異なる

アプリケーション配信

アプリ配信/GitOps

Q37. 運用者が本番Deploymentを直接編集すると、同期エージェントが数分後にGitに記録された構成へ戻しました。この動作を説明するGitOpsの原則はどれですか?

  1. A. 宣言した状態を継続的に調整する
  2. B. 承認された操作履歴を順番に再生する
  3. C. Gitの変更時だけ構成を一度適用する
  4. D. CIのテスト結果から構成を生成する
答えと解説を見る

正解:A

A(正解) 正解。実環境とバージョン管理された望ましい状態を比較し、調整ループが差分を解消する

B 操作の再生ではなく、現在の状態と望ましい状態の差分を扱う

C 変更時の一度きりの適用では、その後の直接編集によるドリフトを検知できない

D テスト結果は構成の信頼できる情報源を置き換えるものではない

アプリ配信/GitOps

Q38. CIはイメージの作成とGitへの構成更新だけを行います。別のコンポーネントがクラスター内で常駐し、Gitとの差分を画面表示して同期します。この役割に合うツールはどれですか?

  1. A. Istio
  2. B. Argo CD
  3. C. Jenkins
  4. D. kubeadm
答えと解説を見る

正解:B

A サービス間通信の制御が中心で、Gitに置いたアプリ構成の同期は担わない

B(正解) 正解。Kubernetesの宣言的な構成を監視し、Gitと実環境の差分の表示や同期を行う

C ビルドなどを自動化するCI基盤で、記述された構成監視はArgo CDの役割に合う

D Kubernetesクラスターの初期構築を行うツールで、アプリ構成のGit同期は担わない

アプリ配信/GitOps

Q39. 同じアプリを複数クラスターへ導入し、構成テンプレート・既定値・依存パッケージをひとまとめに配布したいです。チャートとして管理し、導入済みリリースを更新できるツールはどれですか?

  1. A. kubeadm
  2. B. containerd
  3. C. Helm
  4. D. Kustomize
答えと解説を見る

正解:C

A クラスター構築を支援するもので、アプリのチャートを管理するツールではない

B コンテナランタイムで、チャートの導入やリリース履歴を管理しない

C(正解) 正解。チャートにテンプレートや値、依存関係をまとめ、リリース単位で導入と更新を管理する

D 既存マニフェストをパッチで合成する仕組みで、チャートのリリース管理は行わない

アプリ配信/GitOps

Q40. Helmチャートのテンプレートは replicas: {{ .Values.replicaCount }} を使っています。既定値は2ですが、本番だけ5にしたいです。チャート本体を変えずに設定する方法はどれですか?

  1. A. Chart.yaml の version を5にする
  2. B. Deploymentの status.replicas を5にする
  3. C. チャートの依存関係を5個に増やす
  4. D. replicaCount: 5 を値ファイルで渡す
答えと解説を見る

正解:D

A versionはチャートのバージョンであり、Podのレプリカ数として参照されない

B statusは観測された状態であり、Helmテンプレートの入力値や望ましいレプリカ数ではない

C 依存チャートの数はこのDeploymentのreplicaCountを変更しない

D(正解) 正解。helm upgrade等の -f で値ファイルを渡すと、テンプレートへ注入する既定値を上書きできる

アプリ配信/GitOps

Q41. 開発・本番で同じDeploymentのベースを共有し、本番だけレプリカ数を増やします。テンプレート言語を使わず、kubectl apply -k で適用する構成管理方式はどれですか?

  1. A. Kustomizeのベースとオーバーレイ
  2. B. Helmのチャートと値ファイル
  3. C. Argo Rolloutsの段階公開設定
  4. D. etcdのスナップショットと復元
答えと解説を見る

正解:A

A(正解) 正解。ベースのリソースに環境ごとのパッチを重ね、kubectlの -k で適用できる

B Helmはテンプレートを値で展開する方式で、kubectl apply -k の対象ではない

C 段階公開を制御する仕組みで、ベースの環境別パッチを合成する方式ではない

D クラスター状態のバックアップ方式で、アプリの環境差分を管理する方式ではない

アプリ配信/GitOps

Q42. 新版へ5%のリクエストを送り、エラー率を確認して20%、50%、100%と増やします。旧版も稼働したままで、Podの順次交換だけではなく利用者への公開割合を制御します。この戦略はどれですか?

  1. A. Recreate方式の更新
  2. B. カナリアリリース
  3. C. ブルーグリーンデプロイ
  4. D. 標準のローリングアップデート
答えと解説を見る

正解:B

A 旧Podを削除してから新版を作成するため、旧版と新版を残して公開比率を増やす方式ではない

B(正解) 正解。少量の本番トラフィックで新版を検証し、リスクを限定しながら公開範囲を広げる

C 一般に並行する環境間でトラフィックを切り替える方式で、設問の段階的な比率制御はカナリアに当たる

D Podを順次置き換えるが、指定したリクエスト比率の分析と段階昇格は標準Deploymentだけでは行わない

アプリ配信/GitOps

Q43. prod NamespaceのDeployment webを更新しました。最大120秒待ち、展開の完了・失敗をCIで判定したいです。目的に合うコマンドはどれですか?

  1. A. kubectl rollout history deployment/web -n prod
  2. B. kubectl logs deployment/web -n prod --tail=120
  3. C. kubectl get deployment/web -n prod -o yaml
  4. D. kubectl rollout status deployment/web -n prod --timeout=120s
答えと解説を見る

正解:D

A historyは過去のリビジョンを表示するので、現在の展開完了を待たない

B コンテナログを表示するコマンドで、tailは表示行数。展開を120秒待つ指定ではない

C その時点のオブジェクトを表示するだけで、展開完了を待機して終了結果を判定するコマンドではない

D(正解) 正解。rollout statusは展開を追跡し、完了時は成功終了する。timeoutで待機時間を限定できる

アプリ配信/GitOps

Q44. 次のDeployment設定では、更新中に維持するAvailable Podの最低数と、desired数を超えて作れるPod数はそれぞれいくつですか?終了中Podの一時的な残存は数えません。 spec: replicas: 4 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0

  1. A. 最低3個、超過1個
  2. B. 最低4個、超過0個
  3. C. 最低1個、超過4個
  4. D. 最低4個、超過1個
答えと解説を見る

正解:D

A 最低3個となるのはmaxUnavailableが1の場合で、設問では0

B maxSurgeは1なので、新Podを先に1個作成できる

C replicasは望ましい総数であり、maxSurgeとmaxUnavailableの意味を入れ替えている

D(正解) 正解。maxUnavailableが0なので4個の可用性を維持し、maxSurgeが1なのでdesiredを1個まで超えて作成できる

アーキテクチャ・可観測性

可観測性

Q45. 注文APIで、失敗率の推移、特定注文のエラー内容、下流サービスの処理時間を別々に調べたいです。この順番で組み合わせるテレメトリーはどれですか?

  1. A. トレース、メトリクス、ログ
  2. B. メトリクス、トレース、ログ
  3. C. メトリクス、ログ、トレース
  4. D. ログ、トレース、メトリクス
答えと解説を見る

正解:C

A 失敗率の継続的な集計にはメトリクス、個別エラーの内容にはログが合い、順序が逆

B 最初は合うが、特定エラーの内容をログ、下流の処理区間をトレースとして扱う順序が逆

C(正解) 正解。集計された時系列はメトリクス、個別イベントの詳細はログ、サービスをまたぐ処理経路はトレースが適する

D ログだけでも集計は可能だが、設問の代表的な役割分担では個別エラーはログで、下流の処理区間はトレース

可観測性

Q46. /metricsを収集してHTTPリクエスト総数を時系列で保存し、PromQLで直近5分の発生率を集計したいです。中心となるバックエンドはどれですか?

  1. A. Grafana
  2. B. Fluent Bit
  3. C. OpenTelemetry Collector
  4. D. Prometheus
答えと解説を見る

正解:D

A データソースをクエリして可視化するが、設問のPrometheus形式の収集と時系列保存を担うバックエンドではない

B ログの収集と転送に使うもので、PromQLを提供する時系列バックエンドではない

C テレメトリーの受信・処理・転送を担い、PromQL付きの長期時系列保存基盤ではない

D(正解) 正解。メトリクスを収集・保存し、PromQLで時系列を計算する機能を提供する

可観測性

Q47. メトリクスはPrometheus、ログはLokiへ保存済みです。同じ画面にエラー率のグラフと対応するログを並べたいです。主に導入する可視化ツールはどれですか?

  1. A. Grafana
  2. B. Alertmanager
  3. C. Fluent Bit
  4. D. Metrics Server
答えと解説を見る

正解:A

A(正解) 正解。複数のデータソースへ接続し、メトリクスやログをダッシュボードで可視化できる

B アラートの集約と通知を担い、メトリクスとログのダッシュボード作成が主目的ではない

C ログ転送を担うので、すでに保存されたメトリクスとのダッシュボード表示を担わない

D CPUやメモリのリソースメトリクスを提供するが、複数データソースの可視化ツールではない

可観測性

Q48. 平均CPU使用率は正常ですが、注文APIだけが遅くなっています。1件の注文が認証、在庫、決済のどこで待っているかを調べるには、どの観測方法が最も適切ですか?

  1. A. イメージの合計容量を比較する
  2. B. 同じtrace IDのスパンを比較する
  3. C. 全ノードのCPU平均を比較する
  4. D. Podの総数だけを比較する
答えと解説を見る

正解:B

A イメージ容量は配布サイズであり、処理中の下流サービスの待ち時間を直接示さない

B(正解) 正解。分散トレースは関連する処理区間をつなぎ、サービスごとの所要時間や依存関係を調べられる

C CPU平均は利用傾向を示すが、その注文が下流のどの処理で待ったかまでは示さない

D Pod総数はリクエストの経路と各処理区間の時間を表さない

可観測性

Q49. アプリが/metricsを公開し、Prometheusにscrape_interval: 15sを設定しています。アプリからの送信ジョブはありません。通常の取得方式として正しいものはどれですか?

  1. A. etcdが約15秒間隔で転送する
  2. B. kubeletが約15秒間隔で保存する
  3. C. Prometheusが約15秒間隔で取得する
  4. D. アプリが約15秒間隔で送信する
答えと解説を見る

正解:C

A アプリのメトリクスはetcdを経由せず、公開エンドポイントから収集する

B この設定はPrometheusの取得間隔であり、kubeletの永続保存処理を指定しない

C(正解) 正解。通常のスクレイプはPrometheus側がHTTPエンドポイントへアクセスするプル方式

D scrape_intervalはPrometheus側の取得間隔で、アプリの送信スケジュールではない

可観測性

Q50. 同じ障害で50Podからアラートが発生しました。Prometheusの検知ルールはそのままにし、通知を1件へまとめ、依存サービスの派生アラートを抑制したいです。中心となるものはどれですか?

  1. A. Grafanaのグラフの凡例と色分け
  2. B. Metrics Serverの収集間隔と集計
  3. C. Deploymentのレプリカ数とラベル
  4. D. Alertmanagerのグループ化と抑制
答えと解説を見る

正解:D

A 表示の整理はできるが、アラート通知の重複排除と依存関係に基づく抑制の中心はAlertmanager

B リソース使用量の提供基盤で、Prometheusアラートの通知集約を担当しない

C Pod構成の変更はアラート通知のグループ化や抑制ルールの代わりにならない

D(正解) 正解。アラートをグループ化し、重複排除やinhibitionによって派生通知を抑制できる

続きは演習アプリで

このページの50問は、演習アプリなら弱点に合わせた出題・成績記録つきで解けます。全400問と本番形式の模擬試験は期間パス(1,500円/30日、自動更新なし)で利用できます。

KCNAの演習を無料で始める →

KCNA問題集の詳細(出題範囲・よくある質問)→

掲載している問題はすべてトキヌクのオリジナル問題です。実試験問題の流出コピー(ブレインダンプ)は一切使用していません。本サービスは非公式の学習教材であり、各認定団体とは提携・承認・後援関係にありません。試験名は各団体の商標または登録商標です。
トキヌク トップページへ