一 Nginx代理实现kube-apiserver高可用

1.1 Nginx实现高可用

基于 nginx 代理的 kube-apiserver 高可用方案。
控制节点的 kube-controller-manager、kube-scheduler 是多实例部署,所以只要有一个实例正常,就可以保证高可用;
集群内的 Pod 使用 K8S 服务域名 kubernetes 访问 kube-apiserver, kube-dns 会自动解析出多个 kube-apiserver 节点的 IP,所以也是高可用的;
在每个节点起一个 nginx 进程,后端对接多个 apiserver 实例,nginx 对它们做健康检查和负载均衡;
kubelet、kube-proxy、controller-manager、scheduler 通过本地的 nginx(监听 127.0.0.1)访问 kube-apiserver,从而实现 kube-apiserver 的高可用;
从而基于 nginx 4 层透明代理功能实现 K8S 节点( master 节点和 worker 节点)高可用访问 kube-apiserver 。

1.2 下载编译Nginx


提示:k8smaster01节点已下载相应二进制,可直接分发至node节点。
解释:


--with-stream:开启 4 层透明转发(TCP Proxy)功能;


--without-xxx:关闭所有其他功能,这样生成的动态链接二进制程序依赖最小。

1.3 安装和部署Nginx

  1 [root@k8smaster01 ~]# cd /opt/k8s/work
2 [root@k8smaster01 work]# source /opt/k8s/bin/environment.sh
3 [root@k8smaster01 work]# for node_ip in ${NODE_IPS[@]}
4 do
5 echo ">>> ${node_ip}"
6 mkdir -p /opt/k8s/kube-nginx/{conf,logs,sbin}
7 done #创建Nginx目录
8 [root@k8smaster01 ~]# cd /opt/k8s/work
9 [root@k8smaster01 work]# source /opt/k8s/bin/environment.sh
10 [root@k8smaster01 work]# for node_ip in ${NODE_IPS[@]}
11 do
12 echo ">>> ${node_ip}"
13 scp /opt/k8s/work/nginx-1.15.3/nginx-prefix/sbin/nginx root@${node_ip}:/opt/k8s/kube-nginx/sbin/kube-nginx
14 ssh root@${node_ip} "chmod a+x /opt/k8s/kube-nginx/sbin/*"
15 ssh root@${node_ip} "mkdir -p /opt/k8s/kube-nginx/{conf,logs,sbin}"
16 done #分发Nginx二进制

1.4 配置Nginx 四层透明转发

  1 [root@k8smaster01 ~]# cd /opt/k8s/work
提示:k8smaster01节点已配置Nginx 四层透明转发,可直接分发至node节点。
  1 [root@k8smaster01 work]# source /opt/k8s/bin/environment.sh
2 [root@k8smaster01 work]# for node_ip in ${NODE_IPS[@]}
3 do
4 echo ">>> ${node_ip}"
5 scp kube-nginx.conf root@${node_ip}:/opt/k8s/kube-nginx/conf/kube-nginx.conf
6 done #分发Nginx四层透明代理配置文件

1.5 配置Nginx system


提示:k8smaster01节点已配置Nginx system,可直接分发至node节点。

1.6 分发Nginx systemd

  1 [root@k8smaster01 ~]# cd /opt/k8s/work
2 [root@k8smaster01 work]# source /opt/k8s/bin/environment.sh
3 [root@k8smaster01 work]# for node_ip in ${NODE_IPS[@]}
4 do
5 echo ">>> ${node_ip}"
6 scp kube-nginx.service root@${node_ip}:/etc/systemd/system/
7 done

二 启动并验证

2.1 启动Nginx

  1 [root@k8smaster01 ~]# cd /opt/k8s/work
2 [root@k8smaster01 work]# source /opt/k8s/bin/environment.sh
3 [root@k8smaster01 work]# for node_ip in ${NODE_IPS[@]}
4 do
5 echo ">>> ${node_ip}"
6 ssh root@${node_ip} "systemctl daemon-reload && systemctl enable kube-nginx && systemctl restart kube-nginx"
7 done

2.2 检查Nginx服务

  1 [root@k8smaster01 ~]# cd /opt/k8s/work
2 [root@k8smaster01 work]# source /opt/k8s/bin/environment.sh
3 [root@k8smaster01 work]# for node_ip in ${NODE_IPS[@]}
4 do
5 echo ">>> ${node_ip}"
6 ssh root@${node_ip} "systemctl status kube-nginx |grep 'Active:'"
7 done

013.Kubernetes二进制部署worker节点Nginx实现高可用的更多相关文章

  1. 012.Kubernetes二进制部署worker节点Flannel

    一 部署flannel 1.1 安装flannel kubernetes 要求集群内各节点(包括 master 节点)能通过 Pod 网段互联互通.flannel 使用 vxlan 技术为各节点创建一 ...

  2. 015.Kubernetes二进制部署所有节点kubelet

    一 部署 kubelet kubelet 运行在每个 worker 节点上,接收 kube-apiserver 发送的请求,管理 Pod 容器,执行交互式命令,如 exec.run.logs 等. k ...

  3. Pod在多可用区worker节点上的高可用部署

    一. 需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布在同一个可 ...

  4. 016.Kubernetes二进制部署所有节点kube-proxy

    一 部署 kube-proxy kube-proxy 运行在所有节点上,它监听 apiserver 中 service 和 endpoint 的变化情况,创建路由规则以提供服务 IP 和负载均衡功能. ...

  5. 008.Kubernetes二进制部署Nginx实现高可用

    一 Nginx代理实现kube-apiserver高可用 1.1 Nginx实现高可用 基于 nginx 代理的 kube-apiserver 高可用方案. 控制节点的 kube-controller ...

  6. Kubernetes 二进制部署(一)单节点部署(Master 与 Node 同一机器)

    0. 前言 最近受“新冠肺炎”疫情影响,在家等着,入职暂时延后,在家里办公和学习 尝试通过源码编译二进制的方式在单一节点(Master 与 Node 部署在同一个机器上)上部署一个 k8s 环境,整理 ...

  7. K8s二进制部署单节点 master组件 node组件 ——头悬梁

    K8s二进制部署单节点   master组件 node组件   --头悬梁 1.master组件部署 2.node   组件部署 k8s集群搭建: etcd集群 flannel网络插件 搭建maste ...

  8. K8s二进制部署单节点 etcd集群,flannel网络配置 ——锥刺股

    K8s 二进制部署单节点 master    --锥刺股 k8s集群搭建: etcd集群 flannel网络插件 搭建master组件 搭建node组件 1.部署etcd集群 2.Flannel 网络 ...

  9. 使用Ansible实现nginx+keepalived高可用负载均衡自动化部署

    本篇文章记录通过Ansible自动化部署nginx的负载均衡高可用,前端代理使用nginx+keepalived,端web server使用3台nginx用于负载效果的体现,结构图如下: 部署前准备工 ...

随机推荐

  1. msf之hash攻击

    使用hashdump抓取密码(需要系统管理权限) 另外一个更强大的模块 smart_hashdump 如果目标是win7 就需要先绕过UAC 还可以使用msf内置的mimikatz抓取hash msv ...

  2. [JOYOI1510] 专家复仇 - Floyd

    题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目背景 外星人完成对S国的考察后,准备返回,可他们的飞碟已经没燃料了……S国的专家暗自窃喜 ...

  3. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

  4. 压敏电阻的保护作用—NDF达孚电子科技

    压敏电阻是常见的电子元器件之一,它的保护作用被大家熟知和运用.压敏电阻的主要用于在电路承受过压时进行电压钳位,吸收多余的电流以保护灵敏器件.压敏电阻的导电特性随着施加电压的变化呈非线性变化,它能保护电 ...

  5. 什么是Kafka?

    1 kafka 是什么 Apache kafka is a distributed streaming platform,即官方定义 kafka 是一个分布式流式计算平台.而在大部分企业开发人员中,都 ...

  6. 使用IDEA开发Spark程序

    一.分布式估算圆周率 1.计算原理 假设正方形的面积S等于x²,而正方形的内切圆的面积C等于Pi×(x/2)²,因此圆面积与正方形面积之比C/S就为Pi/4,于是就有Pi=4×C/S. 可以利用计算机 ...

  7. Text 尺寸获取

    获取text在当前文本内容下应该尺寸: 宽度:text.preferredWidth 高度:text.preferredHeight

  8. 品优购(IDEA版)-第一天

    # 品优购(IDEA版)-第一天 品优购IDEA版应该是2019年的新项目.目前只有视频.资料其他都还是旧的. ## 1.学习目标 1:了解电商行业特点以及理解电商的模式 2:了解整体品优购的架构特点 ...

  9. SpringBoot整合MybatisPlus3.X之SQL执行分析插件(十四)

    pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...

  10. TOMACT 各个版本集合

    http://archive.apache.org/dist/tomcat/ 再点击 bin 目录,找到想下载的即可