ingress-nginx-controller 部署以及优化
一、说明
- 本文使用的ingress-nginx v1.0 最新版本,v1.0 适用于 Kubernetes 版本 >= v1.19 小于这个版本的k8s集群,请降级ingress-nginx。
二、部署
部署ingress-nginx 比较简单,直接下载github上的 deploy.yaml 部署即可,如果需要优化请看步骤三。
由于网络问题镜像如果拉取失败,可以使用下面我提交到hub.docker 上的镜像:
所需镜像
# 对应官方k8s.gcr.io/ingress-nginx/controller:1.0
docker pull koala2020/ingress-nginx-controller:v1
#对应官方k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.0
docker pull koala2020/ingress-nginx-kube-webhook-certgen:v1
1、下载 ingres-nginx 的 deploy.yaml 文件
由于github 上目录比较多,涵盖了几乎所有平台,所以需要根据自己情况选择,文章是centos 举例:
下载 github 上 /deploy/static/provider/baremetal/ 目录下的deploy.yaml
wget https://github.com/kubernetes/ingress-nginx/blob/controller-v1.0.0/deploy/static/provider/baremetal/deploy.yaml -O deploy.yaml
2、部署
默认不做任何修改即可运行
kubectl apply -f deploy.yaml
#删除请使用:
kubectl delete -f deploy.yaml
3、查看运行状态
显示Completed 状态的是两个已经完成任务Job 不用管。
[root@k8s-master01 baremetal]# kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-gsllw 0/1 Completed 0 94m
ingress-nginx-admission-patch-7bvsd 0/1 Completed 0 94m
ingress-nginx-controller-f54b4c9bd-tk7fn 1/1 Running 0 94m
#查看 service
[root@k8s-master01 baremetal]# kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.0.0.112 <none> 80:30220/TCP,443:32164/TCP 102m
ingress-nginx-controller-admission ClusterIP 10.0.0.129 <none> 443/TCP 102m
到此 ingress-nginx 就可以正常运行,如果集群中有ingres 项目,那么使用 项目域名:30220 端口号就可以访问了,这个端口号是上面ingress-nginx-controller service nodePort随机的。
三、优化
在步骤二里运行ingress-nginx 是不是感觉有问题,例如:
1、每次部署ingres-nginx 都随机一个nodePort 是不是很不方便;
2、使用域名:端口 对外提供服务不人性化;
3、所有的访问都集中在一个 ingres-nginx 上 pod,没有起到负载均衡的作用(默认ingress-nginx v1.0 启用一个副本);
所有综上所诉我们还需要简单的调整参数
4、由于新版本特性,需要ingress-nginx 需要增加 ingressClass,如果老项目没有 ingressClass 怎么办?
- 负载均衡问题
把配置文件里的 Deployment 换成 DaemonSet 模式,这样保每一台node上都启用 ingress-nginx-controller pod副本。
部分参数如下:
# Source: ingress-nginx/templates/controller-deployment.yaml
apiVersion: apps/v1
#kind: Deployment //注释掉
kind: DaemonSet //改为此模式
metadata:
labels:
helm.sh/chart: ingress-nginx-4.0.1
...
...
- 端口问题
默认ingress-nginx 随机提供node port 端口,体验不好,因此需开启hostNetwork 启用80、443端口(ingress-nginx 使用的是7层代理),配置如下:
依然是修改 Deployment 下面的 spec
spec:
hostNetwork: true //增加
dnsPolicy: ClusterFirst
containers:
- name: controller
image: koala2020/ingress-nginx-controller:v1 // 镜像地址换成自己私有仓库地址
imagePullPolicy: IfNotPresent
lifecycle:
- ingressClass 问题
如果不关心 ingressClass,或者很多没有 ingressClass 配置的 ingress 对象,需要添加参数 ingress-controller --watch-ingress-without-class=true。
args:
- /nginx-ingress-controller
- --publish-service=$(POD_NAMESPACE)/ingress-nginx-dev-v1-test-controller
- --election-id=ingress-controller-leader
- --controller-class=k8s.io/ingress-nginx
- --configmap=$(POD_NAMESPACE)/ingress-nginx-dev-v1-test-controller
- --validating-webhook=:8443
- --validating-webhook-certificate=/usr/local/certificates/cert
- --validating-webhook-key=/usr/local/certificates/key
- --watch-ingress-without-class=true //新增
...
...
添加参数 - --watch-ingress-without-class=true 以后的ingres 会在 ADDRESS 绑定了后端的宿主机ip
而CLASS 为空是因为没有写jenkins的ingressClass,如果启用- --watch-ingress-without-class=true 就不用在关心ingressClass 问题;
[root@k8s-master01 k8s]# kubectl get ing -A
NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE
default jenkins <none> jenkins.example.com 192.168.100.170,192.168.100.171,192.168.100.172 80, 443 3d8h
- ingressClass配置示例:
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
labels:
app.kubernetes.io/component: controller
name: nginx
annotations:
ingressclass.kubernetes.io/is-default-class: "true"
spec:
controller: k8s.io/ingress-nginx
ingress-nginx-controller 部署以及优化的更多相关文章
- 云原生之旅 - 8)云原生时代的网关 Ingress Nginx
前言 当我们在Kubernetes部署的服务需要暴露给外部用户使用时,有三种选择:LoadBalancer,NodePort, Ingress. LoadBalancer类型得结合各个Cloud Pr ...
- kubernetes nginx ingress controller部署
Kubernetes nginx ingress controller部署 1.下载kubernetes nginx的yaml文件 Wget https://raw.githubusercontent ...
- Nginx Ingress on TKE 部署最佳实践
概述 开源的 Ingress Controller 的实现使用量最大的莫过于 Nginx Ingress 了,功能强大且性能极高.Nginx Ingress 有多种部署方式,本文将介绍 Nginx I ...
- 基于k8s集群部署prometheus监控ingress nginx
目录 基于k8s集群部署prometheus监控ingress nginx 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署pro ...
- vue-小爱ADMIN系列文章(二):微信微博等分享,国际化,前端性能优化,nginx服务器部署
最近在做我的小爱ADMIN后台管理系统,结合当前市场后台管理系统对相关功能的需求,我又开始新增了一些新的功能和组件,如分享功能组件,项目国际化功能:项目完成后,部署在nginx服务器,发现首次访问的速 ...
- 【夯实Nginx基础】Nginx工作原理和优化、漏洞
本文地址 原文地址 本文提纲: 1. Nginx的模块与工作原理 2. Nginx的进程模型 3 . NginxFastCGI运行原理 3.1 什么是 FastCGI ...
- Nginx工作原理和优化、漏洞
1. Nginx的模块与工作原理 第三方模块:HTTP Upstream Request Hash模块.Notice模块和HTTP Access Key模块. 图1-1展示了Nginx模块常规的HT ...
- Nginx 工作原理和优化、漏洞
1. Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(locat ...
- Nginx工作原理和优化、漏洞(转)
查看安装了哪些模块命令: [root@RG-PowerCache-X xcache]# nginx/sbin/nginx -Vnginx version: nginx/1.2.3built by gc ...
- nginx服务部署 说明
第1章 常用的软件 1.1 常用来提供静态服务的软件 Apache :这是中小型Web服务的主流,Web服务器中的老大哥, Nginx :大型网站Web服务的主流,曾经Web服务器中的初生牛犊 ...
随机推荐
- mybatis复杂映射
1. 类型名对应 当实体类与表中字段完全一致时,mapper文件里返回类型用resultType,否则要用resultMap,并且建立resultMap映射 package com.rf.domain ...
- vue-qiankun公司微前端项稳定目落地后的总结(附github仓库demo,将会持续更新)
️本文为博客园社区首发文章,未获授权禁止转载 大家好,我是aehyok,一个住在深圳城市的佛系码农♀️,如果你喜欢我的文章,可以通过点赞帮我聚集灵力️. 个人github仓库地址: https:gi ...
- python -- 面向对象编程(属性、方法)
一.属性 对象的属性(attribute)也叫做数据成员(data member). 如果想指向某个对象的属性,可以使用格式: object.attribute 属性又分为:私有属性和公有属性. 私有 ...
- PphpStorm常用操作整理
本地修改记录:在项目名称上右键,点击Local History | Show History.你可以看到项目文件各个历史版本:Alt+Shift+C,可以看到项目最近的修改.这就是它的版本集成功能特性 ...
- Ubuntu 19.10安装Wine软件
======================================== 我使用的操作系统版本为Ubuntu 19.10 64位,如果是32位Ubuntu19.10则可以跳过步骤一 1.添加 ...
- 第十五篇 -- QListWidget与QToolButton(界面)
效果图: 这还只是一个界面,并没有实现相应功能. 先看下这图的构成吧. 工具栏的就是将Action拖上去,这部分前面已经介绍过了,那就看下面这部分的构图. 1.左侧是一个工具箱(ToolBox)组件, ...
- (python函数04)zip(*sorted(zip()))
zip(*sorted(zip())) 用这个玩意儿可以以对两个迭代对象进行排序. 示例代码01 cnts = [2, 4, 3, 6, 5] boundingBoxes = [(730, 20, ...
- Super-Mario-Host(超级玛丽)靶机
仅供个人娱乐 靶机百度云下载 链接:https://pan.baidu.com/s/13l1FUgJjXArfoTOfcmPsbA 提取码:a8ox 一.主机发现 arp-scan -l 二.漏洞扫 ...
- python安全编程之指纹识别
什么是cms CMS是Content Management System的缩写,意为"内容管理系统",这是百度百科的解释,意思是相当于网站的建站模板,整个网站架构已经集成好了,只需 ...
- CF832D题解
题目传送门 Description 给定一棵树上的三个点 \(a,b,c\),你要制定两条起点和终点都在这三个点中的路径,使得两条路径重叠的节点最多. Solution 感觉我的方法和大众不同,显然是 ...