はじめに
-
最小構成の Airflow を GKE に deploy する を LocalExecutor を利用するため DB を MySQL に変更します
-
kubernetes のドキュメントにおいて v1.10 を参照しているのは Google Kubernetes Engine で利用しているバージョンと合わせています
Deploy MySQL
- 公式ドキュメント を参考に構築する
ハマりどころ
-
API Reference で目的のものが見つけづらく komposer を利用して docker-compose の YAML を変換し参考にした
- ただし komposer は v2.1 が対応していなかったり、一部の記述が対応していなかったので 2 に書き換えたり、コメントアウトして変換を行った
-
GKE では PersistentVolume は基本的に不要だった
-
上記公式ドキュメントの通り deploy する
-
Web 上で YAML タブを確認すると
error while creating mount source path '/mnt/data': mkdir /mnt/data: read-only file system
-
It turns out that when running on GKE there is no need to explicitly create a volume.
-
https://cloud.google.com/kubernetes-engine/docs/concepts/persistent-volumes#dynamic_provisioning
ほとんどの場合、PersistentVolume オブジェクトを直接構成したり Compute Engine 永続ディスクを作成したりする必要はありません。
-
-
Lost+Found directory 問題
- log に
--initialize specified but the data directory has files in it. Aborting.
が出力される -
/var/lib/mysql
directory に loast+found が含まれてしまうため - mysqld 起動時に
--ignore-db-dir=lost+found
を指定する - https://github.com/docker-library/mysql/issues/186
- log に
docker image の更新について
- kubernetes において docker image の pull policy は IfNotPresent です
- tag を変えずに image の更新をしたい場合
imagePullPolicy: Always
を指定するといいようです-
https://kubernetes.io/docs/concepts/containers/images/#updating-images
-
latest タグを使うのはどのバージョンを利用しているのかわからなくなる、ロールバックできないという点から非推奨
-
https://v1-10.docs.kubernetes.io/docs/concepts/configuration/overview/#container-images
You should avoid using the :latest tag when deploying containers in production, because this makes it hard to track which version of the image is running and hard to roll back.
-
-