k8s---ingress对外服务(traefik)

目录

ingress的证书访问

traefik

traefik的部署方式:

deamonset

deployment

nginx-ingress与traefix-ingress相比较

nginx-ingress-controller

ui访问

deployment部署


ingress的证书访问

ingress实现https代理访问:

需要证书和密钥

创建证书 密钥

secrets 保存密钥信息,部署pod时把secrets挂载到pod

创建密钥和证书

#创建密钥和证书
openssl req -x509 -sha256 -nodes -days 356 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/O=nginxsvc"
req: 生成证书文件的
x509: 生成x.509自签名的证书
-sha256:表示使用sha-256的散列算法
-nodes:表示生成的密钥不加密
-days 365: 证书有效期是365天
-newkey rsa:2048: RSA的密钥对,长度2048位
-keyout tls.key -out tls.crt: 密钥文件 key 证书文件 crt
-subj"/CN=nginxsvc/O=nginxsvc”: 主题,CN common name O : organization

#用secret保存密钥和证书
kubectl create secret tls tls-secret --key tls.key --cert tls.crt
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-https
  labels:
    app: https
spec:
  replicas: 3
  selector:
    matchLabels:
      app: https
  template:
    metadata:
      labels:
        app: https
    spec:
      containers:
        - name: nginx
          image: nginx:1.22
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    app: https
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress-https
spec:
  tls:
    - hosts:
      - www.123ccc.com
      secretName: tls-secret
#加密的配置保存在ingress,请求---ingress-controller--ingress---转发到service
#在代理进行时,就要先验证密钥对,然后再把请求转发service到相应的pod
  rules:
    - host: www.123ccc.com
      http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: nginx-svc
              port:
                number: 80

访问
https://www.123ccc.com:31505/
或
curl -k https://www.123ccc.com:31505

nginx的登录账户认证

yum -y install httpd
#借用httpd的htpasswd
htpasswd -c auth zyg
New password: 123456
Re-type new password: 123456

#生成加密
kubectl create secret generic basic-auth --from-file=auth

basic-auth.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-auth
  annotations:
#开启认证模块的配置
    nginx.ingress.kubernetes.io/auth-type: basic
#设置认证类型为basic,这是k8s自带的认证加密的模块
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
#把认证的加密模块导入到ingress当中
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required -lyw'
#设置认证窗口的提示信息。
spec:
  rules:
  - host: www.zyg1.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-svc
            port:
              number: 80

​访问
https://www.zyg1.com:31505

重定向

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-rewrite
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: https://www.zyg1.com:31505
#访问页面会跳转到指定的页面。
spec:
  rules:
  - host: www.liukgc.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-svc
            port:
              number: 80
kubectl apply -f ingress-rewirte.yaml

访问
​​https://www.liukgc.com:31505

traefik

traefik ingress-controller--deployment

traefik是一个为了让部署微服务更加快捷而诞生的一个http方向代理,负载均衡,

traefix设计时就能够实时的和k8s api交互,感知后端口service以及pod的变化,可以自动更新配置和重载。

可以自带感知后端变化

traefik的部署方式:

deamonset

优点-特点:每个节点都会部署一个traefik,节点感知可以自动发现,更新容器的配置。不需要手动重载

缺点:占用资源大,大型集群中,deamonset可能会运行多个traefik实例,尤其是节点上不需要大量容器运行的情况下,无法扩缩容

部署对外集群,对外的业务会经常变更,deamonset可以更好的发现服务配置变更

deployment

优点:集中办公控制,可以使用少量的实例来运行处理整个集群的流量。更容易升级和维护。

缺点:deployment的负载均衡不会均分到每个节点。需要手动更新。他无法感知容器内部配置的变化。

部署对内集群:对内的相对稳定,更新和变化也比较少,适合deployment.

traffic-type:internal 对内服务

traffic-type:external 对外服务

nginx-ingress与traefix-ingress相比较

nginx-ingress 相对较慢

traefix-ingress 自带更新的的重载快,更方便

工作原理都一样,都是7层代理,都可以动态的更新配置,都可以自动发现服务

traefik的并发能力只有nginx-ingress的6成 60%

nginx-ingress-controller

ui访问

#权限
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-rbac.yaml

#deamonset的
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-ds.yaml

#deployment的
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-deployment.yaml

#ui的
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/ui.yaml

kubectl apply -f  traefik-rbac.yaml
kubectl apply -f  traefik-deployment.yaml
kubectl apply -f  ui.yaml

访问ui
http://192.168.10.10:30488/dashboard/

deployment部署

123.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-traefix
  labels:
    nginx: traefik
spec:
  replicas: 3
  selector:
    matchLabels:
      nginx: traefik
  template:
    metadata:
      labels:
        nginx: traefik
    spec:
      containers:
        - name: nginx
          image: nginx:1.22
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-traefix-svc1
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    nginx: traefik
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-traefix-test1
spec:
  rules:
    - host: www.yyw.com
      http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: nginx-traefix-svc1
              port:
                number: 80

做映射

访问
http://www.yyw.com:30227/


总结

nginx-ingress-controller

deployment+loadbalancer:要公有云提供的负载均衡的公网地址

daemonset+hostbnetwork+nodeselector: 和节点服务共享网络,一个节点只能部署一个controller pod,使用宿主机的端口性能最好,适合大并发

deployment+NodePort:最常见、最常用,最简单的方法。但行呢个不太好,多了一层nat地址转发

适用于大并发

traefik-ingress-controller:

daemonset 对外 可以自动更新容器的配置 host节点网络 deployment 对内 无法自动自动更新配置 Nodeport

适用于小的集群,并发是ingress的

https: 1.生成证书密钥 2.创建secret,保存证书和密钥

3.创建ingress把secret导入

加密认证: 1、htpasswd -c auth 认证文件只能是auth 2、 创建ingress:

nginx.ingress.kubernets.io/auth-type: basic
#声明认证类型
nginx.ingress.kubernets.io/auth-secret: basic-auth
#导入认证的密钥文件,sercet的方式存储集群当中

重定向:

nginx.ingress.kubernetes.io/rewrite-target: https://123ccc.com:31505

在ingress文件当中声明的URI都会跳转到这个地址

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android WorkManager入门(二)

WorkManager入门 上一篇前言创建 WorkRequest并提交 定时的任务(PeriodicWorkRequest)配合约束使用定义执行范围失败后的重试为WorkRequest打上TAG其他取消方法 传参和返回参数总结参考资料 上一篇 Android WorkManager入门(一) …

【图解数据结构】深度解析时间复杂度与空间复杂度的典型问题

🌈个人主页:聆风吟 🔥系列专栏:图解数据结构、算法模板 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️上期回顾二. ⛳️常见时间复杂度计算举例1️⃣实例一2️⃣实例二3️⃣实例三4️⃣实例四5…

基于R语言的NDVI的Sen-MK趋势检验

本实验拟分析艾比湖地区2010年至2020年间的NDVI数据,数据从MODIS遥感影像中提取的NDVI值,在GEE遥感云平台上将影像数据下载下来。代码如下: import ee import geemap geemap.set_proxy(port7890)# 设置全局网络代理 Map geemap.Map()# 指定…

HCIP-7

IPV6: 为什么使用IPV6: V4地址数量不够V4使用NAT,破坏了端到端原则 IPV6的优点: 全球单播地址聚合性强(IANA组织进行合理的分配)多宿主----一个接口可以配置N个地址--且这些地址为同一级别自动配置---1)…

绝地求生【违规处罚工作公示】1月8日-1月14日

1月8日至1月14日期间,共计对174,636个违规账号进行了封禁,其中164,757个账号因使用外挂被永久封禁。 若您游戏中遇到违规行为,建议您优先在游戏内进行举报; 另外您也可以在官方微信公众号【PUBG国际版】中点击“ 服务中心 - 举报…

Visual Studio 与 SQL Server 常见报错解决方案(工作向)

前言 这篇文章从今天创建开始,会一直更新下去,以后遇到常见但是比较容易解决的报错会在本文进行更新,有需要的朋友可以收藏再看 目录 Visual Studio lc.exe已退出,代码为-1无法导入以下密钥文件xxx.pfx,该密钥文件…

SG-9101CGA(汽车+125°C可编程晶体振荡器)

SG-9101CGA是用于汽车CMOS输出的可编程晶体振荡器,彩用2.5 x 2.0 (mm)封装,0.67 MHz至170 MHz频率范围、工作温度范围为-40℃~125℃,符合车规级晶振,无铅,绿色环保,满足汽车工业标准,电源电压范…

【音视频原理】图像相关概念 ② ( 帧率 | 常见帧率标准 | 码率 | 码率单位 )

文章目录 一、帧率1、帧率简介2、常见帧率标准3、帧率 刷新率 二、码率1、码率简介2、码率单位 一、帧率 1、帧率简介 帧率 Frame Rate , 帧 指的是 是 画面帧 , 帧率 是 画面帧 的 速率 ; 帧率 的 单位是 FPS , Frames Per Second , 是 每秒钟 的 画面帧 个数 ; 帧率 是 动画…

文件共享服务(一)——DAS、NAS、SAN存储类型

一、存储类型 存储类型主要有三种 1. DAS直连式存储 通常由数据线直连电脑就可以用,比如一块新硬盘,只需要利用磁盘模拟器分区,创建文件系统,挂载就可以使用了。 PC中的硬盘或只有一个外部SCSI接口的JBOD存储设备(即…

Intel杀回车载计算领域,极氪首发其第一代AI SoC

作者 |德新 编辑 |王博 Intel低调地重新杀回车载计算领域。 在两个月前,在上海举办的进博会上,Intel对外展示了基于新一代酷睿核心打造的智能座舱平台。 在此之前,这家芯片巨头任命了服役公司20多年的老将Jack Weast作为汽车业务的全球负责…

Redis三种缓存读写策略

1. Cache Aside Pattern 旁路缓存模式 1.1 读 1.2 写 1.3 为什么要先更新db再删除cache? 缓存的写入速度是比数据库的写入速度快很多,因此相比于先删除cache后更新db带来数据不一致性问题的概率更小。 1.4 特点 平时使用比较多的一个缓存读写模式同时维系db 和 cache&#…

C#:接口中如何将某个值类型的字段传null?

在实际对接第三方接口时,偶尔会有一些字段在某些情况下是不需要传值的。那如何处理呢? 有两种方法: 1、将值类型改为可空类型; 2、定义基类,基类包含所有必须要传的字段,子类则加入偶尔需要传的字段。 下…

联合体中嵌套结构体,结构体未命名时,结构体成员变量的引用

参考文章&#xff1a;C语言 结构体 联合体 | 嵌套使用_联合体里面嵌套结构体-CSDN博客 如题&#xff0c;其实直接用 联合体名.结构体成员变量名 即可。 程序&#xff1a; #include <stdio.h>typedef unsigned int uint32_t; typedef unsigned char uint8_t;union b…

Spring-BeanPostProcessor PostConstruct init InitializingBean 执行顺序

执行顺序探究 新建一个对象用于测试 Component public class Student implements InitializingBean {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}pu…

小程序进阶学习(视频完结)(核心,重点)

首先上面是一个视频播放器 把视频的宽度设置为100%即可铺满全屏 然后视频的标题和作者 最后就是一个视频播放列表 &#xff0c;设置一个固定位置开始滚动即可 还有一个问题没有解决&#xff0c;大家出出主意。 在播放页面在点击一个新的视频去播放&#xff0c;点进去的新视频获…

基于yolov2深度学习网络的车辆检测算法matlab仿真,包括白天场景和夜晚场景

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 YOLOv2算法原理 4.2 车辆检测原理 4.3 白天场景和夜晚场景的车辆检测 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 load yolov2.mat%…

前端发展趋势:WebAssembly、PWA 和响应式设计

目录 前言 WebAssembly&#xff1a;超越JavaScript的性能 渐进式Web应用&#xff08;PWA&#xff09;&#xff1a;离线可用和更好的用户体验 响应式设计&#xff1a;适应多种设备 总结 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊前端…

Android现代开发推荐 | Android Showcase 2.0

Android现代开发推荐 | Android Showcase 2.0 Android Showcase是一个完整的Android应用程序示例&#xff0c;它使用了现代的Android应用程序开发方法&#xff0c;集成了流行的开发工具、库和代码检查工具&#xff0c;以及强大的测试框架和持续集成&#xff08;CI&#xff09;…

python数字图像处理基础(八)——harris角点检测、图像尺度空间、SIFT算法

目录 harris角点检测原理函数 图像尺度空间概念局部不变性局部不变特征SIFT算法 harris角点检测 原理 Harris 角点检测是一种用于在图像中检测角点的算法。角点是图像中局部区域的交叉点或者突出的特征点。Harris 角点检测算法旨在寻找图像中对于平移、旋转和尺度变化具有不变…

数据结构:链式栈

stack.h /* * 文件名称&#xff1a;stack.h * 创 建 者&#xff1a;cxy * 创建日期&#xff1a;2024年01月18日 * 描 述&#xff1a; */ #ifndef _STACK_H #define _STACK_H#include <stdio.h> #include <stdlib.h>typedef struct stack{int data…