Kubernetes Volume, ちょこっとGCP

Kubernetes Volume, ちょこっとGCP

MLOpsを仕事で扱っていきたいので、その周辺の技術を学んでいくシリーズです。
本記事は、Kubernetesの3つ目の記事です。

また下記の書籍を参考にしています。
Kubernetes完全ガイド (impress top gear)
もちろんチュートリアルも見ております。
Learn Kubernetes Basics

 

Volume

Volume

KubernetesのVolumeは、Pod内に生成されます。
Podを削除してしまうと、同時にVolumeも消えてしまう。
DockerのVolumeとは違う。

PersistentVolume

Volumeとは違うのは、Podの外にVolumeを作ってくれます。
なので、なにかの理由でPodが削除されたとしても、新しいPodからアクセスすることができます。

PersistentVolumeClaim(PVC)

永続化領域の要求を行う場所です。

acceccModesは下記の3つから指定することができます。
ReadWriteOnce: 1つのノードからRead/Writeでマウントできる
ReadOnlyMany: 複数のノードからRead Onlyでマウントできる
ReadWriteMany: 複数のノードからRead/Writeでマウントできる

 

GCKの最初のメモ

GCP上のKuberntesを使ってみました。
下記のやってみた手順で自動デプロイ?的なことをしてみました。(全部書ききれてないです….)

できたこと

③ローカルでなんかの開発
④Githubにpush
 GithubとTravis CIを使ってimageの作成とbuild
④masterにマージされたタイミングで自動的にDeploy

やってみた手順

①clusterを作成する
②GCP上でServiceアカウントを作成する
③CIツールでログイン(自分が使ったのは、TravisCI)
④travis.yml実装
⑤….いろいろやったのですが、書くの力尽きました…

手順①: clusterを作成する

GCPにログインし、左のNavigation MenuからKubernetes Engineを選択します。
その後、clustersの箇所で、clusterを作成します。デフォルトの値で作成しました。
※お金かかるので気をつけましょう。

手順②: GCP上でサービス アカウントを作成する

GCPにアクセスするには、Google Cloud SDK ツールを承認する必要があり、その方法が2つ用意されています。
一つは、ユーザーアカウントを使用する方法。
もう一つは、サービスアカウントを使用する方法です。
今回は、後者のサービスアカウントを使用しました。

Cloud SDK ツールの承認

【手順】
左のNavigation MenuからIAM & adminのIAMを選択します。
ここで新しくKubernetes Engine Adminで新規に作成します。

手順③: TravisCIでログイン

手順④: travis.ymlで実装する

とりあえずbefore_installで含めなければいけないものをメモ。

あとは、helmとかをゴニョゴニョしました。

 

Helm

kubernetes用のパッケージマネージャです。
他の例で言うと、Pythonではpip、jsではnpmです。

なぜ必要になったのか

Kubernetesのリソース群をアプリケーション単位で管理できるようにする必要が出てきたため。
kubectlの削除コマンドだと、一括で削除できなかったりするので、そのような場合に非常に便利です。

参考記事

Helmの概要とChart(チャート)の作り方