suse 12 Binary Deployment Kubernetets1.19.7-第05章-kube-nginxをデプロイする

1.5、kube-nginxをデプロイします

  • masterノードのニーズkube-nginx

  • Nginx 4層透過プロキシ機能を使用して、kube-apiserverにアクセスするためのk8sノード(マスターノードとnginxノード)の高可用性を実現します

  • 制御ノードのkube-controller-managerとkube-schedulerはマルチインスタンス展開であるため、1つのインスタンスが正常である限り、クラスターの高可用性を実現できます。

  • クラスター内のポッドは、k8sサービスドメイン名kubernetesを使用してkube-apiserverにアクセスします。kube-dnsは複数のkube-apiserverノードのIPを自動的に解決するため、可用性も高くなります。

  • 各Nginxプロセスで、バックエンドは複数のapiserverインスタンスに接続され、Nginxはそれらのインスタンスでヘルスチェックと負荷分散を実行します

1.5.0、nginxバイナリファイルをダウンロード
k8s-01:~ # cd /opt/k8s/packages/
k8s-01:/opt/k8s/packages # wget http://nginx.org/download/nginx-1.16.1.tar.gz
k8s-01:/opt/k8s/packages # tar xf nginx-1.16.1.tar.gz
1.5.1、nginxをコンパイルしてデプロイする
k8s-01:~ # cd /opt/k8s/packages/nginx-1.16.1/
k8s-01:/opt/k8s/packages/nginx-1.16.1 # ./configure --prefix=$(pwd)/nginx-prefix \
--with-stream \
--without-http \
--without-http_uwsgi_module && \
make && \
make install
  • --with-stream レイヤー4透過転送(TCPプロキシ)機能を有効にする
  • --without-xxx 生成されたダイナミックリンクバイナリプログラムが最も依存しないように、関数をオフにします
1.5.2、nginx.confを構成します
k8s-01:~ # cd /opt/k8s/conf/
k8s-01:/opt/k8s/conf # cat > kube-nginx.conf <<EOF
worker_processes 1;
events {
    
    
    worker_connections  1024;
}
stream {
    
    
    upstream backend {
    
    
        hash \$remote_addr consistent;
        server 192.168.72.39:6443        max_fails=3 fail_timeout=30s;
        server 192.168.72.40:6443        max_fails=3 fail_timeout=30s;
        server 192.168.72.41:6443        max_fails=3 fail_timeout=30s;
    }
    server {
    
    
        listen *:8443;
        proxy_connect_timeout 1s;
        proxy_pass backend;
    }
}
EOF
  • 注:へのIPアドレスmaster节点ip以自己的环境为准
1.5.3、nginxをsystemctl管理として構成します
k8s-01:~ # cd /opt/k8s/conf/
k8s-01:/opt/k8s/conf # cat > kube-nginx.service <<EOF
[Unit]
Description=kube-apiserver nginx proxy
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
ExecStartPre=/opt/k8s/server/kube-nginx/sbin/nginx \
          -c /opt/k8s/server/kube-nginx/conf/kube-nginx.conf \
          -p /opt/k8s/server/kube-nginx -t
ExecStart=/opt/k8s/server/kube-nginx/sbin/nginx \
       -c /opt/k8s/server/kube-nginx/conf/kube-nginx.conf \
       -p /opt/k8s/server/kube-nginx
ExecReload=/opt/k8s/server/kube-nginx/sbin/nginx \
        -c /opt/k8s/server/kube-nginx/conf/kube-nginx.conf \
        -p /opt/k8s/server/kube-nginx -s reload
PrivateTmp=true
Restart=always
RestartSec=5
StartLimitInterval=0
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
1.5.4、nginxバイナリファイルと構成ファイルを配布する
#!/usr/bin/env bash
source /opt/k8s/bin/k8s-env.sh

for host in ${MASTER_IPS[@]}
do
    printf "\e[1;34m${host}\e[0m\n"
    ssh root@${host} "mkdir -p /opt/k8s/server/kube-nginx/{conf,logs,sbin}"
    scp /opt/k8s/packages/nginx-1.16.1/nginx-prefix/sbin/nginx ${host}:/opt/k8s/server/kube-nginx/sbin/
    scp /opt/k8s/conf/kube-nginx.conf ${host}:/opt/k8s/server/kube-nginx/conf/
    scp /opt/k8s/conf/kube-nginx.service ${host}:/etc/systemd/system/
done
1.5.5、kube-nginxサービスを開始します
#!/usr/bin/env bash
source /opt/k8s/bin/k8s-env.sh

for host in ${MASTER_IPS[@]}
do
    printf "\e[1;34m${host}\e[0m\n"
    ssh root@${host} "systemctl daemon-reload && \
                      systemctl enable kube-nginx --now && \
                      systemctl status kube-nginx | grep Active"
done

おすすめ

転載: blog.csdn.net/u010383467/article/details/113798675
おすすめ