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

相关文章

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3