koukiblog

たぶんweb系の話題

kubernetes

KubernetesでPodに指定したServiceAccountを削除したいときは"default"を指定する

KubernetesでPodに指定したServiceAccountを削除したいときにはまったのでメモ たとえばこんな感じでPodにServiceAccountを付与したとき apiVersion: apps/v1 kind: Deployment metadata: namespace: default spec: replicas: 2 selector: matchLabels: app:…

Kubernetesで完了済みのJobをまとめて削除する

Kubernetesの完了済みJobリソースをまとめて削除するには、field-selectorに"status.successful=1"を指定することで削除できます。 kubectl delete jobs --field-selector status.successful=1 field-selector に指定できるフィールドはリソース毎に定義され…

GKEリージョンクラスタの制約

GKEにはリージョンクラスタという設定があり、この設定を追加すると、リージョン内の複数のゾーンにノードを複製し、可用性を高めることが出来ます Regional clusters | Kubernetes Engine Documentation | Google Cloud 可用性を高める必要があり、インフラ…

RailsアプリをGKEに移植するときにやったこと

GAEで稼働していたアプリをGKE用に移植したので、そのときやったことを自分用にまとめておく まずベースコンテナを作る まずはRailsアプリを動作するためのコンテナを作成します。ベースとなるコンテナにアプリケーションをコピーすればアプリが動作するよう…

kubernetesにRailsをデプロイするときには、l.gcr.io/google/rubyは使わない方がいい

運用しているGKE上にコンテナ化されていないRailsアプリをデプロイすることになり、コンテナ化を進めていたときに気づいた話。 デプロイしたいアプリはRailsアプリはGAE上で動いていて、GAEで動作するときにどうもコンテナ化されているらしい。 そこでたどり…

GKEでスティッキーセッション(Session Affinity)を利用する

GKE環境でスティッキーセッションを利用するときの方法です。WebSocketなど利用していて、ブラウザからPodと接続を確立したあとはそのPodと通信し続けたい場合に必要になると思います。 k8s環境でスティッキーセッションってそもそもできるのか?と最初不安…

k8sクラスタのsecretsを別のクラスタにコピーしたいとき

secretsといってもbase64encodeされているだけなので、簡単にコピーできます。 kubectl get secrets -o yaml > current_secrets.yaml で取り出して kubectl apply -f current_secrets.yaml でok。 このときTYPE:kubernetes.io/service-account-tokenなど、お…

複数のファイルをまとめてkubectl apply する

kubectl にはその機能がなかったのでfindしてxargsする find . -name "*.yaml"|xargs -I {} kubectl apply -f {}

kubectl execの仕組みを追える範囲で追ってみた

kubernetesを利用しているとき、 kubectl exec -it "pod_name" /bin/bash で目的のコンテナにbashログインすることができますが、これがなぜ動いているのか理解できていなったので調べてみました。 kubectl execとsshと何が違うのか?(sshと同じセキュリテ…

KubernetesのCronjobを手動実行する方法

出来ないことはないだろうと思って調べてみたら方法はあった。 環境変数とか一部設定を変えてすぐ動作確認したいときに便利です。 kubectl create job <job-name> --from=cronjob/<cronjob-name> 関連Issueはこれ。 https://github.com/kubernetes/kubernetes/issues/47538</cronjob-name></job-name>