Kubernetes超基礎と認定資格について

# 内容
5分程度で簡単にKubernetesと認定試験について記載させて頂きます。Kubernetes認定試験についてはAWS認定資格試験との比較や勉強方法方法などを記載します。
![k8s1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/cfe0bf93-df1c-57f3-4ad2-1b57870969ba.png)

# コンテナの特徴
仮想マシンはホストOS側から見るとまた別のOS（ゲストOS）が動いています。仮想ハードウェアを作成したり、OSをブートしたりするため、ゲストOSの起動には結構時間がかかります。コンテナはホストOS側から見るとプロセスの1つとして見えます。ゲストOSの起動とは異なり単なるプロセスの起動のため**軽量で速い**という特徴があります。
![k8s3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/a463e78f-635d-c132-2f99-af30daa5e8f6.png)

また、コンテナは**定義ファイル作成→イメージ作成→コンテナ起動**の流れで作成します。コンテナを直接変更するということせずコンテナの内容を修正する際は定義ファイルを更新して再作成します。（コンテナは揮発性なので再起動するともとに戻ってしまいます。）このような観点からコンテナは**使い捨て**という特徴があります。
![k8s2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/815809cd-b72d-53c7-5e9e-413e860c0d17.png)

# なぜコンテナオーケストレーターが必要か？

**軽量で速い**、**使い捨て**という特徴からコンテナは数が多く、頻繁に作成されるという傾向があります。そうなるとコンテナ障害発生時の対応や負荷分散など、手動で運用管理するのが大変になってきます。
![k8s5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/d1b8ee89-c2d1-81a4-cfb5-91ef97b27fbd.png)

そこで登場したのがコンテナオーケストレーターという仕組みになります。コンテナの自動復旧、負荷分散などの運用上必要な処理をコンテナオーケストレーターが自動的に対応してくれます。Kubernetesはコンテナオーケストレーターの一つです。
![k8s6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/7c351b1b-5c1f-922a-7c12-84e70cf52705.png)

# Kubernetesを超簡単に

Kubernetesはどのような動作をするかというと、まず**あるべき姿を定義します**。そして**現状の差を把握**して、あるべき姿と現状に差がある場合は**差を埋める**動作をしてくれます。
![k8s7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/497dcbc3-d08d-a847-5a38-38eef648437f.png)

ここからKubernetes上でどのようにコンテナが動作しているかを説明致しますが、その前に少し用語の説明を致します。**ワーカーノード**は業務コンテナが実際に稼働しているノードです。**マスターノード**はワーカーノードを管理するためのコンテナなどが稼働しています。
![k8s8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/e5a4367e-b3cd-12d3-a998-e13d634e09d8.png)

コンテナは階層的なリソースで管理されています。管理の最小単位が**Pod**で1つ以上の**コンテナ**から構成されます。このPodをまとめたものが**ReplicaSet**となり、Podが何個必要かを定義します。ReplicaSetを包括する概念が**Deployment**という概念になり、ReplicaSetをデプロイ、ロールバックする際に効率的に行うことが出来ます。通常Deploymentを作成してPodをノード上に展開します。
![k8s9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/e3502149-f64e-e891-2ed6-61351902e350.png)

ではどのようにあるべき姿を定義するかというとYAMLファイルを作成します。下記はDeploymentを定義したYAMLファイルになりますが、この中にReplicaSet,Pod,コンテナの定義も記載しています。
![k8s10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/ade53523-a9c7-c171-cb27-1bb9e3a999a1.png)

そして作成したYAMLファイルをマスターノードに投げ込むとマスターノード、ワーカーノード上の管理コンポーネントが連携してYAMLに定義した設定を設定、維持するように動いてくれます。
![k8s3-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/22b19666-c71b-8f89-4eff-5bbae52a6faf.png)

# 認定資格について

Kubernetesの資格は4つあります。それぞれAWS認定資格だとどれに近いか対応させてみました。**KCNA**が初級資格。**CKAD**が中級の開発者向け資格,**CKA**が中級のシステム管理者向けの資格になります。**CKS**はセキュリティに特化した資格となりますが、受験資格にCKAが必要なことから上位資格として位置付けられています。
![k8s12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/729f680a-9d6a-94fa-cd12-cb6d66854416.png)

下記はAWS認定資格との比較です。
![k8s31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/5b52153b-7fe1-3b12-9b22-48ec62a6886a.png)


CKA/CKAD/CKSの学習はUdemyで有名な講座があります。また試験を購入すると本番の問題に近いシュミレーターが2回分無料でついてきますので、これを実施しておくとスムーズに試験が進むと思います。
![k8s15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/1b857ff4-b2cc-3478-8b3f-290cbe82badb.png)

# 資料
こちらの資料は[インフラ技術基礎勉強会 #3](https://infra365.connpass.com/event/277147/)で発表したものになります。

https://speakerdeck.com/toru_kubota/k8s-basic




# 勉強会について
インフラ技術基礎勉強会は「基礎」・「アウトプット」を通じてい「仕事を楽しくしていく」という部分でコンセプチャルスキルの向上を目的としています。

https://speakerdeck.com/toru_kubota/inhuraji-shu-ji-chu-mian-qiang-hui-kai-cui-gai-yao


下記にて***インフラ技術基礎勉強会 #4***を開催致しますので是非ご参加下さい！！

https://infra365.connpass.com/event/286297/