k8s 問題集・練習問題クイズ

収録問題 52問 / 10問ランダム出題

Deployment Service ConfigMap Secret Probe Ingress ServiceAccount
k8sの10問クイズに挑戦

ランダムに出題・即時フィードバック・間違えた問題の復習機能付き

クイズをはじめる →

k8sのおすすめ教材を見る →

収録テーマ一覧(全52問)

Q1

k8sで、Podの望ましいレプリカ数を維持しローリングアップデートを扱う代表的なリソースはどれですか?

答え: Deployment

DeploymentはReplicaSetを介してPod数を維持し、ローリングアップデートやロールバックを扱う実務で最もよく使うワークロードです。

Q2

k8sで、Podへ安定した仮想IPやDNS名を提供して通信先を抽象化するリソースはどれですか?

答え: Service

ServiceはPodの入れ替わりに関係なく、ラベルセレクタに一致するPod群への安定した到達点を提供します。

Q3

k8sで、アプリ設定値などの非機密データをPodに渡す用途に適したリソースはどれですか?

答え: ConfigMap

ConfigMapは設定ファイルや環境変数など、機密でない設定データをコンテナに渡すために使います。

Q4

k8sで、パスワードやトークンなどの機密情報を扱うリソースはどれですか?

答え: Secret

Secretは機密情報を扱うためのリソースです。実務では外部Secret管理やRBAC、暗号化設定も合わせて考えます。

Q5

k8sのlivenessProbeの主な目的はどれですか?

答え: コンテナが生存しているか確認し、異常なら再起動させる

livenessProbeはアプリが固まった場合などにコンテナ再起動を促すためのヘルスチェックです。readinessProbeとは役割が違います。

Q6

k8sで、HTTP/HTTPSのホスト名やパスに基づいてServiceへルーティングする入口として使うものはどれですか?

答え: Ingress

IngressはHTTP/HTTPSの外部入口を定義します。実際に動かすにはIngress Controllerが必要です。

Q7

k8sで、Podに付与する実行時のIDとしてRBACやクラウド連携に使われるものはどれですか?

答え: ServiceAccount

ServiceAccountはPodがAPIや外部クラウドリソースにアクセスする際のIDとして扱われます。

Q8

現在のNamespaceにあるPodの状態を一覧で確認したい。まず使う基本コマンドとして適切なものはどれですか?

答え: kubectl get pods

kubectl get pods は現在のNamespaceのPod一覧とREADY、STATUS、RESTARTSなどを確認する基本コマンドです。障害調査の入口としてよく使います。

Q9

特定Podが起動失敗している。イベント、環境変数、ボリューム、Probe設定などの詳細を確認したい。適切なコマンドはどれですか?

答え: kubectl describe pod <pod名>

kubectl describe pod はPodの詳細、コンテナ状態、直近イベントなどを表示します。ImagePullBackOffやProbe失敗などの原因調査に向いています。

Q10

アプリコンテナの標準出力ログを確認したい。単一コンテナPodで基本的に使うコマンドはどれですか?

答え: kubectl logs <pod名>

kubectl logs <pod名> はPod内コンテナのログを表示します。複数コンテナPodでは -c <コンテナ名> を指定して対象を明確にします。

Q11

Pod内で一時的にシェルを開き、ファイルや環境変数を確認したい。一般的な実行コマンドはどれですか?

答え: kubectl exec -it <pod名> -- sh

kubectl exec はコンテナ内でコマンドを実行します。-it は対話操作向けで、-- の後にコンテナ内で実行するコマンドを指定します。

Q12

修正したDeploymentマニフェスト deployment.yaml をクラスタに反映したい。宣言的管理として適切なコマンドはどれですか?

答え: kubectl apply -f deployment.yaml

kubectl apply -f はYAMLなどのマニフェストをクラスタへ宣言的に反映します。差分を継続管理する前提の運用でよく使います。

Q13

特定Namespace dev のPod一覧を確認したい。適切なコマンドはどれですか?

答え: kubectl get pods -n dev

Namespaceを指定するには -n または --namespace を使います。--context は接続先クラスタやユーザーなどのkubectl contextを切り替える指定です。

Q14

Deployment web のレプリカ数を一時的に3へ変更したい。適切なコマンドはどれですか?

答え: kubectl scale deployment web --replicas=3

kubectl scale はDeploymentやReplicaSetなどのレプリカ数を変更します。GitOps運用では、恒久変更はマニフェスト側にも反映する必要があります。

Q15

Deployment api の更新が正常に進んでいるか、ロールアウト状態を確認したい。適切なコマンドはどれですか?

答え: kubectl rollout status deployment/api

kubectl rollout status deployment/api はDeploymentのロールアウト進行状況を確認します。更新が止まっている場合の初期確認に便利です。

Q16

不要になったNamespace sandbox を削除したい。含まれるリソースもまとめて削除される点に注意しながら実行するコマンドはどれですか?

答え: kubectl delete namespace sandbox

kubectl delete namespace sandbox はNamespaceを削除します。Namespace内の多くのリソースも削除対象になるため、対象環境を確認してから実行します。

Q17

操作前に、kubectlが現在どのクラスタ・ユーザー・Namespaceを向いているか確認したい。適切なコマンドはどれですか?

答え: kubectl config current-contextkubectl config view --minify

kubectl config current-context は現在のcontext名を表示します。kubectl config view --minify は現在contextに絞ったcluster、user、namespaceなどの設定確認に使えます。

Q18

Podの配置判断に必要なCPU量をSchedulerへ伝え、同時にコンテナが使えるCPUの上限も設定したい。指定する組合せはどれですか?

答え: requestsとlimits

requestsはスケジューリング時に必要量として使われ、limitsはコンテナが利用できるリソース上限を定めます。

Q19

アプリの起動は完了したが、依存DBへの接続が切れて一時的にリクエストを処理できない。Podを再起動せずServiceの転送先から外したい。使うProbeはどれですか?

答え: readinessProbe

readinessProbeが失敗するとPodは準備未完了となり、通常はServiceの転送対象から外れますが、コンテナは再起動されません。

Q20

DeploymentのPod数をCPU使用率に応じて自動的に増減させたい。代表的に利用するリソースはどれですか?

答え: HorizontalPodAutoscaler

HorizontalPodAutoscalerはCPU使用率などのメトリクスを基に、対象ワークロードのレプリカ数を調整します。

Q21

Nodeメンテナンスのdrain中も、WebアプリのPodを最低2個は利用可能に保ちたい。設定するものはどれですか?

答え: PodDisruptionBudgetのminAvailable

PodDisruptionBudgetはdrainなどの自発的な中断で同時に利用不能にできるPod数を制約します。障害による停止そのものは防ぎません。

Q22

あるNamespaceで、明示的に許可した通信以外はPodへの受信を拒否する方針にしたい。基本となる方法はどれですか?

答え: default-denyのNetworkPolicyを作り、必要な通信を別Policyで許可する

NetworkPolicy対応CNIを前提に、Podを選択する受信default-denyを設定し、必要な送信元やポートだけを追加Policyで許可します。

Q23

Kubernetesアプリを複数のマニフェストとしてまとめ、値を差し替えながら再利用可能に配布したい。Helmで中心になる単位はどれですか?

答え: Chart

Helm ChartはKubernetesリソースのテンプレートや既定値をまとめたパッケージです。環境差分はvaluesで調整し、同じChartを複数環境へ展開できます。

Q24

同じHelm Chartをdevとprodに展開するが、prodだけレプリカ数やイメージタグを変えたい。一般的に編集・指定するものはどれですか?

答え: values.yaml または追加のvaluesファイル

HelmではChart内のテンプレートに値を埋め込みます。環境別の差分はvalues.yaml、別valuesファイル、--setなどで指定します。

Q25

リポジトリにあるChartを初めてクラスタへ展開し、Helmのリリースとして管理したい。基本コマンドはどれですか?

答え: helm install

helm installは指定したChartからリソースを作成し、名前付きのリリースとして履歴管理します。repo updateはローカルのChart索引更新だけです。

Q26

既存のHelmリリースを新しいChartバージョンやvaluesで更新したい。使うコマンドはどれですか?

答え: helm upgrade

helm upgradeは既存リリースを指定したChartと値で更新します。必要に応じて--installを付けると未作成時にインストールもできます。

Q27

HelmのテンプレートがどのKubernetesマニフェストに展開されるか、クラスタへ適用せず事前確認したい。適切なのはどれですか?

答え: helm template

helm templateはChartをローカルでレンダリングし、生成されるYAMLを表示します。CIでの確認やレビューにも使えます。

Q28

Helmリリースの更新に失敗した場合、直前の正常なリビジョンへ戻したい。使うコマンドはどれですか?

答え: helm rollback

helm rollbackはリリース履歴の指定リビジョンへ戻します。対象リビジョンを判断するにはhelm historyで履歴を確認します。

Q29

Helm Chart内で、APIバージョンやアプリバージョンなどChart自体のメタデータを記述するファイルはどれですか?

答え: Chart.yaml

Chart.yamlはChart名、バージョン、appVersionなどChartのメタデータを持ちます。values.yamlはテンプレートへ渡す既定値を持ちます。

Q30

Helmリリースを削除し、Chartから作成されたKubernetesリソースも通常は削除したい。使うコマンドはどれですか?

答え: helm uninstall

helm uninstallは指定リリースをアンインストールし、通常はそのリリースが管理していたKubernetesリソースを削除します。

Q31

一時的にNodeへ新しいPodを配置させず、既存Podはすぐには退避しないようにしたい。使うkubectl操作はどれですか?

答え: kubectl cordon

cordonはNodeをSchedulingDisabledにし、新しいPodの配置対象から外します。既存Podを退避させるにはdrainを使います。

Q32

DeploymentのPodを設定変更なしで順番に作り直し、アプリを再起動させたい。代表的なコマンドはどれですか?

答え: kubectl rollout restart deployment/<name>

kubectl rollout restartはPodテンプレートに再起動用の変更を加え、Deploymentのローリング更新としてPodを作り直します。

Q33

Deploymentの新バージョン展開が途中で止まっていないか確認したい。進行状況の確認に使う代表的なコマンドはどれですか?

答え: kubectl rollout status deployment/<name>

rollout statusはDeploymentなどのロールアウト完了や進行状況を確認します。失敗時はdescribeやlogsで原因を追います。

Q34

NamespaceごとにCPUやメモリの合計使用量を制限し、チーム単位の使いすぎを防ぎたい。使うリソースはどれですか?

答え: ResourceQuota

ResourceQuotaはNamespace内で作成できるリソース数やCPU・メモリ要求量などの合計に上限を設定します。

Q35

PodがKubernetes APIへアクセスするときの権限を、アプリごとに最小化したい。まず紐づけるべきKubernetesリソースはどれですか?

答え: ServiceAccount

PodにはServiceAccountを紐づけられます。実際の許可はRole/ClusterRoleとRoleBinding/ClusterRoleBindingで最小権限にします。

Q36

Namespace内のユーザーにPod一覧の参照だけを許可し、クラスタ全体の権限は与えたくない。使う組合せとして適切なのはどれですか?

答え: Role と RoleBinding

Namespace内だけの権限にはRoleを定義し、そのNamespaceでRoleBindingします。ClusterRoleBindingはクラスタ全体に広がるため過剰になりやすいです。

Q37

Podをrootユーザーで動かさない、特権コンテナを禁止するなど、Podのセキュリティ条件をNamespace単位で強めたい。代表的な仕組みはどれですか?

答え: Pod Security Admission

Pod Security AdmissionはNamespaceラベルでPod Security Standardsのレベルを適用し、Pod作成時にセキュリティ条件を検査できます。

Q38

アプリが永続ディスクを要求し、実際のストレージ実体とは疎結合にしたい。Pod側で参照する要求リソースはどれですか?

答え: PersistentVolumeClaim

PodはPVCを参照して必要な容量やアクセスモードを要求します。PVは実体、StorageClassは動的プロビジョニングの種類を表します。

Q39

クラウド環境でPVC作成時にストレージを自動作成し、SSDやHDDなどの種類を選ばせたい。主に使うリソースはどれですか?

答え: StorageClass

StorageClassは動的プロビジョニングで使うプロビジョナやパラメータを定義します。PVCから参照することでストレージを自動作成できます。

Q40

PodがPendingのまま起動しない。スケジューリング失敗やPVC未束縛などの理由をまず確認するコマンドはどれですか?

答え: kubectl describe pod <pod>

Pendingではコンテナがまだ動いていないことが多く、describeでEventsを確認するとスケジューリング失敗、リソース不足、PVC未束縛などを追えます。

Q41

PodがCrashLoopBackOffになっている。直前に終了したコンテナのログを確認したい。適切なオプションはどれですか?

答え: kubectl logs <pod> --previous

--previousを付けると、再起動前の終了済みコンテナインスタンスのログを取得できます。CrashLoopBackOffの原因調査で有効です。

Q42

クラスタ外からHTTPでアプリへアクセスさせ、ホスト名やパスごとに複数Serviceへ振り分けたい。主に定義するリソースはどれですか?

答え: Ingress

IngressはHTTP/HTTPSの入口ルールを定義し、ホスト名やパスに応じてServiceへルーティングします。実際の処理にはIngress Controllerが必要です。

Q43

Podが何度も再起動し、直前の終了理由がOOMKilledになっている。最初に見直す内容として最も適切なものはどれですか?

答え: 実際のメモリ使用量とmemory request/limitを確認し、アプリまたは制限値を調整する

OOMKilledはコンテナが利用可能なメモリを超えたことを示します。メトリクス、使用傾向、request/limit、メモリリークを確認し、根拠を持って調整します。

Q44

新しいPodがImagePullBackOffになった。まず確認する組合せとして最も適切なものはどれですか?

答え: PodのEvents、イメージ名・タグ、レジストリ認証用imagePullSecrets

ImagePullBackOffではdescribeでEventsを確認し、存在しないタグ、レジストリ到達性、認証Secretの設定などを切り分けます。

Q45

Deploymentの新バージョンでエラー率が急増したため、直前の正常なリビジョンへすぐ戻したい。適切なコマンドはどれですか?

答え: kubectl rollout undo deployment/<name>

rollout undoはDeploymentを以前のリビジョンへ戻します。実行後はrollout statusとアプリ指標で復旧を確認します。

Q46

起動に数分かかるアプリで、起動処理中にlivenessProbeが失敗して再起動を繰り返している。適切な改善はどれですか?

答え: startupProbeを設定し、成功するまでliveness/readinessの開始を待たせる

startupProbeは遅い初期化の完了を判定し、成功前のliveness/readiness実行を抑えます。起動後は通常の健全性確認を継続できます。

Q47

3つのAvailability Zoneにまたがるクラスタで、同じアプリのPodが1ゾーンへ偏るのを抑えたい。適切な設定はどれですか?

答え: topologySpreadConstraintsをzoneラベルに対して設定する

topologySpreadConstraintsはzoneなどのトポロジードメイン間で、条件に一致するPodの偏りを制御します。

Q48

ServiceのClusterIPへ接続できるが応答先がなく、EndpointSliceにエンドポイントが表示されない。最初に確認すべきものはどれですか?

答え: Serviceのselectorが対象Podのlabelsと一致しているか

selectorとPod labelが一致しないとServiceはバックエンドを選択できず、対応するEndpointSliceにPod IPが登録されません。

Q49

Podからapi.backend.svc.cluster.localの名前解決だけが失敗している。切り分けとして適切なものはどれですか?

答え: Pod内からnslookup等を実行し、Service名・NamespaceとCoreDNSの状態を確認する

クラスタDNSの問題は、呼び出し元Podでの名前解決結果、FQDNのService名とNamespace、CoreDNS Pod・ログ・Serviceを順に確認します。

Q50

稼働中アプリのPVC容量を増やしたい。事前条件として主に確認すべきものはどれですか?

答え: StorageClassがボリューム拡張を許可し、CSIドライバ等が拡張をサポートしていること

PVC拡張にはStorageClassのallowVolumeExpansionと、ストレージドライバ・基盤側の対応が必要です。ファイルシステム拡張の条件も確認します。

Q51

各レプリカに安定した名前と個別の永続ボリュームが必要なデータストアを運用したい。適切なworkloadはどれですか?

答え: StatefulSet

StatefulSetはPodへ安定した序数付きIDを与え、volumeClaimTemplatesで各レプリカ専用のPVCを管理できます。

Q52

一般的なLinuxコンテナで不要なシステムコールを既定プロファイルで制限したい。securityContextで指定するものはどれですか?

答え: seccompProfile.type: RuntimeDefault

RuntimeDefaultはコンテナランタイムの既定seccompプロファイルを使用してシステムコールを制限します。ワークロード互換性を検証して適用します。

certdrill.dev は、LPI Japan・IPA・AWS・Microsoft Azure その他各試験団体と一切関係のない独立した非公式学習サイトです。問題・解説はオリジナルコンテンツです。