【第4弾】Kubernetes学習【KubernetesのServiceを理解せよ】
Udemy「米シリコンバレーDevOps監修!超Kubernetes完全入門(2020)」
の受講を続けている。
ただ、もうすぐ夏季休暇が終了するので、どこまで進めることができるか?
「セクション3: (おさらい)猿でも分かるLinuxの基本操作」は省略して、
「セクション4: HelloWorldでK8sのPod,Service,Ingress,Deploymentを理解しよう」
に挑んだ。
■1.Pod(コンテナ含む)起動とその後の基本的な操作
kubectlコマンドとdockerコマンドが似ているが、似せることでどんな
メリットがあるか?Kubernetesを習得しやすくさせ、デファクトスタンダード
的な立ち位置を獲得することを狙ったのではないかと感じた。
そこで、Kubernetesの成り立ちなどについて深掘りしてみた。
元々Googleが設計し、現在はCloud Native Computing Foundation(CNCF)が
運用管理を行っている。
CNCFは、Kubernetesを推進する組織という役割は持つが、
それは組織の断片的な活動に過ぎない。
あくまでも、CNCFの目的は、「クラウドネイティブの普及に貢献すること」。
※CNCF(Cloud Native Computing Foundation)とは?活動内容を徹底解説 (cloud-for-all.com)
これらより、Kubernetesをさまざまなビジネスシーンで活用して欲しいと
願っているのではないか?!
と勝手に解釈しました。
少し脱線しましたが、
・Pod(コンテナ含む)を起動
kubectl run --image <containerimage> --restart Never <podname>
・Podの一覧表示
kubectl get pods,service(docker ps)
・Pod内のコンテナのログを表示
kubectl logs <podname>(docker logs <containername>)
・Podのメタデータを表示
kubectl describe pod <podname>(docker inspect <containername>)
・Pod内のコンテナにシェルを用いて接続
kubectl exec -it <podname> bash(docker exec -it <containername> sh)
■2.3種類のService
Pod自身はいつ消滅するかが分からないオブジェクトである。
安定的なアクセスを実現させるためには、
静的IPアドレスを利用できる「Service」を利用する必要がある。
Serviceの主な役割は、Pod(コンテナ含む)やNodeの存在を抽象化し、
Podとの通信に単一のエンドポイントを提供することとされている。
※Kubernetesの Service についてまとめてみた - Qiita
Serviceのタイプには、ClusterIP、NodePort、LoadBalancerの3種類がある。
(1) ClusterIPタイプ
静的IPアドレスを持ったプロキシサーバのような存在。
ただし、クラスターの外にPodを公開することはできない。
(2) NodePortタイプ
NodePortを利用することでクラスターの外(例:ホスト)にPodを公開できる。
ただし、NodeのIPアドレスは可変のため、突然Podと通信不可になる恐れがある。
(3) LoadBalancerタイプ
ロードバランサーをNode前に配置し、静的IPアドレスとドメインネームを設定。
Layer4のLBであるため、TCP/IPレベルでしか振舞えない。
Layer7(例:HTTP)レベルでの振り分けが実現することができない。
■次回
Layer7レベルでロードバランシングすることができる「Ingress」
の概要を追いかけたい。
以上です。