kubestronautへの道 ~CKAD編 その7~

tech article

本記事の内容

前回に引き続いて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 ミスまとめ

満点でした!素敵やん

タイトルとURLをコピーしました