grasys blog
grasysブログ

GKE 入門 2022年度版 その①(1/2)

とにかくGKE/K8sを触ってみたい方むけ!

boom boom! Hello Cloud!どうも、しみちゃんでございます。

GKE が広く使われるようになってから久しいですね。

GKEについて、たくさんの入門記事がある中、改めて2022年度版の最新の入門記事を書こうと思います。

こんな方におすすめの記事になっているのでぜひ読んでみてください

k8s のlogo

こんな人向け

  • コンテナを触り始めてGKE/k8sという言葉を知って気になった
  • コンテナのエコシステムって?
  • GKE/k8sを触るための必要最低限の知識を知りたい
  • Google Compute Engine(VM)とGoogle Kubernetes Engine(container)の使い分けは?

細かい動作云々は別にして、Overviewをさらいたい人向けになってます!

今回は全部で2部にわけて、以下について紹介しようと思います。

  1. コンテナのエコシステム
  2. GKE クラスタを作成する
  3. K8sの機能を使ってデプロイをする
  4. 次の学習目標は?

コンテナのエコシステム

この記事に辿り着いた方の中にはGKEに関連する単語の意味がそれぞれまだフワッとしていると思いますので、単語のおさらいからです。

コンテナのエコシステム

エコシステム、とは簡単にいうとそれぞれ関連する異なる用途をもった概念・機能・サービスを組み合わせてメリットを最大化して享受する仕組みのことを指します。(直訳は生態系とか収益活動協調体制などの意味らしいです)

コンテナのエコシステム(以下:エコシステム)、とはコンテナを扱う上でコンテナの特性を活かしながら、それらのメリットを享受・最大化するための一連のサービスを指します。

エコシステムの各主要サービス

エコシステムを形成する主要なサービス・概念として、以下の4つをおさえておきましょう。

  • イメージビルドツール
  • イメージレジストリ
  • コンテナエンジン
  • コンテナオーケストレーションツール

イメージビルドツールは、コンテナの状態をスナップショット的にファイルとして保存、圧縮してくれるものです。そのファイルをコンテナイメージと呼びます。代表的なサービスとしては、Docker やGCPならCloud Buildがあります。

イメージレジストリは、コンテナイメージを保存しておく場所です。Docker Hubや、GCPならContainer Registryがそのサービスにあたります。

コンテナエンジンとは、イメージレジストリに保存されたコンテナイメージをpullし、そのイメージを基にしてコンテナを起動させる機能を持ったサービスとなります。Dockercontainerd が代表的な例となります。(それにしてもDockerでいろんなことができますね)

コンテナオーケストレーションツールとは、起動しているコンテナの状態を監視し、事前に定義したコンテナの状態(数や起動方法など)を目指してコンテナを自動で管理してくれるツールです。コンテナを使う時はコンテナを複数・たくさん起動するので、包括的な管理をよしなにやってくれるこういったサービスを利用をすることが多いでしょう。Docker SwarmKubernetes(以下:K8s)がそれにあたります。

最低限の準備でコンテナを実際のプロダクト環境で動かすには、これらの主要サービスが必要になります。

コンテナのイメージに焦点をあてて、エコシステムを図にするとこんな感じでしょうか。

実際にユーザーがアクセスするのはコンテナエンジンの部分で、私たちエンジニアがガチャガチャといじるのはオーケストレーションツールの部分、つまりK8sになります。

どうでもいいですが、K8sは「くぅーば」とか「くぅーばねてぃぃーs」って発音するらしいです。

GKE と K8s

じゃあ「GKEってなんなのさ」という話ですが、GKEとはここで紹介したコンテナエンジン(containerd)とオーケストレーションツール(K8s)をいい感じに提供してくれるマネージドコンピューティングサービスです。(上図のComputerと書かれた領域です)

GKEとK8s 完全に一緒ではない、けどほぼ一緒ということだけおさえておきましょう。

GKE

GKE について学ぶことは、K8sについて学ぶこととほぼ同義です。

自分で調べる・勉強するときは?

K8sクラスタの作成やロギング・監視など大きな概念の設定・構築にはGKEの公式ドキュメントを、K8sの機能に関してはkubernetes.ioをみておけば良いでしょう。

エコシステムのどの部分を自分は今触っているのか、という部分を意識しながら学習をするといいかもしれませんね。

GKE クラスタの作成

兎にも角にも、まずはGKEクラスタの作成が必要です。

GCP のコンソール画面からKubernetes Engineのページへ行き、[クラスタ]を選択します。

そのまま、作成ボタンを押しましょう。

すると、「クラスタを作成」の画面で、クラスタモードの選択をするように促されます。

ここでは、Autopilot を選択しましょう。選択した理由は次に紹介します。

Autopilot vs Standard

従来、GKEにはStandard環境しかありませんでした。Standard環境は、利用者がGKEのノード管理(主にK8sのバージョンなど)をしなければならない環境です。(フルマネージドちゃうんかい)

この管理がなかなかくせ者で、K8s は進化のスピードがとても速く、バージョンに追従するためのコストそこそこかかるのです。ある日、手慣れたはずの設定更新をしようと思ったらまったく違う挙動になった!などよくありました(リリースノートをちゃんと読めよ、という話です)

そこで、ノードの管理もまかせちゃえ、利用者はK8sの設定とイメージの開発だけに集中できるようにしよう、とGCPが出したのがAutopilotモードです。

Autopilot モードは面倒なノードの管理はGCPがいい感じにやってくれるので、勉強し始めた方や、すぐにK8sがもたらずバリューを評価したい、またそのもたらすメリットを今すぐ享受したいという方にもおすすめです。今回は学習目的なのでAutopilotで十分です。

ただし、コストを下げたり、マネージドでは提供できない柔軟な対応をしたい場合などはゆくゆく学習していく必要があるので、存在だけは知っておくとよいです。

また別の記事で、AutopilotのGA時にぼくがテンションが上がって書いたもの(Autopilotの記事[GKE Autopilotを試してみた(2021)])があるので、よろしければそちらを参照ください。

Autopilot クラスタの作成

では、Autopilot クラスタ作成で、

「名前」「リージョン」「一般公開クラスタ(を選択)」を入力しましょう。

それにしても最低限入力しなければならない項目がめちゃくちゃ少ないのは助かりますね。

できたら、作成ボタンを押します。

また、GKE をよりセキュアに運用するためには、ある程度のK8sの学習が終えたら一般公開クラスタではなく、「限定公開クラスタ(を選択)」を使って実際に運用する必要があります。あとで優先的に学習しなければならない項目として覚えておくと良いでしょう。(今度その記事も書こうかしら)

クラスタの作成が完了したら、今度は認証・接続をテストします。

認証・接続

作成されたクラスタの画面で、作成したクラスタの「︙(縦三点リーダー)」を押し、「接続」を押します。

すると、認証に必要なコマンドラインが出てくるので、これをコピーします。

ターミナルを開いて先ほどコピーしたものを、ペーストします。

(gcloudコマンドのセットアップ、コマンドによるログインはこちらの公式ドキュメントを参照ください)

$ gcloud container clusters get-credentials autopilot-shimichan --region asia-northeast1 --project PROJECT_NAME

成功すれば、認証が完了です。

できたら、このコマンドを打って、認証ができていることを確かめます。

(もし、kubectlコマンドのインストールがまだの方は、こちらの公式ドキュメントを参照ください)

$ kubectl config current-context

さきほど作成したクラスタが表示されれば、認証成功です。

これで、GKE の K8s を使ったリソースの作成が可能になります。

試しに、リソースへ接続してなにか情報をとってみましょう。 kubectl get nodesでノードの情報が見れます。

$ kubectl get nodes
NAME                                                 STATUS   ROLES    AGE   VERSION
gk3-autopilot-shimichan-default-pool-06e77c62-wf9d   Ready    <none>   30m   v1.22.12-gke.2300
gk3-autopilot-shimichan-default-pool-60369305-jpts   Ready    <none>   30m   v1.22.12-gke.2300

ここまでできていれば完璧です。

まとめ

今日は以下について触れました

  • コンテナのエコシステム
  • K8s はコンテナオーケストレーションツール
  • GKEとK8sは厳密には異なる定義
  • コマンドによる認証・接続

いかがだったでしょうか?

かなりざっくりとした説明を駆け足でしましたが、ここまでをある程度理解しておけば「何を調べるべきか」がある程度見えてくると思います。疑問が多少でる方もいると思いますが、まずは次回の記事を読んでいただき、Overviewをさらってから掘り下げるとスムーズに理解できるかもしれません。

では、また次の記事でお会いしましょう。