楽しんで学習するITエンジニアの備忘録ブログ

~日常生活の中にも楽しみを見出したい~

【第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

 の概要を追いかけたい。

 

以上です。