阿里云ingress配置时间超时的参数

一、背景

在使用阿里云k8s集群的时候,内网API网关,刚开始是用的是Nginx,后面又搭建了ingress。
区别于nginx配置,ingress又该怎么设置参数呢?比如http超时时间等等。

本文会先梳理nginx是如何配置,再对比ingress的配置方式。
示例以超时时间的设置。

二、nginx配置

在k8s部署两个节点的Nginx容器
在这里插入图片描述

      containers:- env:- name: aliyun_logs_nginx-logvalue: /var/log/nginx/*.logimage: nginximagePullPolicy: Alwaysname: xh-nginxports:- containerPort: 80protocol: TCPresources:limits:cpu: '2'memory: 4Girequests:cpu: 250mmemory: 2GiterminationMessagePath: /dev/termination-logterminationMessagePolicy: FilevolumeMounts:- mountPath: /etc/nginx/nginx.confname: nginxsubPath: nginx.conf- mountPath: /etc/nginx/conf.dname: nginx-cm- mountPath: /var/log/nginx/name: volume-k8s-inner-nginx-logvolumes:- configMap:defaultMode: 420items:- key: nginx.confpath: nginx.confname: nginx-confname: nginx- configMap:defaultMode: 420name: nginx-cmname: nginx-cm- hostPath:path: /var/log/nginxtype: Directoryname: volume-k8s-inner-nginx-log- emptyDir: {}name: volumn-sls-16578614717160

这里把/etc/nginx/nginx.conf和下面的/etc/nginx/conf.d/*.conf分别挂载到configMap
在这里插入图片描述

1、nginx-conf下的新增了一个子项nginx.conf

对应容器里的文件/etc/nginx/nginx.conf

在这里插入图片描述
详情见下:

user  nginx;
worker_processes  auto;worker_cpu_affinity auto;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;worker_rlimit_nofile 10240;events {use epoll;worker_connections  10240;
}http {underscores_in_headers on;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 传递http header值include       /etc/nginx/mime.types;default_type  application/octet-stream;
# 设置log格式log_format  access '$proxy_add_x_forwarded_for $time_local $request $request_time "$upstream_response_time" ''$status $body_bytes_sent $host "$http_user_agent" $bytes_sent $request_length "$upstream_addr" ';access_log  /var/log/nginx/access.log  access;charset  utf-8;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 500m;sendfile       on;tcp_nopush     on;tcp_nodelay    on;keepalive_timeout  600;server {listen       80;server_name  nginx_status;location /ngx_status {stub_status;}}fastcgi_connect_timeout 600;fastcgi_send_timeout 600;fastcgi_read_timeout 600;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;include /etc/nginx/conf.d/*.conf;}        

2、nginx-cm

对应容器里的文件/etc/nginx/conf.d/*.conf

在这里插入图片描述

下面以常见的用户服务为示例:

upstream user-service-cloud-cluster {server 172.16.17.9:8081 weight=50 max_fails=2 fail_timeout=10s;
}
server
{listen       80;server_name  user.xxx.cloud;location / {proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;proxy_pass http://user-service-cloud-cluster;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header HTTP_HOST $host;proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;proxy_set_header HTTP_X_FORWARDED_HOST $host;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-HTTPS 0;}access_log  /var/log/nginx/user-service_cloud_access.log  access;error_log  /var/log/nginx/user-service_cloud_error.log;}

3、小节

当你修改了nginx的配置,别忘记了进入Nginx容器进行reload,以使配置生效。

nginx -s reload

在这里插入图片描述

三、ingress配置

除了已知的一些区别,它和Nginx的一个最大不同是,不用手动去reload才能让配置生效。

同样部署两个ingress节点

在这里插入图片描述
建议你使用Helm安装ingress,简单方便。具体就不在本文赘述了。

下面再看下它的yaml详情:

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-ingress-ack-ingress-nginx-v1-controllernamespace: kube-system
spec:progressDeadlineSeconds: 600replicas: 2revisionHistoryLimit: 10selector:matchLabels:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: nginx-ingressapp.kubernetes.io/name: ack-ingress-nginx-v1strategy:rollingUpdate:maxSurge: 25%maxUnavailable: 25%type: RollingUpdatetemplate:metadata:labels:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: nginx-ingressapp.kubernetes.io/name: ack-ingress-nginx-v1spec:containers:- args:- /nginx-ingress-controller- >---publish-service=$(POD_NAMESPACE)/nginx-ingress-ack-ingress-nginx-v1-controller-internal- '--election-id=ingress-controller-leader-ack-nginx'- '--controller-class=k8s.io/ack-ingress-nginx'- '--ingress-class=ack-nginx'- >---configmap=$(POD_NAMESPACE)/nginx-ingress-ack-ingress-nginx-v1-controller- '--validating-webhook=:8443'- '--validating-webhook-certificate=/usr/local/certificates/cert'- '--validating-webhook-key=/usr/local/certificates/key'- '--v=2'env:- name: POD_NAMEvalueFrom:fieldRef:apiVersion: v1fieldPath: metadata.name- name: POD_NAMESPACEvalueFrom:fieldRef:apiVersion: v1fieldPath: metadata.namespace- name: LD_PRELOADvalue: /usr/local/lib/libmimalloc.soimage: >-registry-vpc.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v1.8.0-aliyun.1imagePullPolicy: IfNotPresentlifecycle:preStop:exec:command:- /wait-shutdownlivenessProbe:failureThreshold: 5httpGet:path: /healthzport: 10254scheme: HTTPinitialDelaySeconds: 10periodSeconds: 10successThreshold: 1timeoutSeconds: 1name: controllerports:- containerPort: 80name: httpprotocol: TCP- containerPort: 443name: httpsprotocol: TCP- containerPort: 8443name: webhookprotocol: TCPreadinessProbe:failureThreshold: 3httpGet:path: /healthzport: 10254scheme: HTTPinitialDelaySeconds: 10periodSeconds: 10successThreshold: 1timeoutSeconds: 1resources:requests:cpu: 100mmemory: 90MisecurityContext:allowPrivilegeEscalation: truecapabilities:add:- NET_BIND_SERVICEdrop:- ALLrunAsUser: 101terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilevolumeMounts:- mountPath: /usr/local/certificates/name: webhook-certreadOnly: true- mountPath: /etc/localtimename: localtimereadOnly: truednsPolicy: ClusterFirstinitContainers:- command:- /bin/sh- '-c'- |if [ "$POD_IP" != "$HOST_IP" ]; thenmount -o remount rw /proc/syssysctl -w net.core.somaxconn=65535sysctl -w net.ipv4.ip_local_port_range="1024 65535"sysctl -w kernel.core_uses_pid=0fienv:- name: POD_IPvalueFrom:fieldRef:apiVersion: v1fieldPath: status.podIP- name: HOST_IPvalueFrom:fieldRef:apiVersion: v1fieldPath: status.hostIPimage: 'registry-vpc.cn-hangzhou.aliyuncs.com/acs/busybox:v1.29.2'imagePullPolicy: IfNotPresentname: init-sysctlresources: {}securityContext:capabilities:add:- SYS_ADMINdrop:- ALLterminationMessagePath: /dev/termination-logterminationMessagePolicy: FilenodeSelector:kubernetes.io/os: linuxrestartPolicy: AlwaysschedulerName: default-schedulersecurityContext: {}serviceAccount: nginx-ingress-ack-ingress-nginx-v1serviceAccountName: nginx-ingress-ack-ingress-nginx-v1terminationGracePeriodSeconds: 300tolerations:- effect: NoSchedulekey: node-role.alibabacloud.com/addonoperator: Existsvolumes:- name: webhook-certsecret:defaultMode: 420secretName: nginx-ingress-ack-ingress-nginx-v1-admission- hostPath:path: /etc/localtimetype: Filename: localtime

这里使用了一个初始化容器initContainers,它会对系统做一个个性化配置。

sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.ip_local_port_range="1024 65535"
sysctl -w kernel.core_uses_pid=0

其次,HOST_IP和POD_IP都从K8s环境变量中读取,因为它们是动态的,非固定不变。

必要的健康检测,配置了livenessProbe和readinessProbe,详情见上。

1、configMap配置

在这里插入图片描述
日志格式,见下:
在这里插入图片描述
其他的配置这里就不一一列举,总之,它支持你通过变量进行配置就行。

它就对应上文的nginx.conf文件。

2、创建Ingress路由

在这里插入图片描述

在这里插入图片描述

操作比较简单,下面要切入到本文的重点。

四、Ingress设置超时时间

要说Ingress如何设置超时时间前,先看一看nginx是如何设置。

默认是60秒,现在业务上有需求调整为600秒。
请看下文的具体配置:

1、nginx配置

upstream xxx-cloud-cluster {server 172.16.17.6:8080 weight=9 max_fails=2 fail_timeout=10s;
}
server
{listen       80;server_name  image-xxx.xx.cloud;location / {proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;proxy_pass http://xxx-cloud-cluster;proxy_redirect off;proxy_set_header Host $host;# 增加下面三行proxy_connect_timeout 600;proxy_send_timeout 600;proxy_read_timeout 600;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header HTTP_HOST $host;proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;proxy_set_header HTTP_X_FORWARDED_HOST $host;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-HTTPS 0;}access_log  /var/log/nginx/xxx_access.log  access;error_log  /var/log/nginx/xxx_error.log;}

2、ingress配置

参数设置通过注解配置:
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;

在这里插入图片描述

在这里插入图片描述

yaml详情见下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:nginx.ingress.kubernetes.io/proxy-connect-timeout: '600'nginx.ingress.kubernetes.io/proxy-read-timeout: '600'nginx.ingress.kubernetes.io/proxy-send-timeout: '600'labels:ingress-controller: nginxname: image-xxxnamespace: java-service
spec:ingressClassName: ack-nginxrules:- host: image.xxx.cloudhttp:paths:- backend:service:name: image-xxxport:number: 8080path: /pathType: ImplementationSpecific

五、总结

这里只是以设置超时时间为例,讲述k8s容器部署的Nginx和ingress,如何设置一定自定义的参数配置。

当然,这里没有讲述怎么安装它们,更多的是梳理了一下如何配置,侧重于使用这块。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优雅的删除链表元

王有志,一个分享硬核Java技术的互金摸鱼侠加入Java人的提桶跑路群:共同富裕的Java人 在数据结构:链表中,我们实现了链表的删除方法,但代码看起来并不“优雅”,那么今天我们就来尝试使用多种方法&#xff0c…

windows安装conda环境,开发openai应用准备,运行第一个ai程序

文章目录 前言一、windows创建openai开发环境二、国内代理方式访问openai的方法(简单方法)三、测试运行第一个openai程序总结 前言 作者开发第一个openai应用的环境准备、第一个openai程序调用成功,做个记录,希望帮助新来的你。 …

31 树的存储结构一

无法直接用数组表示树的逻辑结构,但是可以设计结构体数组对节点间的关系进行描述:【如表】 这样做的问题: 可以利用 组织链表 parent指针: 注意:树结点在 组织链表 中的位置不代表树的任何逻辑关系 树的架构图&#xf…

从0开始学Git指令(3)

从0开始学Git指令 因为网上的git文章优劣难评,大部分没有实操展示,所以打算自己从头整理一份完整的git实战教程,希望对大家能够起到帮助! 远程仓库 Git是分布式版本控制系统,同一个Git仓库,可以分布到不…

java客户端连接redis并设置序列化处理

1、导入依赖 <!--继承父依赖--> <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/> <!-- lookup paren…

服务器出现500、502、503错误的原因以及解决方法

服务器我们经常会遇到访问不了的情况有的时候是因为我们服务器被入侵了所以访问不了&#xff0c;有的时候是因为出现了服务器配置问题&#xff0c;或者软硬件出现问题导致的无法访问的问题&#xff0c;这时候会出现500、502、503等错误代码。基于以上问题我们第一步可以先重启服…

【Py/Java/C++三种语言详解】LeetCode每日一题240114【链表】LeetCode83、删除排序链表中的重复节点

文章目录 题目链接题目描述解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目链接 LeetCode83、删除排序链表中的重复节点 题目描述 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返…

Android json功能解析

1. 简介 JAVAScript Object Notation是一种轻量级的数据交换格式具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案&#xff08;有点类似于正则表达式 &#xff0c;获得了当今大部分语言的支持&#xff09;。  JSON采用兼容性很高的文本格式&#xf…

第 380 场周赛 解题报告 | 珂学家 | 数位DP 二分 + 字符串Hash

前言 整体评价 感觉T3更难些&#xff0c;T4太直接了&#xff0c;一般的KMP/StringHash基本就够用了。 上周T4出数位DP&#xff0c;估计是为T3打了一个铺垫。 A. 最大频率元素计数 思路: 模拟即可 class Solution {public int maxFrequencyElements(int[] nums) {Map<Int…

qt5.14.2配置opencv4.5.5

使用环境&#xff1a;windows&#xff0c;opencv4.5.5&#xff0c;qt5.14.2&#xff0c;msvc编译器 这里的opencv文件是已经编译好了&#xff0c;在qt工程中配置就可使用&#xff0c;编译器得是msvc才行&#xff0c;MinGW不管用。 资源地址&#xff1a;https://download.csdn.…

【深度学习每日小知识】Computer Vision 计算机视觉

计算机视觉是人工智能的一个领域&#xff0c;涉及算法和系统的开发&#xff0c;使计算机能够解释、理解和分析来自周围世界的视觉数据。这包括从静态图像到视频流甚至 3D 环境的一切。 使用对象检测和特征提取等方法&#xff0c;计算机视觉本质上需要从视觉输入中提取有用信息…

2023 IoTDB Summit:天谋科技高级开发工程师苏宇荣《汇其流:如何用 IoTDB 流处理框架玩转端边云融合》...

12 月 3 日&#xff0c;2023 IoTDB 用户大会在北京成功举行&#xff0c;收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题&#xff0c;多位学术泰斗、企业代表、开发者&#xff0c;深度分享了工业物联网时序数据库 IoTDB 的技术创新…

华为手机备份全过程(保姆级问题解决方案)

手机备份 前言主体信息备份一、关闭windows安全中心的内存完整性二、开启 USB 调试&#xff0c;尝试使用 ADB 连接三、开始备份 微信备份QQ备份写在最后遗留问题 前言 我的手机是荣耀 20&#xff0c;虽然不是华为&#xff0c;但系统还是鸿蒙的系统&#xff08;毕竟那阵荣耀还是…

reactNative0.71版本的使用

开发环境配置 参考reactNative 官网 版本选中0.71 打包配置 1. IOS 打开项目 -> 进入ios目录->执行命令 pod install ->项目名称.xcworkspace -> 使用xcode打开->配置证书 证书配置截图如下 &#x1f4a1;tips&#xff1a;TARGETS目录下会有多个文件&#x…

【ArcGIS Pro微课1000例】0057:未安装所需的Microsoft驱动程序

文章目录 一、错误提示二、解决办法1. Excel转表2. Excel转csv一、错误提示 ArcGIS Pro添加Excel数据时,提示未安装所需的Microsoft驱动程序,如下图所示: 二、解决办法 1. Excel转表 在选择输入表时,可能会提示未安装所需的 Microsoft 驱动程序。 这是因为要在 ArcGIS P…

为什么光刻要用黄光

光刻是集成电路&#xff08;IC或芯片&#xff09;制造中的重要工艺之一。简单来说&#xff0c;它是通过使用光掩膜和光刻胶在基板上复制电路图案的过程。 基板将涂覆硅二氧化层绝缘层和光刻胶。光刻胶在被紫外光照射后可以容易地用显影剂溶解&#xff0c;然后在腐蚀后&#xf…

控制网页的灰度显示

1.代码&#xff1a; 普通网页 <style>html {filter: grayscale(100%);}</style> 或是:webkit内核浏览器写法 <style>html {-webkit-filter: grayscale(100%)}</style> 2.说明&#xff1a; grayscale(amount) :进行灰度转换。 amount转换值的大小&…

Embeddings: What they are and why they matter

embeddings 是什么意思https://simonwillison.net/2023/Oct/23/embeddings/推荐原因&#xff1a;GPT 模型的基础是一种叫做 embeddings 的技术&#xff0c;用来将文本转换成向量&#xff0c;从而可以计算出文本之间的相似度。这篇文章详细地介绍了embeddings及应用 Embeddings…

Java多线程并发篇----第十三篇

系列文章目录 文章目录 系列文章目录前言一、Semaphore 信号量二、Semaphore 与 ReentrantLock 区别三、可重入锁(递归锁)四、公平锁与非公平锁前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,…

数据库与SQL

数据库与SQL 学习链接数据库关系型数据库管理系统&#xff08;RDBMS&#xff09; SQLSQL介绍SQL类型SQL 基础语言学习创建表&#xff08;create table&#xff09;语法 数据类型SQL最常用的数据类型 学习链接 基础篇&#xff1a;数据库 SQL 入门教程 数据库 用于存储数据 存放…