KodeKloud『Kubernetes Certified Security Specialist (CKS)』記録 - Cluster Setup & Hardening
引き続き、KodeKloud『Kubernetes Certified Security Specialist(CKS)』を進めていく。
今回は Cluster Setup & Hardening のセクション。
Cluster Setup & Hardening
Udemy の CKA コースにおける Security のセクションと重複する内容が全体の半分程度を占めていたので、この記事では CKS のコースで新規に登場した項目のみ記載する。
実際には重複した内容も復習のためあらためて受講した。
What are CIS Benchmarks
セキュリティを担保するための取り組みは多岐にわたる。サーバのセキュリティであればユーザの権限管理やファイアウォールの設定、ロギングによる記録、OS patchの適用など... それらのベンチマークの一つが CIS benchmark。CIS は Center for Internet Security の略。 CIS は様々なプラットフォームに対するベンチマークを提供しており、Kubernetes 向けのベンチマークも含まれる。
CIS は CIS-CAT というツールも提供しており、CIS Benchmarks のアセスメントを行える。
Lab: Run CIS Benchmarks Assessment Tool on Ubuntu
CIS-CAT ツールを Ubuntu マシン上で実際に動かしてみるハンズオン。 レポートを見ながら Fail した項目を修正するところまで試せる。
CIS benchmark for Kubernetes
Kubernetes における CIS benchmark について。
benchmark には、さまざまなコンポーネントについてどのような設定をすべきか記載されており、具体的な手順まで記載がある。
CIS-CAT Lite では Kubernetes のサポートはなく、Pro の利用が必要。
Kube-bench
Kube-bench は、Aqua security が提供する OSS ツール。
CIS benchmark で要求されている内容を満たしているかチェックできるツールとなっており、Kubernetes 上で Pod (Job) として実行できる。
そのほか、Docker container やバイナリ形式での実行もサポートされている。
Lab: Kube-bench
Kube-bench のバイナリをダウンロード、実行し、結果を見ながら Fail した項目を修正するハンズオン。
Kube-bench の出力の見方がわかるようになる。
Article on Setting up Basic Authentication
パスワードファイル/トークンファイルでの認証を構成する具体的な方法について。
Kubelet Security
kubelet のセキュリティについて。
kubelet も API を提供しており、デフォルトだと特に認証を必要とせず API を叩けてしまう。そこで、認可されていないユーザからのリクエストを拒否したり、証明書による認証をかけたりする方法について学ぶ。
また、kubelet は readOnlyPort を提供しており、ここもまた認証を必要とせずノードの情報を得られてしまうので、readOnlyPort を無効化する方法についても学ぶ。
Lab: Kubelet Security
実際に認証なしに kubelet の API を叩けてしまうことなどを確認し、KubeletConfiguration を修正してこれらの API の実行を不可能にするハンズオン。
KubeletConfiguration ファイルの場所を探すところから始まるので、段階を追って kubelet の堅牢化について学ぶことができる。
Kubectl Proxy & Port Forward
kubectl proxy
と kubectl port-forward
について。後続の講座のための前振り。
kubectl proxy
は kube-apiserver に対するプロキシをローカルに立てる。プロキシに対して curl で API を叩くときは認証情報がいらなくなる(proxy が kubeconfig をよしなにやってくれるっぽい)
kubectl port-forward
はクラスタ内の Pod や Service のポートをローカルのポートにマッピングする。
Lab: Kubectl Proxy & Port Forward
kubectl proxy
と kubectl port-forward
を使ってみるハンズオン。クラスタ内のリソースやクラスタのAPIに対して localhost
でアクセスできることを確認する。
Kubernetes Dashboard
Kubernetes Dashboard について。 GUI でクラスタのリソースを管理できるダッシュボード画面だが、本当になんでもできてしまうのでアクセス制御は慎重に行わなければならない。
デフォルトでは ClusterIP で公開されており、クラスタ外からアクセスするには kubectl proxy
でプロキシすることが推奨される。これによりクラスタへの認証情報がない場合はダッシュボードにアクセスできない。
また、ダッシュボードへのログインを ServiceAccount の Bearer Token や kubeConfig ファイルで行う形にすることもできる。
Lab: Securing Kubernetes Dashboard
Kubernetes Dashboard のデプロイ、kubectl proxy
によるアクセスの確認、ServiceAccount, Role, RoleBinding の作成による認可の制御を確認するハンズオン。
Verify platform binaries before deploying
Kubernetes クラスタコンポーネントのバイナリをダウンロードしたらチェックサムを確認しようねという話。 悪意の第三者がダウンロードされるファイル悪意のあるプログラムが実行されるバイナリにすり替えることがあるので。
チェックサムは shasum
とか sha512sum
コマンドで確認できる。
Lab: Verify platform binaries
GitHub からバイナリをダウンロードしてきて、チェックサムを確認するハンズオン。 複数の(ダウンロード済みの)ファイルから正しいファイルはどれ?みたいな設問もあってわかりやすい。
Docker Service Configuration
Docker デーモンの設定について。
/var/run/docker.sock
に Docker の UNIX ソケットがあり、Docker CLI はこことやり取りしている。
デフォルトではシステムの外部からソケットにアクセスすることはできないため、Docker ホストとクライアントは同じである必要がある。
Docker デーモン起動時に、--host=tcp://{IP Address}:{Port}
を指定することで、指定のポートで受け付けることができる。(例: --host=tcp://192.168.1.10:2375
)
これにより、Docker ホスト外からのアクセスができるようになる。ホスト外から Docker CLI で指定のホストにアクセスするには、DOCKER_HOST
環境変数を指定する。(例: export DOCKER_HOST="tcp://192.168.1.10:2375"
)
しかし、もしホストがインターネットに公開されている場合は、誰もがアクセスできてしまうため、このオプションはデフォルトで無効化されている。公開する場合はネットワークのセキュリティを考慮する必要がある。
もし Docker ホストを公開する場合は、通信の TLS 暗号化を行う。通信の TLS 暗号化は、--tls
, --tlscert
, --tlskey
オプションで設定する。
(例: --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem
)
これらのオプションは設定ファイルに記述することもでき、/etc/docker/daemon.json
ファイルに記述する。
{ "debug": true, "hosts": ["tcp://192.168.1.10:2376"], "tls": true, "tlscert": "/var/docker/server.pem", "tlskey": "/var/docker/serverkey.pem" }
Docker - Securing the Daemon
Docker デーモン、Docker ホストの保護について。
- サーバ自体のセキュア化
- パスワード認証を無効化し SSH 鍵認証を有効化する、ユーザを切る、不要なポートは閉じるなど
- 通信の TLS 暗号化(上述)
- Docker デーモンに証明書による認証を入れる
daemon.json
に"tlsverify": true
,"tlscacert": /path/to/cacert.pem
を追加- クライアント側でも
DOCKER_TLS_VERIFY=true
環境変数を設定しておき、~/.docker
にクライアント証明書を配置しておく。
Cluster Setup & Hardening のセクションはここまで。 多層防御の考え方のもと、マシン、OS、Docker デーモン、Kubernetes コンポーネントなどなど様々な対象のセキュリティについて確認した。一通りさらったという印象なので、まだ整理がつかない部分もあるがひとまず先に進む。
実はこのセクションが一番ボリュームのあるセクションだったので、以降はもう少しスムーズに進められるといい。
CKS Exam Curriculum v1.23 と KodeKloud『Kubernetes Certified Security Specialist (CKS)』の対応
CKA のときと同様に、KodeKloud の講座と 2022年2月現在利用されているカリキュラム、v1.23 との対応表を作成する。
参照したカリキュラムは以下。
講座を受けていく中で追加/変更が必要になった場合は適宜修正する。
10% - Cluster Setup
- Use Network security policies to restrict cluster access
https://kodekloud.com/topic/network-policy/
https://kodekloud.com/topic/developing-network-policies-3/ - Use CIS benchmark to review the security configuration of Kubernetes components(etcd, kubelet, kubedns, kubeapi)
https://kodekloud.com/topic/cis-benchmark-for-kubernetes/ - Properly set up Ingress objects with security control
https://kodekloud.com/topic/ingress-2/ - Protect node metadata and endpoints
https://kodekloud.com/topic/kubelet-security/ - Minimize use of, and access to, GUI elements
https://kodekloud.com/topic/securing-kubernetes-dashboard/ - Verify platform binaries before deploying
https://kodekloud.com/topic/verify-platform-binaries-before-deploying/
15% - Cluster Hardening
- Restrict access to Kubernetes API
- Use Role Based Access Controls to minimize exposure
https://kodekloud.com/topic/rbac/ - Exercise caution in using service accounts e.g. disable defaults, minimize permissions on newly created ones
https://kodekloud.com/topic/service-accounts/ - Update Kubernetes frequently
https://kodekloud.com/topic/cluster-upgrade-process/
15% - System Hardening
- Minimize host OS footprint(reduce attack surface)
https://kodekloud.com/topic/minimize-host-os-footprint-intro/ - Minimize IAM roles
https://kodekloud.com/topic/minimize-iam-roles/ - Minimize external access to the network
https://kodekloud.com/topic/minimize-external-access-to-the-network/ - Appropriately use kernel hardening tools such as AppArmor, seccomp
https://kodekloud.com/topic/apparmor-in-kubernetes/
https://kodekloud.com/topic/restrict-syscalls-using-seccomp/
20% - Minimize Microservice Vulnerabilities
- Setup appropriate OS level security domains e.g. using PSP, OPA, security contexts
https://kodekloud.com/topic/pod-security-policies/
https://kodekloud.com/topic/open-policy-agent-opa/
https://kodekloud.com/topic/security-contexts-4/ - Manage kubernetes secrets
https://kodekloud.com/topic/manage-kubernetes-secrets/ - Use container runtime sandboxes in multi-tenant environments(e.g. gvisor, kata containers)
https://kodekloud.com/topic/gvisor/
https://kodekloud.com/topic/kata-containers/ - Implement pod to pod encryption by use of mTLS
https://kodekloud.com/topic/implement-pod-to-pod-encryption-by-use-of-mtls/
20% - Supply Chain Security
- Minimize base image footprint
https://kodekloud.com/topic/minimize-base-image-footprint/ - Secure your supply chain: whitelist allowed image registries, sign and validate images
https://kodekloud.com/topic/whitelist-allowed-registries-image-policy-webhook/ - Use static analysis of user workloads(e.g. kubernetes resources, docker files)
https://kodekloud.com/topic/use-static-analysis-of-user-workloads-e-g-kubernetes-resources-docker-files/ - Scan images for known vulnerabilities
https://kodekloud.com/topic/scan-images-for-known-vulnerabilities-trivy/
20% - Monitoring, Logging and Runtime Security
- Perform behavioral analytics of syscall process and file activities at the host and container level to detect malicious activities
https://kodekloud.com/topic/perform-behavioral-analytics-of-syscall-process/ - Detect threats within physical infrastructure, apps, networks, data, users and workloads
- Detect all phases of attack regardless where it occurs and how it spreads
- Perform deep analytical investigation and identification of bad actors within environment
https://kodekloud.com/topic/use-falco-to-detect-threats-2/ - Ensure immutability of containers at runtime
https://kodekloud.com/topic/ensure-immutability-of-containers-at-runtime/ - Use Audit Logs to monitor access
https://kodekloud.com/topic/use-audit-logs-to-monitor-access/
だいたいこんなところか。CKS 自体最近提供された試験であるため出題範囲に大幅な変更が行われていないこと、KodeKloud の講座も最近提供されたものであることから、講座がカリキュラムにわりと忠実に沿った内容であることが確認できた。進めていきましょう。
KodeKloud『Kubernetes Certified Security Specialist (CKS)』記録 - Introduction/Understanding the Kubernetes Attack Surface
Certified Kubernetes Security Specialist(CKS) の取得を目指して勉強していく。
CKA/CKAD の際にもお世話になった KodeKloud 上で CKS のコースが提供されているので、こちらをベースに勉強を進める。
ちなみに、KodeKloud はサブスクリプション型のサービスで、月額(または年額一括払い)で提供されている全てのコースを利用できる。
当然年額一括払いの方が月単価は下がるが、長くても数ヶ月で利用を終了しそうなので月額払いを選択した。
まずは Introduction ~ Understanding the Kubernetes Attack Surface を完了したので、記録。
Introduction
このコースと CKS 試験について、概要を説明するセクション。
Course Introduction
コース全体の説明。CKA/CKAD と同様にハンズオン形式のコースとなる。
コースはカリキュラムに従って以下の内容で提供される。
- Understanding Kubernetes Attack Surface
- Cluster Setup & Hardening
- System Hardening
- Minimizing Microservices Vulnerabilities
- Supply Chain Security
- Monitoring, Logging & Runtime Security
- Mock Exams
ちなみに試験のカリキュラムは以下。
Exam Information
CKS試験の概要について。
Certification Details
試験関連のリンク集。
Understanding the Kubernetes Attack Surface
The Attack
投票アプリケーションへの不正な介入のデモを通して「セキュリティ対策をなにもしていない K8s クラスタがあったとき、どのようなことができてしまうか」について見ることができる。
当初攻撃者はアプリケーションとそのドメインしか情報がない状況であるが、そこからいかにして侵入していくか見ることができおもしろい。
The 4C's of Cloud Native security
クラウドネイティブセキュリティにおける多層防御の考え方について。
4C とは以下の4つを指す。
- Cloud
- Cluster
- Container
- 実行されるコンテナのセキュリティ。
- コンテナの脆弱性スキャンや特権ユーザを拒否するなど。
- Code
感想
やはり CKA の取得を前提とする認定資格なだけあって、CKA/CKAD に比べてより実践的な内容と感じた。
今回取り組んだセクションはまだ概要といった内容ではあったが、"The Attack" の節で示された攻撃の例を見るとセキュリティの重要性について腑に落ちて理解できる。
次回以降、具体的な対応方法についてハンズオンを含めて扱うようなので、楽しみ。
2022年の目標
2022年、あけましておめでとうございます。新年一発目のブログは今年も2022年の目標を書いていきます。
昨年の目標とその結果については以下の通り。
hitsumabushi845.hatenablog.com
hitsumabushi845.hatenablog.com
では、スタート!
おしごと関連の目標
ここからはおしごと関連の目標を書いていく。
(継続)資格を取る
今年は以下の資格取得を目標とします。上から順に優先順位が高い。
- Certified Kubernetes Security Specialist
昨年 CKA/CKAD を取得し、受検資格を得たので。これは3月までには取っておきたい。 - Google Cloud 認定 Associate Cloud Engineer
昨年1年間、GCP を触っていたのでとりあえず Associate くらいは取ろうかなーと思っている。Udemy で問題集を購入済み(積んでいる)なので、さほどコストはかからないと思うが果たして。 - AWS Certified Developer Associate
昨年 SAA を取得したので、引き続き DVA が取れるといいなぁと思っている。 - Certified OCI Architect Associate
昨年 OCI を触っていたのと、3月末まで受検料無料キャンペーンをやっているので。正直これは気が向いたら取るくらいの感じ。
(継続)Go をちゃんとやる
昨年雰囲気程度に書けるようになった Go だが、雰囲気で進めすぎてよくわかっていないままなので、以下の本をベースに勉強していきたい。
趣味関連の目標
ここからはおしごとの関連しない個人的な目標を書いていく。
(新規)JGC 修行をする
昨年はかなり国内線の飛行機に乗った1年だった。おかげさまで JAL 関連の事柄に興味が出たので、JGC(JAL Global Club)入会資格を得るための修行をやろうとおもう。
2022年も引き続き海外には行けない気配があるので、国内を軽率に飛び回るのも最後のチャンスだと思っているし、20代限定の CLUB EST で JAL カードを作れるのもあとわずかなので。
というわけで昨年末に JAL カードを作り、準備万端。JMB ステータスはそこまで興味ないので、春夏あたりで HND-OKA 大量往復をやるつもりでいる。
(新規)英会話をちゃんとやる
英語の読み書きは学生時代の勉強や研究と会社での業務、リスニングは元々好きな洋楽や洋画を見聞きし続けていることである程度伸ばすことができている。一方でスピーキングについては機会がそこまでないので伸び悩んでいる。
先日英語で面談をする機会があり、なんとかコミュニケーションを取ることはできたものの、もう少しスムーズに口から英語を出せるようになっておきたい。
というわけで、今年中には何らかのオンライン英会話サービスに登録すると思います。Cambly とか。
おわりに
ほかにもスノーボードがもっと上手くなりたいとか、ギターがもっと上手くなりたいとか、具体的な到達点が思いつかないものもあるが、とりあえず今年はこの辺を目標に生きていこうと思います。
...その前に目の前のタスクとしてはじめての確定申告を控えているので、これを倒さないと先に進めないなあ。
今年も1年よろしくお願いします。
2021年の目標をふりかえる
2021年も1年お疲れ様でした。
hitsumabushi845.hatenablog.com
で掲げた目標について、結果を確認していきましょう。
資格をとる
今年受検したいと思っているものは以下の通り。
- CKA or CKAD
- TOEIC
今年は以下の認定資格を取得した。
- Certified Kubernetes Application Developer
- Certified Kubernetes Administrator
- AWS Certified Solutions Architect - Associate
今年はあまり英語を使う機会がなかったので、TOEIC の受検はとりやめた。 その代わり、業務で AWS を触る機会があったので、SAA を取得した。
おおむね目標通り。考えてみれば IT 系の資格は今年のこれらがはじめての取得。Credly にバッヂが増えていくのは気分がいいので、来年もコンスタントに資格を取っていきたい。
こまめにブログを書く
このブログでは特定の技術に関する話題以外の、技術以外の話やポエムなどを書いていきたいと思っている。
特定の技術要素については、せっかく Organization に属しているので Qiita に書くつもりでいる。 こまめにと言っても、せいぜい月2程度のペースでゆるくやっていきたい。
今年、Qiita には 16 件の記事を投稿した。 このブログには主に CKAD/CKA の学習ログを投稿しており、合算すると月2のペースはクリアできたと思う。
来年もこれくらいのペースで投稿できるとよい。
Terraform を勉強する
2021年から本業・副業ともに Terraform を扱うようなので、ゆるく勉強する。
仕事で使うのでまあ勉強できるだろうと高をくくっている。 特に到達目標はないが、仕事が回る程度に扱えればよいと思う。
中盤でのふりかえりでも述べたが、業務で扱う中でなんとなく雰囲気は掴めた気がする。
ちなみに Terraform を使った業務では GCP と OCI を主に扱っている。OCI は Resource Manager という IaC のサービスがあって、Terraform HCL をそのまま使えるので便利。
golang を勉強する
そろそろ新しい言語を勉強したい。
golang は、複数のプラットフォームに向けてコンパイルできるということで、かねてより興味は持っていたが、
Kubernetes に触れるようになったことでより勉強するモチベーションが上がっている。 とりあえず、Gopher 道場 を進めていこう。
最近は k8s のカスタムコントローラや Admission Webhook を実装しており、そのため Go に入門した感じがある。 しかし完全に雰囲気で進めてしまっているので、来年はもう少し体系的に勉強していきたい。
読みたいと思っている書籍はこれ。
おわりに & 来年へ向けて
今年掲げた目標はおおむね目標通りに推移したように思う。
今年初頭の自分をふりかえってみると、k8s マッタクワカランだったところから今は CKA/CKAD も取得して、CR や Admission Webhook もなんとなく実装できるようになった。
AWS/GCP/OCI についてもそれぞれ雰囲気程度には扱えるようになり、昨年までのオンプレおじさんから一転クラウドおじさんになった気がする。
というわけで、来年も引き続き勉強を続けていきたい。来年はもう少し本を読むようにしたいなぁ。 2022年の目標はまたお正月に書きましょう。
今年買ってよかったもの2021
今年も買ってよかったものをつらつら書いていきます。
おしごと関係
MacBook Pro 16 inch
MacBook Pro をようやく買い換えました。
今まで使っていたやつは 5 年前に買った Late 2016 モデルで、あの悪名高い TouchBar が初めて搭載されたモデルです。今回ついに TouchBar が完全に廃止と相成りました。
TouchBar が廃止になったから買い換えたわけではなく、5年使ってもういい加減限界を迎えてきたので。Terraform が正常に動かないとか、カメラが急に死ぬとか、バッテリーが一瞬でなくなるとか、いろいろ問題を抱えてたわけです。
カスタマイズ内容としては RAM を 32 GB にして、ストレージを 1 TB にしました。それに Apple Care をつけるだけであっさり 40 万円になってしまうのはどういうことなんですかね。
前評判通り Apple Silicon はバッテリーの持ちが良く、ちょっと出かける程度であれば電源ケーブルを持ち歩かなくてよくなった。また発熱も少なく、バッテリー電源でゴリゴリ作業してても熱くならないのは良い。
めがね
今年はめがね沼につま先程度突っ込んだ年でした。
きっかけは春先にふらっと鯖江に行ったことで、そこの田中眼鏡 というお店でのめがね購入体験がよかった。
ここはいわゆるよくあるめがね屋さんと違って、店頭にはフレームがそこまで並んでいません。
ではどうやってめがねを選ぶのかというと、ハリーポッターのオリバンダーの店よろしく店主がフレームを見繕ってくれるのであった。お店の方に欲しいめがねの方向性を伝えると棚からどんどんフレームを出してくれます。
そこで買っためがねは下の2本。このときはせっかく鯖江に来たのでということで、珍しめのフレームが欲しいという条件で見繕ってもらった。
こうして、それまでコンタクトレンズ派だったぼくはこれをきっかけにめがね派になるのであった。
その後、その田中眼鏡さんで教えてもらった吉祥寺の opteria-Glassias でまためがねを購入した。 opteria-Glassias さんは検眼に力を入れているお店ということで、1時間以上かけて最適なレンズを決めてくれるとのことであった。 そのためここでは仕事用(PC 用)のめがねを買うこととした。
そうして買っためがねがこれ。
このめがねは 25% 緑色をいれたカラーレンズになっていて、傍から見るとほぼサングラスなのだが、これがディスプレイの光量を抑えてくれて目が楽。他にもプリズムが入っていたりと、とにかく作業していて目が疲れないようになっている。今となってはこのめがね無しで PC の画面をみるのはつらい。
PC 用めがねということで矯正視力が 0.8 程度と抑えめになっているが、屋内であればこのめがねで支障はないので自宅用めがねとして利用している。
各種 Udemy 講座
今年は資格を3つ取得できました。それぞれ CKAD, CKA, AWS SAA ですが、どれも Udemy の講座に大変お世話になりました。買ってよかった。
- Kubernetes Certified Application Developer (CKAD) with Tests
- Kubernetes Certified Administrator (CKA) with Practice Tests
- AWS のやつ(これは買ったの今年じゃないかも)
音楽関係
ギターのレッスン
買ったものではないけれども、お金を払ったものとして。
今年からギターを習い始めました。長らく独学で続けてきたけれど、体系的に教わりたいと思い調べたところ徒歩2分の距離にプライベートスタジオでレッスンをやっている講師の方を見つけたので。
独学では好きな曲だけを弾くといったやり方になりがちだけど、レッスンだと基礎練習をしっかりできるのでよい。また弾き方など「これで合ってるんだろうか?」となる部分をレッスンの際に訊くことが出来るのもよい。
主な教本はこれ。つらい。うまくなりたい!
Audient iD22
ギターのレッスンを受けるようになり、改めておうちギター環境を整えようと購入。
周りの音楽やってる人がおすすめしてたので買った。
物理的なダイアルで音量を調整できるのもよいし、ボタンひとつでセンターの音をカットできるのもよい。
入力が2チャンネルあるので、ひとつはギター、もうひとつはマイクにしている。マイクは Web ミーティングで使用するため。
Transcribe! for Mac
ギターの耳コピに活躍するソフト。
指定した範囲のループや速度変化させて再生など、特定のフレーズを集中して練習や耳コピする際に重宝している。
上述した iD22 のセンターカットと組み合わせると耳コピがはかどる。
BIAS FX 2
昨年 Amplitube を買ったのだが、どうも周りを見ていると最近は BIAS を利用している人が多いらしいので。これは iD22 を買ったときに得たサウンドハウスのポイントで買ったのでほぼ無料。
プリセットがダウンロードできたり、Guitar Match で別のギターの音をエミュレートできたり、楽しい。 豊富な機能を全然使いこなせてないが、まあ人気のプリセットをダウンロードして弾くだけでも十分楽しめている。
スノーボード関連
これはまだ実際に使ってないので、別記事として後日(来年?)書く。
そのほか
Anker PowerCore Fusion 10000
Anker PowerCore Fusion 10000www.ankerjapan.com
出かけるときのモバイルバッテリー兼自宅用充電器。普段はベッドサイドの充電器として使用していて、出かけるときは引っこ抜いてそのままカバンに放り込むだけでいいのでとても楽。
普通のモバイルバッテリーだと充電を忘れたりするが、充電器兼用なので充電を忘れることがない。
『Kubernetes Certified Administrator (CKA) with Practice Tests』記録 - セクション13・14
9月は忙しくあまり進められていなかったが、引き続き『Kubernetes Certified Administrator (CKA) with Practice Tests』を進めていく。 今回は Section 13: Troubleshooting と Section 14: Other Topics。トラブルシューティングは試験としても 30 % のボリュームを占める部分なので丁寧に進めていきましょう。
また、これで講座としては終了で、残るは Mock Exam(模擬試験)のみ。
Section 13: Troubleshooting
- Application Failure
- アプリケーションのトラシューは Service と Pod の状態を見ようね
- Service: matchLabel が正しいかとか
- Pod: Pod がクラッシュしてないかとか、k logs で見よう。restart が走ってる場合は k logs -f とか、k logs --previous とかでエラーを確認しよう。
- see also: https://kubernetes.io/docs/tasks/debug-application-cluster/debug-application-introspection/
- see also: https://kubernetes.io/docs/tasks/debug-application-cluster/debug-application/
- Practice Test - Application Failure
- Webapp Pod, Database Pod 構成における各種トラブルシューティング。
- Webapp 側の接続先設定を直すのか、Database 側を直すのか曖昧な部分がちらほらあって手間取った
- Control Plane Failure
- kubeadm でクラスタを構築した場合、Control Plane のコンポーネントは Pod で動いているので
k get po -n kube-system
で確認できる - service として動いている場合は
service kube-apiserver status
,service kubelet status
など - service のログは
k logs xxx -n kube-system
やsudo journalctl -u xxx
- see also: https://kubernetes.io/docs/tasks/debug-application-cluster/debug-cluster/
- kubeadm でクラスタを構築した場合、Control Plane のコンポーネントは Pod で動いているので
- Practice Test - Control Plane Failure
- kube-scheduler や replicaset controller のトラブルシューティングをした
- 主に static pod のマニフェスト修正
- Worker Node Failure
k get nodes
でstatus
がNotReady
なノードがあった場合k describe node node-name
で確認- ノード側のリソース使用率の確認:
top
コマンドやdf
コマンドで - kubelet の確認:
service kubelet status
やsudo journalctl -u kubelet
- 証明書の確認:
openssl x509 -in /var/lib/kubelet/xxx.crt -text
で Issuer や有効期限を見る
- Practice Test - Worker Node Failure
- kubelet が停止しているケース、
/var/lib/kubelet/config.yaml
が誤っているケース、etc/kubernetes/kubelet.conf
が誤っているケースについて
- kubelet が停止しているケース、
- Network Troubleshooting
- うーむ、CNI プラグインのインストールって問われるんだろうか
Section 14: Other Topics
これは試験に役立つ Additional なトピックについて。 jsonpath と kubectl のコマンド。
- Pre-Requisites - JSON PATH
- Advanced Kubectl Commands
-o=jsonpath=~~
や-o=custom-columns=COLUMN:JSONPATH
,--sort-by=JSONPATH
などについて。
さあ、残すは模試のみ!