Kubernetes

Operatorを作ってみる - SDKをベースにGoでControllerを書く

前回の続きで、今度はOperator SDKを使ってGoでControllerを書くかたちでOperatorを作ってみる。 下記を参照しながら作っていくが、例ではMemcachedのDeployment(レプリカ数:3)となっているが、これをmackerel-agentのDaemonSetとして作ってみる。 operator-…

Operatorを作ってみる - helmチャートから生成する方法

KubernetesのOperatorとかCustom Controllerをいくつかの作り方を実際に試してみたいと思う。 まずはoperator-sdkを使ってhelmチャートからOperatorの雛形を生成する方法。 https://github.com/operator-framework/operator-sdk/blob/master/doc/helm/user-g…

Kubernetesは分散メッセージキューであるという解説

Kubernetesとは結局何なのか。一言で表すとしたら。正直よくわかってなかったというか考えたこともなかったが。 「コンテナオーケストレーションツール」などと一般的には言われていると思う。 news.ycombinator.com Kubernetesとは何か、これを読んで個人的…

Custom Controllerいろいろ調べる

https://admiralty.io/blog/kubernetes-custom-resource-controller-and-operator-development-tools/ Custom Controllerまわりのフレームワークとしては3種類くらいある Kubebuilder github.com ネット上で情報が一番多い、かつシンプルそう KubebuilderでK…

CKAD取得した。次の目標

CKAD(Certified Kubernetes Application Developer)に受かった。 参考まで、試験に受かるための参照したリソースが下記。 CKADをさっさと合格するためのTips - Qiita https://qiita.com/kentakozuka/items/c1a30f1545752264dfe6 CKA/CKADに合格したので比較…

Docker for Macに同梱のKubernetesを使う(minikubeの代替?)

Docker for MacにKubernetesが同梱されるようになったことはなんとなく知っていたが、どのように使うのかは分かっていなかったので試してみた。 現時点でのDocker for MacのバージョンはVersion 18.06.0-ce-mac70 (26399)。 Preferenceをみると、Kubernetes…

Freshpod - ImageがビルドされたらPodを再起動する

開発時のワークフローを改善するという意味ですごいいい。 github.com

headless serviceを使ってVIPを使わずに各podのIPに直接アクセスする

kubernetesはserviceの仕組みの中でVIPを使って背後の複数podへのルーティングを管理していて、多くのケースではよしなにやってくれるので便利なのだが、以前Nettyを使ってservice間のコネクションを管理していて、背後にある複数podへの接続が偏る問題に悩…

Macでポートフォワード

今回のケースでいうと、Kubernetes内のPodにローカルからJMXにつないでjvisualvmを使ってチューニングすることが多かったのだが、下記の記事でやったように127.0.0.1のホスト指定が使えないケースが出てきてしまった。 road288.hatenablog.com -Djava.rmi.se…

[Kubernetes][JMX] Kubetenetesで動作するコンテナにjmxで接続する

stackoverflow.com 基本的にはここの通り。 Kubernetesの中で動くPodにJMXでつないで様子をみたいときがある。 そういうときは、まずPod名を調べて、kubectlコマンドでポートフォーワードして、jvisualvmなどのコマンドを使えばOK。 例えばJMXが7000番ポート…

Terminatingのまま消えてくれないPodを強制的に削除する

podがいくら待っても消えてくれないとき。 stackoverflow.com --force --grace-period=0をつける。 例: ᐅ kubectl get pods NAME READY STATUS RESTARTS AGE foo-deployment-2799137922-7xc7r 2/2 Running 0 27d bar-deployment-2705092949-mmkf1 3/3 Termi…

cloud_sql_proxyのsidecar containerを立てる

GCPのCloud SQLへのつなぎ方にはいくつか方法があるが、Kubernetes内にあるpodから接続するにはアプリのコンテナと同一pod内にcloud_sql_proxyのコンテナを立ててつなぐ方法で設定した。 github.com 基本的にはここにあるテンプレートどおりやっていけば問題…

コンテナの内部からpodやdeploymentの名前にアクセスする

kubernetes.io ここにある通りでできる。 pod名の取得を試してみた。 こんな感じで追加 ᐅ kubectl edit deploy foo-deployment deployment "foo-deployment" edited - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name 本来元のyamlを直し…

Kubernetesのcurrent-contextをzshで表示する

複数のGKEクラスタを切り替えて使っていると(特に開発・ステージング・本番など)、いま使っているcontextを混同してしまいがちで、ステージング環境で開発向けのコマンドを打ってしまったりとかしたのでzshのプロンプトに環境をわかりやすく出すようにした…

Kubectlにcontextを追加する

CUIでやろうとしたが方法が見つからず。ウェブコンソールでURLを表示してそれを叩くだけだった。