什么是Ingress
什么是Ingress
- 1、Ingress概念
- 2、Ingress安装
- 3、Ingress简单使用
- 4、多域名使用
1、Ingress概念
- 通俗来讲,ingress和之前提到的Service、Deployment,也是一个k8s的资源类型,Ingress用于实现用域名的方式访问k8s内部应用。
- Ingress为Kubernetes集群中的服务提供了入口,可以提供负载均衡、SSL终止和基于名称的虚拟主机,在生产环境中常用的Ingress有Treafik、Nginx、HAProxy、Istio等。
- 基本概念
- 在Kubernetesv 1.1版中添加的Ingress用于从集群外部到集群内部Service的HTTP和HTTPS路由,流量从Internet到Ingress再到Services最后到Pod上,通常情况下,Ingress部署在所有的Node节点上。
- Ingress可以配置提供服务外部访问的URL、负载均衡、终止SSL,并提供基于域名的虚拟主机。但Ingress不会暴露任意端口或协议。
2、Ingress安装
- 首先安装helm管理工具:
- Helm下载地址:https://get.helm.sh/helm-v3.8.2-linux-amd64.tar.gz
- Helm安装
#解压缩
[root@k8s-master helm]# tar -zxvf helm-v3.8.2-linux-amd64.tar.gz [root@k8s-master helm]# mv linux-amd64/helm /usr/local/bin/helm#查看版本
[root@k8s-master helm]# helm version
version.BuildInfo{Version:"v3.8.2", GitCommit:"6e3701edea09e5d55a8ca2aae03a68917630e91b", GitTreeState:"clean", GoVersion:"go1.17.5"}
- 添加ingress-nginx 仓库
[root@k8s-master helm]# helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
#查看
[root@k8s-master helm]# helm repo list
NAME URL
ingress-nginx https://kubernetes.github.io/ingress-nginx[root@k8s-master ~]# helm search repo ingress-nginx
NAME CHART VERSION APP VERSION DESCRIPTION
ingress-nginx/ingress-nginx 4.1.1 1.2.0 Ingress controller for Kubernetes using NGINX a...
- 下载 ingress-nginx配置文件
[root@k8s-master ~]# cd /home/[root@k8s-master home]# mkdir ingress-nginx[root@k8s-master home]# cd ingress-nginx/[root@k8s-master ingress-nginx]# helm pull ingress-nginx/ingress-nginx[root@k8s-master ingress-nginx]# ls
ingress-nginx-4.1.1.tgz#解压
[root@k8s-master ingress-nginx]# tar zxvf ingress-nginx-4.1.1.tgz [root@k8s-master ingress-nginx]# cd ingress-nginx
[root@k8s-master ingress-nginx]# ls
CHANGELOG.md Chart.yaml ci OWNERS README.md README.md.gotmpl templates values.yaml#修改配置文件
[root@k8s-master ingress-nginx]# vim values.yaml #修改镜像仓库
#1
controller:name: controllerimage:## Keep false as default for now!chroot: falseregistry: registry.cn-shanghai.aliyuncs.comimage: wanfei/ingress-nginx-controllertag: "v1.1.2"#digest: sha256:d8196e3bc1e72547c5dec66d6556c0ff92a23f6d0919b206be170bc90d5f9185#2 dnsPolicy: ClusterFirstWithHostNethostNetwork: true#3 kind: DaemonSet#4terminationGracePeriodSeconds: 300# -- Node labels for controller pod assignment## Ref: https://kubernetes.io/docs/user-guide/node-selection/##nodeSelector:kubernetes.io/os: linuxingress: "true"#5#type: LoadBalancer改为type: ClusterIP#6
patch:enabled: trueimage:registry: registry.cn-shanghai.aliyuncs.comimage: wanfei/kube-webhook-certgentag: v1.1.1#digest: sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660pullPolicy: IfNotPresent
- 安装
#创建namespace
[root@k8s-master ingress-nginx]# kubectl create ns ingress-nginx
namespace/ingress-nginx created#给节点打标签
[root@k8s-master ingress-nginx]# kubectl label node k8s-master ingress=true
node/k8s-master labeled[root@k8s-master ingress-nginx]# helm install ingress-nginx -n ingress-nginx .#安装完毕
[root@k8s-master ingress-nginx]# kubectl get po -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-controller-dxfbz 1/1 Running 0 2m56s
- 添加节点
[root@k8s-master ingress-nginx]# kubectl label node k8s-node01 ingress=true
node/k8s-node01 labeled[root@k8s-master ingress-nginx]# kubectl get po -n ingress-nginx -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ingress-nginx-controller-89pxh 0/1 ContainerCreating 0 50s 172.16.55.221 k8s-node01 <none> <none>
ingress-nginx-controller-dxfbz 1/1 Running 0 78m 172.16.55.220 k8s-master <none> <none>
- 删除节点
[root@k8s-master ingress-nginx]# kubectl label node k8s-node01 ingress-
node/k8s-node01 labeled[root@k8s-master ingress-nginx]# kubectl get po -n ingress-nginx -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ingress-nginx-controller-dxfbz 1/1 Running 0 81m 172.16.55.220 k8s-master <none> <none>
3、Ingress简单使用
- 新建ingress.yaml
[root@k8s-master ~]# vim ingress.yamlapiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:kubernetes.io/ingress.class: "nginx"name: example
spec:rules: #一个ingress 可以配置多个rules- host: foo.bar.com #域名配置 ,可以不写,匹配*,可以正则表达 *.bar.comhttp:paths: #相当于nginx的location配置,同个host可以配置多个path/ /abc- path: / pathType: Prefixbackend:service:name: nginx-test-svc #表示代理到哪个serviceport: number: 80 #表示代理到哪个service 端口号
- 创建 ingress
[root@k8s-master ~]# kubectl create -f ingress.yaml [root@k8s-master ~]# kubectl get ing
NAME CLASS HOSTS ADDRESS PORTS AGE
example <none> foo.bar.com 10.102.228.152 80 6m24s#设置 host ingress安装的服务器IP foo.bar.com
#通过浏览器 访问 foo.bar.com
4、多域名使用
- 修改yaml
[root@k8s-master ~]# cp ingress.yaml ingress-dulDomain.yaml#查看可以绑定的svc
[root@k8s-master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 13d
nginx-externalname ExternalName <none> www.baidu.com <none> 23h
nginx-svc-external ClusterIP 10.96.196.165 <none> 80/TCP 24h
nginx-test-svc NodePort 10.99.39.37 <none> 80:31000/TCP 27h#修改yaml
[root@k8s-master ~]# vim ingress-dulDomain.yaml apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:kubernetes.io/ingress.class: "nginx"name: example
spec:rules:- host: foo.bar.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-test-svcport: number: 80- host: foo2.bar.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-test-svcport: number: 80#重新发布
[root@k8s-master ~]# kubectl replace -f ingress-dulDomain.yaml
ingress.networking.k8s.io/example replaced[root@k8s-master ~]# kubectl get ing
NAME CLASS HOSTS ADDRESS PORTS AGE
example <none> foo.bar.com,foo3.bar.com 10.102.228.152 80 48m
- 不同域名对应不同的service,访问不同的应用
什么是Ingress相关推荐
- 宅家学习,如何进行Kubernetes Ingress控制器的技术选型?
导语:在Kubernetes的实践.部署中,为了解决 Pod 迁移.Node Pod 端口.域名动态分配等问题,需要开发人员选择合适的 Ingress 解决方案.面对市场上众多Ingress产品,开发 ...
- Ingress 继任者 Gateway API 使用
Gateway API(之前叫 Service API)是由 SIG-NETWORK 社区管理的开源项目,项目地址:https://gateway-api.sigs.k8s.io/.主要原因是 Ing ...
- nginx 集群部署_入门级实操教程!从概念到部署,全方位了解K8S Ingress!
Kubernetes Ingress用于添加规则,以将流量从外部路由到Kubernetes集群的服务中.在本文中你将了解ingress 的概念,以及用于路由外部流量到Kubernetes deploy ...
- k8s 使用Nginx Ingress实现灰度发布和蓝绿发布
**导语:**云原生最佳实践系列,涵盖了灰度发布.弹性伸缩.集群迁移.网络通信.应用容器化改造等等场景,针对各行业面临的应用现状,提出最佳解决方案,并提供详细操作指导,希望对您有所帮助. Ingres ...
- k8s 集群 Ingress Nginx传递用户真实IP问题
业务应用经常有需要用到用户真实ip的场景,比如:异地登录的风险预警.访问用户分布统计等功能等.当有这种需求的时候,在业务上容器过程中,如果用到ingress就要注意配置了.通常,用户ip的传递依靠的是 ...
- 12、Kubernetes核心技术Ingress
前言 原来我们需要将端口号对外暴露,通过 ip + 端口号就可以进行访问 原来是使用Service中的NodePort来实现 在每个节点上都会启动端口 在访问的时候通过任何节点,通过ip + 端口号就 ...
- Kubernetes Ingress 日志分析与监控的最佳实践
2019独角兽企业重金招聘Python工程师标准>>> 前言 目前Kubernetes(K8s)已经真正地占领了容器编排市场,是默认的云无关计算抽象,越来越多的企业开始将服务构建在K ...
- 通过阿里云容器服务K8S Ingress Controller实现应用服务的灰度发布
简介 日常工作中我们经常需要对服务进行版本更新升级,为此我们经常使用到的发布方式有滚动升级.分批暂停发布.蓝绿发布以及灰度发布,今天主要跟大家分享下在阿里云容器服务Kubernetes集群中如何通过I ...
- Kubernetes Nginx Ingress 安装与使用
2019独角兽企业重金招聘Python工程师标准>>> Kubernetes Nginx Ingress 安装与使用 博客分类: Kubernetes 目录 (Table of Co ...
- Google虚拟现实游戏 Ingress 邀请码一枚(已领)
2019独角兽企业重金招聘Python工程师标准>>> 今天拿到一枚Ingress邀请码,电信网络太差,host也解决不了问题,现贴出来,若拿去用了,回帖mark下: YER8R2B ...
最新文章
- 德鲁克《新企业》学习收获
- Python【Python基础】
- VTK:图表之TreeBFSIterator
- java 为什么序列化_java类为什么要序列化
- 当Java、C++、Python等编程语言都变成妹子。。。
- java 工具类sort_Java 通用排序工具类ListSortUtils
- 【树莓派】最常用的树莓派 Linux 命令及说明
- DFB [02] 基础和相关的非常用的几个链接
- easyUI +datagirdview加载本地json的方式 笔记
- Java中sleep()与wait()的区别
- slf4j相关的配置信息
- 使用python标准库urllib2访问网页
- Oligo 7 引物设计 安装
- 关于移植STM32f107网口程序到GD32f107的问题
- 【干货】在拉斯维加斯,程序员如何靠bandits算法干掉老虎机
- 74HC138(三八译码器)74HC573(锁存器)74HC02(或非门)
- Elasticsearch nested嵌套类型
- 将本珊计算机组成原理,本珊
- php artisan 出错,使用php artisan serve命令获取错误
- 20套各种风格影视动画公司响应式企业模电影上映影讯网站模板电影软件网页CSS模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响应