今、家で使っているKubernetesクラスタについて、インストール時に気にかけておらず、
kube-proxy
が iptables
モードで動いているのでは? と思ったので、確認して ipvs
モードに変更してみた。
ちなみに、たしかにipvsモードのほうがパフォーマンスに優れると言われてはいる。 しかしながら、Calicoでおなじみのtigeraによると、大規模になれば違いはでてくるが、 100程度のオーダーでは違いは無いらしい。もはや、ただの自己満である。
https://www.tigera.io/blog/comparing-kube-proxy-modes-iptables-or-ipvs/
現状確認
設定見ればすぐだが、ログを見ても動作確認はできる。
$ kubectl -n kube-system logs kube-proxy-6vvrf kube-proxy
(trim)
W0711 06:32:25.413300 1 server_others.go:324] Unknown proxy mode "", assuming iptables proxy
I0711 06:32:25.418063 1 server_others.go:145] Using iptables Proxier.
I0711 06:32:25.418401 1 server.go:571] Version: v1.17.8
(trim)
未設定なので、iptagblesモードで動くよとばっちり出ている。
ipvsモードに修正
kubectl -n kube-system edit configmaps kube-proxy
して、
mode: ""
になっているところを、 mode: ipvs
に修正する。
修正したら、 kubectl -n rollout restart daemonset kube-proxy
して、再起動すればおしまい。
(もちろん、各Podをdeleteして再作成するのも可)
修正後確認
$ kubectl -n kube-system logs kube-proxy-z8nwd kube-proxy
I0727 14:02:58.646065 1 server_others.go:172] Using ipvs Proxier.
W0727 14:02:58.646292 1 proxier.go:420] IPVS scheduler not specified, use rr by default
I0727 14:02:58.646423 1 server.go:571] Version: v1.17.8
Warningがでているが、IPVSモードでは、kube-proxyの負荷分散方式を、ラウンドロビンや リーストコネクションなどから選べるようだ。 指定していないとラウンドロビンになるようだが、まあそれでいいのではないかな。
まとめ
ipvsの場合の負荷分散方式が、いろいろあるってことは知らなかったので、やってみてよかった。
関連記事
- OpenFaaSでお手軽API環境を手にいれる
- kubernetesを1.17から1.18にバージョンアップする
- kubernetes-mixinのダッシュボードでgrafanaダッシュボードを簡単に構築する
- Tektonでパイプラインを動かす
- Tektonをさわってみた
comments powered by
Disqus
Share