Kubernetes クラスターで Iptables を Ipvs に置き換える方法

Kubernetes クラスターで Iptables を Ipvs に置き換える方法

k8s の kube-proxy はネットワーク プロキシであり、Kubernetes クラスター内のサービスに対して負荷分散とサービス検出機能を提供する役割を担っていることは誰もが知っています。 kube-proxy はさまざまなモードで実行されますが、iptables モードと ipvs モードは 2 つの一般的なモードです。

iptables と ipvs はどちらも Linux カーネルのネットワーク プロキシ テクノロジであり、負荷分散とサービス検出を実装するために使用できます。ただし、2 つのモードにはいくつかの違いがあります。

さまざまな実装方法

Iptables は iptables ルールに基づいて実装されます。各ノードは、負荷分散とサービス検出を実現するために、iptables に一連のルールを追加します。一方、ipvs はカーネルレベルの負荷分散テクノロジに基づいており、より効率的なネットワーク プロキシ処理を実現できます。

異なるパフォーマンス

高負荷状態では、ipvs モードの kube-proxy はカーネル レベルでネットワーク負荷分散を処理し、より効率的であるため、パフォーマンスが向上します。ただし、シナリオによっては、Iptables モードの方がパフォーマンスが向上することもあります。

さまざまな機能

Iptables モードの Kube-proxy Kubernetes バージョン 1.16 より前では、ポート転送は iptables を使用して実装されていましたが、TCP ベースの負荷分散とサービス検出しか実装できず、レイヤー 4 の負荷分散をサポートできませんでした。 Kubernetes バージョン 1.16 では、レイヤー 4 の負荷分散をサポートするために新しい iptables-nat モードが追加されました。対照的に、ipvs モードは TCP、UDP、SCTP、および 4 層の負荷分散をサポートし、オンライン ハッシュ、IP ハッシュ、ラウンド ロビン、最小接続などの複数の負荷分散アルゴリズムをサポートします。

iptables の欠点の 1 つは、カーネル レベルで動作することです。 iptables ルールが複雑すぎると、システムのパフォーマンスに影響する可能性があります。さらに、iptables ルールはカーネルに集中しているため、変更することが困難です。

Kubernetes システムでは、kubeadm 管理ツールは、kube-proxy を処理するためにデフォルトで ipvs モードを選択します。同時に、Kubernetes は自動プルアップ、ロールバック、フェイルオーバーなどのさまざまな例外処理メカニズムも提供し、システムの信頼性、高可用性、フォールト トレランスを確保します。これにより、iptables 処理中に発生する可能性のある問題を回避し、障害処理とフォールト トレランスにおけるシステム全体のパフォーマンスが向上します。

操作はすべてのノードで実行されます

カーネルサポートを有効にする

cat >> /etc/sysctl.conf << EOF net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF

sysctl -p

ipvsサポートを有効にする

yum -y インストール ipvsadm ipset

一時的な効果

modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4

永続

cat > /etc/sysconfig/modules/ipvs.modules <<EOF modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 EOF

kube-proxyを設定し、マスター上で操作する

インストールにはkubeadminを使用するので、操作は以下のようになります

[root@master] # kubectl edit cm kube-proxy -n kube-system configmap/kube-proxy edited

次のように変更します

kind: MasterConfiguration apiVersion: kubeadm.k8s.io/v1alpha1 ... ipvs: excludeCIDRs: null minSyncPeriod: 0s scheduler: "" syncPeriod: 30s kind: KubeProxyConfiguration metricsBindAddress: 127.0.0.1:10249 mode: "ipvs" #修改

マスターでkube-proxyを再起動します

kubectl get ポッド -n kube-system | grep kube-proxy | awk '{print $1}' | xargs kubectl delete pod -n kube-system

ipvsが有効になっているかどうかを確認する

kubectl logs kube-proxy-cvzb4 -n kube-system I0409 03:37:29.194391 1 server_others.go:170] Using ipvs Proxier. W0409 03:37:29.194779 1 proxier.go:401] IPVS scheduler not specified, use rr by default I0409 03:37:29.194981 1 server.go:534] Version: v1.15.3 I0409 03:37:29.214255 1 conntrack.go:52] Setting nf_conntrack_max to 524288 I0409 03:37:29.216744 1 config.go:96] Starting endpoints config controller I0409 03:37:29.216812 1 controller_utils.go:1029] Waiting for caches to sync for endpoints config controller I0409 03:37:29.217445 1 config.go:187] Starting service config controller I0409 03:37:29.218320 1 controller_utils.go:1029] Waiting for caches to sync for service config controller I0409 03:37:29.318218 1 controller_utils.go:1036] Caches are synced for endpoints config controller I0409 03:37:29.318564 1 controller_utils.go:1036] Caches are synced for service config controller

確認する

ポッドに入ると、servicename を ping できるようになります。 iptables を使用する場合、ping を実行すると次のエラーが表示されます。上記の操作を実行すると、すべて正常になります。

 root@xxxxxx-cb4c9cb8c-hpzdl:/opt# ping xxxxxx PING xxxxxx.xxxxx.svc.cluster.local (172.16.140.78) 56(84) bytes of data. From 172.16.8.1 (172.16.8.1) icmp_seq=1 Time to live exceeded From 172.16.8.1 (172.16.8.1) icmp_seq=2 Time to live exceeded

間違い

写真

解決策 (kube-proxy のバージョンを下げる)

 kubectl -n kube-system set image daemonset/kube-proxy *=registry.aliyuncs.com/k8sxio/kube-proxy:v1.17.6

<<:  クラウドコンピューティングデータセンターの持続可能な開発の利点

>>:  Kubernetes 1.28 スケジューラ OOM の根本原因を探る

推薦する

春節期間中にウェブサイトのランキングを向上させる方法

春節が近づいてきており、インターネット実践者にとってはランキングを迅速に向上させるのに良い時期です。...

SEOテクノロジーの最適化の成功または失敗は詳細によって決まります

SEO 技術は言うのは簡単ですが、実行するのは非常に困難です。特に、特定の SEO 技術を使用する場...

SEOとユーザーエクスペリエンスに関する議論

最近、Bai Ya兄弟のSEOとユーザーエクスペリエンス、親しみやすさ、長い道のり、ウェブサイトコン...

「Baiduホームページに追加」の方法と原理について話す

最近、百度が新たにアップグレードした機能「百度ホームページに追加」について、皆さんも聞いたことがある...

クラウド コンピューティング テクノロジーの変化: 仮想マシンからコンテナへ

多くの素晴らしい製品は企業内から生まれます。当初、企業は自社のニーズに基づいて特定のツールを開発しま...

【ピークシーズン戦略2】初心者セラー向けSEOのヒント:キーワードの重みを向上させる鍵とは?

私の前回の記事を読んだ販売者はすでに SEO の原則と重要性について大まかに理解しているはずです。今...

中国モバイルインターネット秋季レポート

2018年9月現在、中国のモバイルインターネットの月間アクティブユーザー数は11億6,700万人に達...

100% Mallがオンラインねずみ講事件に関与、Fanli.comの収益モデルが論争を巻き起こす

最近、福州100%モールが「リベート」という概念を利用して資金集めのねずみ講を行っていた違法行為が暴...

2024年のテクノロジートレンド: クラウドの進化からAIの脅威の状況まで

私たちはますますつながりが強まる世界に生きており、イノベーションがテクノロジー業界を前進させる中、企...

企業のウェブサイトや起業家にとって見逃せないメリットとして、Weikebaba SEO は投資家を募集しています!

月収10万元の起業の夢を実現するミニプログラム起業支援プランSEO 最適化は現在一般的なプロモーショ...

Baiduの最適化には従うべきルールがある

みなさんこんにちは。ハルビンバーチャルリアリティウェブサイトデザインです。最近、会社でやることがたく...

Buyvm-7USD/KVM/Windows/2GB RAM/40GB SSD/2TB トラフィック

いまだに高額で低構成の VPS を使っているなら、あなたは本当に時代遅れです。 buyvm.net ...