高可用性KUBE-apiserverを達成するために、nginxのプロキシ
1.1 nginxの高可用性
KUBE-apiserver nginxのプロキシベースの高可用性ソリューション。
制御ノードKUBEコントローラマネージャ、KUBE-スケジューラは限り通常の例があるように、高可用性を保証することができ、複数のインスタンスを配備することです。
K8S kubernetesアクセスKUBE-apiserverドメインネームサービスクラスタ用途でポッド、KUBE-DNSは自動的に、よりKUBE-apiserver IPノードを解析し、それはまた、非常に入手可能です。
nginxのプロセス、各ノードからの複数のインスタンスapiserverバックエンドドッキング、彼らは健康チェックと負荷分散を行うためのnginx。
kubeletローカルnginxの(モニタ127.0.0.1)を介して、KUBEプロキシ、コントローラマネージャ、スケジューラKUBE-apiserverアクセス、非常に高い可用性KUBE-apiserver。
これによりK8Sノード(マスターノードとワーカーノード)可用性ベースのアクセスKUBE-apiserver nginxの4層透過プロキシ機能を実現します。
nginxのコンパイル1.2のダウンロード
1 [ルート@ k8smaster01〜]#のCDは/ opt / K8S /仕事 2 [ルート@ k8smaster01仕事]#wgetコマンドのhttp://nginx.org/download/nginx-1.15.3.tar.gz 3 [ルート@ k8smaster01仕事] #タール-xzvfのnginx-1.15.3.tar.gz 4 [ルート@ k8smaster01〜]#のCD /opt/k8s/work/nginx-1.15.3/ 5 [ルート@ k8smaster01のnginx-1.15.3]#ます。mkdir nginx-プレフィックス 6 - [ルート@ k8smaster01のnginx-1.15.3]#1は./configure と -stream --without-HTTP --prefix = $(PWD)/ nginxのプレフィックス--without-http_uwsgi_module --without-http_scgi_module - http_fastcgi_module-なし 7 [ルート@ k8smaster01〜]#のCD /opt/k8s/work/nginx-1.15.3/ 8 [ルート@ k8smaster01のnginx-1.15.3]#メイク&& make installを
説明:
-
--withストリーム透明層4が前方(TCPプロキシ)機能をオン。
- --without-XXX:すべて閉じ、他の機能、ダイナミックリンクは、このようにバイナリ依存最小値を生成しました。
- [ルート@ k8smaster01〜]#のCDの/opt/k8s/work/nginx-1.15.3/
- [ルート@ k8smaster01のnginx-1.15.3]#./nginx-prefix/sbin/nginx -v
nginxのコンパイラ1.3を確認した後
。1 [k8smaster01ルート@〜] /opt/k8s/work/nginx-1.15.3 CD# 2 [@ k8smaster01 nginxのルート-1.15.3] -v#./nginx-prefix/sbin/nginx 3。 nginxのバージョン:nginxの/ 1.15.3 。4 [@ k8smaster01 nginxのルート-1.15.3] ## LDD ./nginx-prefix/sbin/nginxビューnginxのダイナミック・リンク・ライブラリ 。5 Linuxベースvdso.so.1 =>(0x00007ffdda980000) 。6 libdl.so。 = 2> /lib64/libdl.so.2(0x00007feb37300000) 。7 libpthread.so.0 => /lib64/libpthread.so.0(0x00007feb370e4000) 。8 libc.so.6と=> /lib64/libc.so.6( 0x00007feb36d17000) 9 /lib64/ld-linux-x86-64.so.2(0x00007feb37504000)
注:唯一の透明層4転送機能をオンにし、オペレーティング・システム依存のlibcライブラリ外側コアLIBに加えて等、他の(例えばlibzを、のlibsslなど)には依存関係LIBため、コンパイルを合理化する目的を達成するためです。
1.4インストールおよびデプロイnginxの
1 [ルート@ k8smaster01〜]#のCDは/ opt / K8S /仕事 2 [ルート@ k8smaster01仕事]#ソース/opt/k8s/bin/environment.sh 3 [k8smaster01仕事@ルート]#用 MASTER_IP で $ {MASTER_IPS [@ ]} 4 行う 5 エコー" >>> $ {MASTER_IP} " 6 ます。mkdir -pは/ opt / K8S / KUBE-nginxの/ {confに、ログ、sbinに} 7 済#创建nginxの目录 8 [ルート@ k8smaster01〜]#CDを/ OPT / K8S /ワーク 9 [ルート@ k8smaster01作業]#ソース/opt/k8s/bin/environment.sh 10 [ルート@ k8smaster01仕事]#ため MASTER_IP で $ {MASTER_IPS [@]} 11は やる 12 エコー" >>> $ {MASTER_IP} " 13 の/ opt / K8S / KUBE-nginxの:SCP /opt/k8s/work/nginx-1.15.3/nginx-prefix/sbin/nginxルート@ $ {MASTER_IPを} / sbinに/ KUBE-nginxの 14 SSHルート@ $ {MASTER_IP} " のchmod A + X / OPT / K8S / KUBE-nginxの/ sbinに/ * " 15 SSHルート@ $ {MASTER_IP} " ます。mkdir -p / OPT / K8S / KUBE -nginx / {CONF、ログ、sbinに}「 16 済#分发nginxの二进制
1.5設定Nginxは透過的に前進4
1 [ルート@ k8smaster01〜]#のCDは/ opt / K8S /仕事 2 [ルート@ k8smaster01仕事]#猫> KUBE-nginx.conf << EOF 3 worker_processes 1。 4つの 5イベント{ 6 worker_connections 1024。 7 } 8 9ストリーム{ 10 上流のバックエンド{ 11 ハッシュ$ REMOTE_ADDR一貫。 12 サーバ172.24.8.71:6443 max_fails = 3 fail_timeout = 30秒。 13 サーバ172.24.8.72:6443 max_fails = 3 fail_timeout = 30秒。 14 サーバ172.24.8.73:6443 max_fails = 3 fail_timeout = 30秒。 15 } 16 17 サーバ{ 18は 127.0.0.1:8443を聞きます。 19 proxy_connect_timeout 1S; 20 proxy_passバックエンド。 21 } 22 } 23 EOF 24 [ルート@ k8smaster01〜]#のCD / OPT / K8S /ワーク 25 [ルートk8smaster01作業@]#ソース/opt/k8s/bin/environment.sh 26 [ルート@ k8smaster01仕事]#ため MASTER_IP で $ {MASTER_IPS [@]} 27 やる 28 エコー" >>> $ {} MASTER_IP " 29 KUBE-nginx.conf SCP $ {} MASTER_IP @ルート:/ OPT / K8S / KUBE-nginxの/ CONF / KUBE-nginx.conf 30 DONE#nginxの4つの透過プロキシ分布プロファイル
1.6設定nginxのシステム
1 [ルート@ k8smaster01〜]#のCDは/ opt / K8S /仕事 2 [ルート@ k8smaster01仕事]#猫> KUBE-nginx.service << EOF 3 [単位] 4説明= KUBE-apiserverのnginxのプロキシ 5の後に=ネットワーク。ターゲット 6 = network-online.target後 7たい= network-online.target 8 9 [サービス] 10種類=フォーク 11 ExecStartPre = / OPT / K8S / KUBE-nginxの/ sbinに/ KUBE-nginxの-c / OPT / K8S / KUBE-nginxの/ CONF / KUBE-nginx.conf -p / OPT / K8S / KUBE-nginxの-t 12 ExecStart = / OPT / K8S / KUBE-nginxの/ sbinに/ KUBE-nginxの-c / OPT / K8S / KUBE-nginxの/conf/kube-nginx.conf -pは/ opt / K8S / KUBE-nginxの 13ExecReload = / OPT / K8S / KUBE-nginxの/ sbinに/ KUBE-nginxの-c /opt/k8s/kube-nginx/conf/kube-nginx.conf -p / OPT / K8S / KUBE-nginxの-sリロード 14 PrivateTmp = 真 15を再起動=常に 16 RestartSec = 5 17 StartLimitInterval = 0 18 LimitNOFILE = 65536 19 20 [インストール] 21 WantedBy = multi-user.target 22 EOF
1.7配布nginxのにsystemd
1 [ルート@ k8smaster01〜]#のCDは/ opt / K8S /仕事 2 [ルート@ k8smaster01仕事]#ソース/opt/k8s/bin/environment.sh 3 [k8smaster01仕事@ルート]#用 MASTER_IP で $ {MASTER_IPS [@ ]} 4 行う 5 エコー" >>> $ {MASTER_IP} " 6 $ {MASTER_IP} @ SCPのKUBE-nginx.serviceルート:の/ etc /にsystemd /システム/ 7 行わを
二つの開始と検証
2.1スタートnginxの
1 [ルート@ k8smaster01〜]#のCDは/ opt / K8S /仕事 2 [ルート@ k8smaster01仕事]#ソース/opt/k8s/bin/environment.sh 3 [k8smaster01仕事@ルート]#用 MASTER_IP で $ {MASTER_IPS [@ ]} 4 行う 5の エコー" >>> $ {MASTER_IP} " 6 $ {MASTER_IP} "@ SSHルートsystemctlデーモンリロード&& KUBE-nginxの&& systemctl再始動KUBE-nginxのを有効systemctl " 7 行います
2.2サービスのチェックnginxの
1 [ルート@ k8smaster01〜]#のCDは/ opt / K8S /仕事 2 [ルート@ k8smaster01仕事]#ソース/opt/k8s/bin/environment.sh 3 [k8smaster01仕事@ルート]#用 MASTER_IP で $ {MASTER_IPS [@ ]} 4 行う 5の エコー" >>> $ {MASTER_IP} " 6 $ {MASTER_IP} @ sshのルート" systemctl状態KUBE-nginxの| grepの'アクティブ:' " 7が 行われ