本記事の内容
前回に引き続いてUdemyのKubernetes Certified Application Developer (CKAD) with Testsというコースを受講していた中で気になったところをメモしていきます。
今回は以下のセクションに基づいています
#13 Lightning Labs
#14 Mock Exams
ラボ1ミスまとめ
Q2
- 命令的に立てたpodはnameというラベルを持たず、runというラベルを持つ
- 知ってはいるけどnameというラベルはデフォルトで持つと勘違いしてしまう。試験ではラベル間違えると減点なので要注意
Q3
- configmapをマウントするときは、volumes配下にconfigMapがいる
- ↓のリンク参照
ConfigMap
ConfigMapは、 機密性のないデータをキーと値のペアで保存するために使用されるAPIオブジェクトです。Podは、環境変数、コマンドライン引数、またはボリューム内の設定ファイルとしてConfigMapを使用できます。 ConfigMapを使用すると、環境固有の設定をコンテナイメージから分離できるため、アプリケーショ...
- cpuは数字だけで指定できる。メモリ無くてもcpuだけでも指定できる。
- 整数じゃなくてもOK
- コマンド実行の前に/bin/sh -cがいる
- これめちゃくちゃトラップやと思う。問題によって/bin/sh -cが不要な時もあれば必要な時もある。なんで???と思ってたけど、コンテナイメージでENTRYPOINTとかCMDが指定されてるかどうかの違いな気がする。どちらにせよ/bin/sh -c書いておけばコマンド実行してくれるので、どのコンテナイメージを使うかによらず、/bin/sh -cは書くようにする。
ラボ2ミスまとめ
Q1
readinessProbeが失敗している、という問題がありました。
マニフェストファイルを見てみると、containrPortとreadinessProbeが指定しているポートの番号が違うので、どちらかを直せばいいのだと考えました。
こんな感じです。
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-http
spec:
containers:
- name: liveness
image: registry.k8s.io/e2e-test-images/agnhost:2.40
ports:
containerPort: 9080
readinessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3
ただ、どちらのポートが正解のポートなのか判別がつきませんでした。
Podに入って開いているポートの番号を特定しようと思いましたが、そもそもPodがreadyになっていないのでexecできません。
解説動画をみると、何の説明もなくreadinesProbeのポート番号を変更していました。
エスパーかな?と思いましたが、そんなわけないと思って調べてみると、こんな記事を見つけました。
containerPortなんて飾りです - Qiita
containers.portsの意味…
そうです、containerPortは飾りなのです。
このcontainerPortには何の効力もなく、ただPodが開けているポートを認識しやすくするために記述しているだけなのです。
ということで、この問題ではcontainerPortではなくreadinessProbeで指定されているポートを変更すればよい、ということがわかりました。
一件落着。
Q2
- activeDeadlineSecondsでjobの存続時間を設定できる
Q4
- ingressからsvcに流すとき、svcが空けてるportに流す必要がある
- 外部からアクセスするときのポートはingressコントローラーに流れるときのポート。ingressコントローラーはロードバランサーと考えてよくて、ingressリソースはターゲットグループを指定していると考えればよい。
mock exam1 ミスまとめ
Q5
- rsを再起動する方法
- deploymentによって生み出されているreplicasetであればdeploymentをeditするかrollout restartする。そうでないならpodを消すしかない
Q9
- Secretの中身を確認したい
- secretを-o yamlで出力するとbase64でエンコードされた値が出てくるのでそれをbase64でデコードする
Q10
- securityContextでrootユーザーとして動かす方法
- IDを0にする
Q14
- 環境変数のvalueはテキストのみ?
- そうみたい。数字でも引用符付ける
mock exam2 ミスまとめ
満点でした!素敵やん