ingress controller是独立与controller-manager的
Ingress的主要作用是可以利用nginx,haproxy,envoy,traefik等负载均衡器来暴露集群内部服务。
利用Ingress可以解决内部资源访问外部资源的方式,和四层调度替换为七层调度的问题。
解决因为四层iptables/ipvs规则实现调度或加密tsl的方式过于复杂且效率低下的问题,因为四层调度的iptables/ipvs模块无法卸载,所以使用七层负载均衡来替代。

用户访问过程:
用户访问->nodeIP:Nodeport->podIP:containerPort

ingress原理:
用户访问-->LB-->ingress-nginx-service-->ingressController-ingress-nginx-pod-->ingress字段中调用的后端pod
后端pod的service只提供pod归类,归类后ingress会将此service中的后端pod信息提取出来,然后动态注入到ingress-nginx-pod中的ingress字段中
随后,后端pod就被调用到了

例:myapp
1.下载资源。github上搜索ingress-nginx,找到deploy项目,下载里面的mandatory.yaml,或在https://kubernetes.github.io/ingress-nginx/deploy/查看教程下载mandatory.yaml和service-nodeport.yaml
下载yaml后,kubectl apply -f mandatory.yaml。会创建1个pod:nginx-ingress-controller,1个svc:ingress-nginx,1个namespace
            kubectl apply -f service-nodeport.yaml会创建一个service
            这两条命令创建出ingress框架:ns/svc/deploy/ingress/,以后创建后端和后端匹配的ingress资源就可以使用生成的svc来访问了
2.创建myapp后端资源:

 apiVersion: v1
kind: Service
metadata:
name: myapp
namespace: default
spec:
selector:
app: myapp
release: canary
ports:
- name: http
targetPort:
port:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deploy
namespace: default
spec:
replicas:
selector:
matchLabels:
app: myapp
release: canary
template:
metadata:
labels:
app: myapp
release: canary
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v2
ports:
- name: http
containerPort:

 3.创建ingress

 apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-myapp
namespace: default
annotations:
kubernetes.io/ingess.class: "nginx"
spec:
rules:
- host: smbands.com
http:
paths:
- path:
backend:
serviceName: myapp ##注此处必须要和后端pod的service的名称一致,否则会报503错误
servicePort: 80 ##注此处必须要和后端pod的service的端口一致,否则会报503错误

#然后kubectl apply -f myapp-demo.yaml、kubectl apply -f ingress-demo.yaml。

4.访问。

确保hosts文件可以正确解析即可访问,使用域名+ingress-nginx的service暴露的端口

自签证书https  tls
例:
1.生成所需文件

生成私钥文件:openssl genrsa -out tls.key 2048
  生成证书文件:openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=Beijing/L=Beijing/O=DepOps/CN=tomcat.smbands.com
会有tls.crt  tls.key两个文件

2.创建后端pod资源

 apiVersion: v1
kind: Service
metadata:
name: tomcat ##下面的Ingess的资源清单里面的serviceName必须与此名称一致,否则报503错误。
namespace: default
spec:
selector:
app: tomcat
release: canary
ports:
- name: http
targetPort:
port:
- name: ajp
targetPort:
port:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-deploy
namespace: default
spec:
replicas:
selector:
matchLabels:
app: tomcat
release: canary
template:
metadata:
labels:
app: tomcat
release: canary
spec:
containers:
- name: tomcat
image: tomcat
ports:
- name: http
containerPort:
- name: ajp
containerPort:

3.创建secert资源,使其将证书密钥注入到tomcat配置文件中:

 kubectl create secret tls tomcat-ingress-secret --cert=tls.crt --key=tls.key

4.创建ingress资源:

 apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-tomcat-tls
namespace: default
annotations:
kubernetes.io/ingess.class: "nginx"
spec:
tls:
- hosts:
- tomcat-smbands.com
secretName: tomcat-ingress-secret
rules:
- host: tomcat.smbands.com
http:
paths:
- path:
backend:
serviceName: tomcat ##注:这里的serviceName必须与pod的service名称一致,否则会报503错误。
servicePort: 8080 ##注此处必须要和后端pod的service的端口一致,否则会报503错误

5.应用

kubectl apply -f tomcat-ingress-tls.yaml
6.访问。

确保hosts文件可以正确解析即可访问,使用域名https://tomcat.smbands.com:ingress的service向外暴露的端口。

k8s的ingress资源简述的更多相关文章

  1. 容器编排系统k8s之Ingress资源

    前文我们了解了k8s上的service资源的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14161950.html:今天我们来了解下k8s上的In ...

  2. 详解k8s组件Ingress边缘路由器并落地到微服务 - kubernetes

    写在前面 Ingress 英文翻译 进入;进入权;进食,更准确的讲就是入口,即外部流量进入k8s集群必经之口.这到大门到底有什么作用?我们如何使用Ingress?k8s又是如何进行服务发现的呢?先看一 ...

  3. (八)Kubernetes Ingress资源

    前言 Kubernetes提供了两种内建的云端负载均衡机制(cloud load balancing)用于发布公共应用,一种是工作于传输层的Service资源,它实现的是“TCP负载均衡器”,另一种是 ...

  4. [转帖]理解k8s 的 Ingress

    理解k8s 的 Ingress https://www.jianshu.com/p/189fab1845c5/ 暴露一个http服务的方式 service 是 k8s 暴露http服务的默认方式, 其 ...

  5. (转)详解k8s组件Ingress边缘路由器并落地到微服务 - kubernetes

    转:https://www.cnblogs.com/justmine/p/8991379.html 写在前面 Ingress 英文翻译 进入;进入权;进食,更准确的讲就是入口,即外部流量进入k8s集群 ...

  6. Kubernetes K8S之Ingress详解与示例

    K8S之Ingress概述与说明,并详解Ingress常用示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C ...

  7. Ingress资源规范

    k8s v1.19版本中Ingress资源规范从v1beta1版本升级至稳定的v1版本 v1beta1版本 v1beta1版本的Ingress资源位于API群组的extensions之中,该版本的资源 ...

  8. k8s容器的资源限制

    1.k8s支持内存和cpu的限制 requests:容器运行需求,最低保障limits:限制,硬限制(资源上限) CPU: 1颗逻辑CPU(1核CPU=4个逻辑CPU) 1物理核=1000个微核(mi ...

  9. k8s管理pod资源对象(下)

    一.标签与标签选择器 1.标签是k8s极具特色的功能之一,它能够附加于k8s的任何资源对象之上.简单来说,标签就是键值类型的数据,它们可于资源创建时直接指定,也可随时按需添加于活动对象中,而后即可由标 ...

随机推荐

  1. linux中的三种时间

    mtime [修改时间] 文件/目录的修改时间 ctime  [属性修改时间] 文件目录的属性的修改时间 atime  [访问时间]文件/目录的访问时间 stat 123.txt   File: `1 ...

  2. C# Task任务详解及其使用方式

    https://blog.csdn.net/younghaiqing/article/details/81455410 C#多线程编程笔记(4.3)-Task任务中实现取消选项 https://blo ...

  3. 01.Spring Ioc 容器

    基本概念 Spring 的 Ioc 容器,通常也称应用上下文.它包含了两个概念 Ioc 和 容器: 容器:顾名思义就是用来装东西的,在 Spring 中容器里盛放的就是各种各样的 Bean.既然装了东 ...

  4. Handler和Thread线程

    大家都知道,在PC上的应用程序当需要进行一些复杂的数据操作,但不需要界面UI的时候,我们会为应用程序专门写一个线程去执行这些复杂的数据操作.通过线程,可以执行例如:数据处理.数据下载等比较耗时的操作, ...

  5. 嵌入式CISC模型机设计

    一.     课程设计的题目和内容 题目:设计一台嵌入式CISC模型计算机 采用定长CPU周期.联合控制方式,并运行能完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下: 任意输入5个整数, ...

  6. Hadoop实战:用Hadoop处理Excel通话记录

    项目需求 有博主与家庭成员之间的通话记录一份,存储在Excel文件中,如下面的数据集所示.我们需要基于这份数据,统计每个月每个家庭成员给自己打电话的次数,并按月份输出到不同文件夹. 数据集 下面是部分 ...

  7. Mac开启自带的Apache服务器

    OSX版本10.13.6 1.开启 sudo apachectl start 2.关闭 sudo apachectl stop 3.重启 sudo apachectl restart 默认的Apach ...

  8. CentOS 6.0 系统 LAMP(Apache+MySQL+PHP)安装步骤

    一.安装 MySQL 首先来进行 MySQL 的安装.打开超级终端,输入: [root@localhost ~]# yum install mysql mysql-server 安装完毕,让 MySQ ...

  9. CAD Import .NET支持AutoCAD DWG 2013

    CADSoftTools发布了CAD Import .NET 9一个新版本.NET开发库,可以提供给开发人员导入AutoCAD DWG.DXF.HPGL.PLT.CGM等格式的功能. 在新版本中,CA ...

  10. Reduce侧连接

    1.reduce side join 在reduce端进行表的连接,该方法的特点就是操作简单,缺点是map端shffule后传递给reduce端的数据量过大,极大的降低了性能 连接方法: (1)map ...