K8S调度下的ingress-controller集群的实现以及nginx配置

2024-04-18 21:37

本文主要是介绍K8S调度下的ingress-controller集群的实现以及nginx配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

# 22、K8S调度下的ingress-controller集群的实现以及nginx配置

目标: 1. 实现ingress-controller的集群部署

实现方法: 1.  为ingress-controller 规划两个节点

2.将这两个节点 打上自定义的 label

3.修改yaml文件,并重新创建 ingress-control

   1.     进入k8s主节点ingress yaml文件目录

    Cd /data/developercenter_kubernetes/ingress

     查看节点的label

    kubectl get nodes --show-labels

  2.为规划的ingress-controller节点打上标签

    语法格式: kubectl label nodes <node-name> <label-key>=<label-value>

    示例:

    kubectl label nodes k8s-master beta.kubernetes.node=ingress.control

    kubectl label nodes ip beta.kubernetes.node=ingress.control

    3.删除ingress-controller

             kubectl  delete -f with-rbac.yaml

    4.修改配置文件 编辑 /data/developercenter_kubernetes/ingress/with-rbac.yaml 文件(修改前先备份该文件)

          本文件共修改两处:

           第一处:  修改pod数量为2

             将 replicas: 1   修改成   replicas: 2

第二处: 将ingress-controller  部署到规划中的节点(即刚才打标签的节点)

           nodeSelector:

            beta.kubernetes.node: ingress.control

 4.创建 ingress-controller

     kubectl  create  -f with-rbac.yaml

 5.基础镜像拷贝的ingress-controller规划节点(k8s服务相关基础镜像均没有上传到docker仓库,因此需要手工拷贝并导入到ingress规划节点)

  k8s 主节点执行:

  docker save -o nginx-ingress-controller.tar cloud-kubernetes/nginx-ingress-controller:0.11.0

   ingress 规划节点执行:

  docker load -i nginx-ingress-controller.tar


 

6.验证

        命令:  kubectl  get pod -n ingress-nginx

      如图即为成功,可以看到ingress-controller分步在两个节点上:

    kubectl  get pod -n ingress-nginx

    kubectl  describe pod nginx-ingress-controller-6ffb549676-qtct2  -n ingress-nginx |grep IP

7.查看k8s中应用的域名

方法一:select app_id,app_name from yonyou_cloud.app_manage;(直接从数据库中查询部署的应用对应生成的ID)

方法二:

  l        查看ingress-controller的pod名

       kubectl  get pod -n ingress-nginx


 

  l        查看ingress-controller中的nginx配置,确认应用名格式(k8s为应用生成的域名固定格式为:应用ID + 固定后缀)

       kubectl  exec -it nginx-ingress-controller-6ffb549676-5pq4m -n ingress-nginx  grep server_name  /etc/nginx/nginx.conf

   l        确认应用的真实域名  

   353版本

                     进入开发者中心(http://主节点ip:80),查看应用生成的真实域名,

                     如下图中可以看到,域名为 bxgd7iw7.c87e2267-1001-4c70-bb2a-ab41f3b81aa3.app.uap.com

                            对比上一条命令,可以知道  mmm 应用,对应在k8s中的域名为   bxgd7iw7.prod1.cloud-k8s.com

                            此域名也即为在nginx中使用的域名

8.nginx的配置

  配置文件,请参考附件22、K8S调度下的ingress-controller集群的实现以及nginx配置


 

-------------------------------------------------------------      

[root@dc-yunwei-ansible conf.d]# cat aa.conf

upstream aa.pool {

                 ip_hash;

                 server ip1;          # 这里写两台ingress-controller节点的ip地址

                 server ip2;

             }

server

     {

            listen                  80;

            server_name    aa.k8.com;    #这里下客户自定义的域名,

            access_log    /usr/local/nginx/logs/aa.com_access.log;


 

   location / {

//             root                   /;

             proxy_redirect                     off ;

             proxy_set_header X-Forwarded-Host $http_host;

             proxy_set_header X-Forwarded-For $remote_addr;

             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

             proxy_connect_timeout 300;

//             proxy_headers_hash_max_size 512;

             proxy_send_timeout 300;

             proxy_read_timeout 600;

//             proxy_buffer_size 64k;

             proxy_buffers 4 64k;

             proxy_busy_buffers_size 64k;

             proxy_temp_file_write_size 64k;

             proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;

             proxy_max_temp_file_size 128m;

             proxy_set_header Host "jquukbal.prod1.cloud-k8s.com";                #这里写k8s为应用生成的域名  

             set $proxy_upstream_name "jquukbal.prod1.cloud-k8s.com";          #这里写k8s为应用生成的域名  

             proxy_pass    http://aa.pool/;                 #这里写上面配置的upstream

             proxy_ignore_client_abort on;

             proxy_headers_hash_max_size 51200;

             proxy_headers_hash_bucket_size 6400;

          }

}

----------------------------------------------------------------

这篇关于K8S调度下的ingress-controller集群的实现以及nginx配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/915891

相关文章

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Java Kafka消费者实现过程

《JavaKafka消费者实现过程》Kafka消费者通过KafkaConsumer类实现,核心机制包括偏移量管理、消费者组协调、批量拉取消息及多线程处理,手动提交offset确保数据可靠性,自动提交... 目录基础KafkaConsumer类分析关键代码与核心算法2.1 订阅与分区分配2.2 拉取消息2.3