k8s安装nginx主备

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: k8s安装nginx主备

安装 nginx 主备,在 master1 和 master2 上做 nginx 主备安装,在master1、master2上操作

yum install nginx keepalived -y

修改 nginx 配置文件。在master1、master2上操作

vi /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

四层负载均衡,为两台Master apiserver组件提供负载均衡

stream {

    log_format  main  '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent';

    access_log  /var/log/nginx/k8s-access.log  main;

    upstream k8s-apiserver {
       server 10.10.1.11:6443;   # xianchaomaster1 APISERVER IP:PORT
       server 10.10.1.12:6443;   # xianchaomaster2 APISERVER IP:PORT
       server 10.10.1.13:6443;   # xianchaomaster3 APISERVER IP:PORT

    }
    
    server {
       listen 16443; # 由于nginx与master节点复用,这个监听端口不能是6443,否则会冲突
       proxy_pass k8s-apiserver;
    }
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    server {
        listen       80 default_server;
        server_name  _;

        location / {
        }
    }
}

keepalive 配置,主 keepalived,在master1上操作

vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {

 acassen@firewall.loc 
 failover@firewall.loc 
 sysadmin@firewall.loc 

}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id NGINX_MASTER
}

vrrp_script check_nginx {

script "/etc/keepalived/check_nginx.sh"

}

vrrp_instance VI_1 {

state MASTER 
interface ens33  # 修改为实际网卡名
virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的 
priority 100    # 优先级,备服务器设置 90 
advert_int 1    # 指定VRRP 心跳包通告间隔时间,默认1秒 
authentication { 
    auth_type PASS      
    auth_pass 1111 
}  
# 虚拟IP
virtual_ipaddress { 
    10.10.1.99/24
} 
track_script {
    check_nginx
} 

}

#vrrp_script:指定检查 nginx 工作状态脚本(根据 nginx 状态判断是否故障转移)
#virtual_ipaddress:虚拟 IP(VIP),在master1上操作

vi /etc/keepalived/check_nginx.sh

!/bin/bash

1、判断Nginx是否存活

counter=ps -C nginx --no-header | wc -l
if [ $counter -eq 0 ]; then

#2、如果不存活则尝试启动Nginx
systemctl start nginx
sleep 2
#3、等待2秒后再次获取一次Nginx状态
counter=`ps -C nginx --no-header | wc -l`
#4、再次进行判断,如Nginx还不存活则停止Keepalived,让地址进行漂移
if [ $counter -eq 0 ]; then
    systemctl start keepalived
fi

fi

添加可执行权限,在master1上操作

chmod +x /etc/keepalived/check_nginx.sh

#keepalive 配置,备 keepalived,在master2上操作

vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {

 acassen@firewall.loc 
 failover@firewall.loc 
 sysadmin@firewall.loc 

}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id NGINX_MASTER
}

vrrp_script check_nginx {

script "/etc/keepalived/check_nginx.sh"

}

vrrp_instance VI_1 {

state BACKUP 
interface ens33  # 修改为实际网卡名
virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的 
priority 90    # 优先级,备服务器设置 90 
advert_int 1    # 指定VRRP 心跳包通告间隔时间,默认1秒 
authentication { 
    auth_type PASS      
    auth_pass 1111 
}  
# 虚拟IP
virtual_ipaddress { 
    10.10.1.99/24
} 
track_script {
    check_nginx
} 

}

#vrrp_script:指定检查 nginx 工作状态脚本(根据 nginx 状态判断是否故障转移)
#virtual_ipaddress:虚拟 IP(VIP),在master2上操作

vi /etc/keepalived/check_nginx.sh

!/bin/bash

1、判断Nginx是否存活

counter=ps -C nginx --no-header | wc -l
if [ $counter -eq 0 ]; then

#2、如果不存活则尝试启动Nginx
systemctl start nginx
sleep 2
#3、等待2秒后再次获取一次Nginx状态
counter=`ps -C nginx --no-header | wc -l`
#4、再次进行判断,如Nginx还不存活则停止Keepalived,让地址进行漂移
if [ $counter -eq 0 ]; then
    systemctl start keepalived
fi

fi

添加可执行权限,在master2上操作

chmod +x /etc/keepalived/check_nginx.sh

#注:keepalived 根据脚本返回状态码(0 为工作正常,非 0 不正常)判断是否故障转移。

#启动服务,在master1、master2上操作

systemctl daemon-reload
yum install nginx-mod-stream -y
systemctl start nginx
systemctl start keepalived
systemctl enable nginx keepalived

#测试 vip 是否绑定成功master1操作
ip add
#测试 keepalived
停掉 master1 上的 nginx。vip 会漂移到 master2

五、把node节点上的单节点ip改为vip地址
原来 10.10.1.11 修改为 10.10.1.99(VIP)。,在node1、上操作

sed -i 's#10.10.1.11:6443#10.10.1.99:16443#' /etc/kubernetes/kubelet-bootstrap.kubeconfig
sed -i 's#10.10.1.11:6443#10.10.1.99:16443#' /etc/kubernetes/kubelet.json
sed -i 's#10.10.1.11:6443#10.10.1.99:16443#' /etc/kubernetes/kubelet.kubeconfig
sed -i 's#10.10.1.11:6443#10.10.1.99:16443#' /etc/kubernetes/kube-proxy.yaml
sed -i 's#10.10.1.11:6443#10.10.1.99:16443#' /etc/kubernetes/kube-proxy.kubeconfig
systemctl restart kubelet kube-proxy

这样高可用集群就安装好了
![image.png](https://ucc.alicdn.com/pic/developer-ecology/b53adc598a334c6db4975f67c3be92a9.png)
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
9天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
24天前
|
应用服务中间件 Linux 网络安全
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
这篇文章提供了在CentOS 7系统上通过源码安装Nginx的详细步骤,包括从官网下载Nginx源码包、上传至虚拟机、解压、删除压缩包、编译安装前的配置、安装PCRE库(因为Nginx使用PCRE库解析正则表达式)、安装zlib和OpenSSL库(用于支持HTTPS协议)、重新编译Nginx、安装后启动Nginx服务、关闭服务、修改默认端口、以及重启服务测试等步骤。文章还提供了相关命令和操作截图,帮助用户更好地理解和执行安装过程。
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
|
13天前
|
Kubernetes 数据库 容器
k8s安装seata单机版
k8s安装seata单机版
|
13天前
|
消息中间件 Kubernetes 容器
k8s安装rabbbitmq
k8s安装rabbbitmq
|
13天前
|
Kubernetes NoSQL MongoDB
k8s安装YAPI
k8s安装YAPI
|
13天前
|
Kubernetes 关系型数据库 MySQL
k8s安装并迁移jumpserver
k8s安装并迁移jumpserver
|
15天前
|
缓存 应用服务中间件 nginx
安装nginx-http-flv-module模块
本文介绍如何为Nginx安装`nginx-http-flv-module`模块。此模块基于`nginx-rtmp-module`二次开发,不仅具备原模块的所有功能,还支持HTTP-FLV播放、GOP缓存、虚拟主机等功能。安装步骤包括:确认Nginx版本、下载相应版本的Nginx与模块源码、重新编译Nginx并加入新模块、验证模块安装成功。特别注意,此模块已包含`nginx-rtmp-module`功能,无需重复编译安装。
47 1
|
13天前
|
Kubernetes 调度 容器
k8s descheduler 组件安装
k8s descheduler 组件安装
|
19天前
|
Kubernetes 安全 持续交付
在K8S中,二进制安装和Kubeadm安装有什么区别?
在K8S中,二进制安装和Kubeadm安装有什么区别?
|
21天前
|
应用服务中间件 Linux nginx
【Nginx 第二篇章】windwos、linux、docker-compose 安装 NGINX
在一节中,我们介绍了如何在Windows环境下安装Nginx,包括从官网下载稳定版压缩包、解压并直接运行`nginx.exe`启动服务,最后通过浏览器访问`http://localhost/`验证安装。第二节覆盖了Linux环境下的安装流程,首先安装必要依赖,接着利用包管理器安装Nginx,并通过`systemctl`或`service`命令启动,同样通过浏览器确认安装成功。第三节则展示了如何使用`docker-compose`轻松部署Nginx,通过编写`docker-compose.yml`文件定义服务和配置映射,最后执行`docker-compose up -d`后台启动容器。
24 0