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-httpslabels:app: https
spec:replicas: 3selector:matchLabels:app: httpstemplate:metadata:labels:app: httpsspec:containers:- name: nginximage: nginx:1.22
---
apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:ports:- port: 80targetPort: 80protocol: TCPselector:app: https
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nginx-ingress-https
spec:tls:- hosts:- www.123ccc.comsecretName: tls-secret
#加密的配置保存在ingress,请求---ingress-controller--ingress---转发到service
#在代理进行时,就要先验证密钥对,然后再把请求转发service到相应的podrules:- host: www.123ccc.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport: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-authannotations:
#开启认证模块的配置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.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport:number: 80
访问
https://www.zyg1.com:31505
重定向
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nginx-rewriteannotations:nginx.ingress.kubernetes.io/rewrite-target: https://www.zyg1.com:31505
#访问页面会跳转到指定的页面。
spec:rules:- host: www.liukgc.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport: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-traefixlabels:nginx: traefik
spec:replicas: 3selector:matchLabels:nginx: traefiktemplate:metadata:labels:nginx: traefikspec:containers:- name: nginximage: nginx:1.22
---
apiVersion: v1
kind: Service
metadata:name: nginx-traefix-svc1
spec:ports:- port: 80targetPort: 80protocol: TCPselector:nginx: traefik
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nginx-traefix-test1
spec:rules:- host: www.yyw.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-traefix-svc1port: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都会跳转到这个地址
相关文章:

k8s---ingress对外服务(traefik)
目录 ingress的证书访问 traefik traefik的部署方式: deamonset deployment nginx-ingress与traefix-ingress相比较 nginx-ingress-controller ui访问 deployment部署 ingress的证书访问 ingress实现https代理访问: 需要证书和密钥 创建证书 密钥 secre…...

MySQL-SQL-DQL
DQL-介绍 DQL-语法 基本查询 1、查询多个字段 2、设置别名 3、去除重复记录 条件查询 1、语法 2、条件 聚合函数 1、介绍 2、常见的聚合函数 3、语法 分组查询 1、语法 2、where与having区别 排序查询 1、语法 2、排序方式 分页查询 1、语法 DQL-执行顺序...

Docker(十四)Etcd 项目
作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! etcd etcd 是 CoreOS 团队发起的一个管理配置信息和服务发现(Service Discovery)的项目,在这一章里面&a…...

EtherNet/IP开发:C++开发CIP源代码
① 介绍一下CIP CIP是一种考虑到自动化行业而设计的通用协议。然而,由于其开放性,它可以并且已经应用于更多的领域。CIP网络库包含若干卷: 第1卷介绍了适用于所有网络自适应的CIP的常见方面。本卷包含通用对象库和设备配置文件库࿰…...
【算法题】68. 文本左右对齐
题目 给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用 “贪心算法” 来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必…...
PHP 调用 e 签宝接口签名指南
前言 在 401 问题上卡了 一段时间,参考官网文档和鉴权签名计算测试也试了很久,签名确定是没错的,但是一直提示 INVALID_SIGNATURE 其实问题在于我忽略了 公共请求头格式 中 Content-MD5 部分的一句话: GET 和 DELETE 请求且 Bod…...

穿越Flink的时间隧道:解锁实时数据之窗,掌握流处理之巅
目录 Flink中的时间和窗口 1时间语义 1.1Flink中的时间语义 1.1.1处理时间 1.1.2事件时间 1.2那种时间语义更重要 2 水位线 2.1 事件时间和窗口 2.2 什么是水位线 2.3 如何生成水位线 2.3.1使用WatermarkGenerator 2.3.2使用SourceFunction 2.4 水位线的传递 2.5 水位…...

服务器与Ajax
1.初识Ajax Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 术语ajax最早产生于2005年,Ajax表示Asynchronous JavaScript and XML(异步JavaScript和XML),但是它不是像HTML、JavaScript或CSS这样的一种“正式的”技…...

Electron项目架构方案心得
这里只记录FE的业务流程设计考虑和Electron的业务流程考虑。 一个electron客户端,理想的架构是,底层的能力支持完全由electron底层模块支持。关于electron底层模块的支持,不限于node packages 或者 dll 或者 rust实现的一些东东。而业务流程…...

Java中创建List接口、ArrayList类和LinkedList类的常用方法(一)
List接口 要了解List接口,就不得不说起Java的集合框架。 (该图来自菜鸟教程) Collection接口和Map接口 Java 集合框架主要包括两种类型的容器,集合Collection和图Map。 Collection接口代表了单列集合,它包含了一组…...

顶级开源社区开发者体验实践分享
实践一:开发者贡献指南 实践二:Dev Container Setup(bonus) 实践三:Good First Issues 实践三:Good Second Issues(bonus) 实践四:RFC 机制 实践五:完善 CI I…...

STM32之RTC实时时钟
一、实时时钟概述 1、实时时钟介绍 英文缩写:RTC。显示年、月、日、时、分、秒、星期,自动计算闰年,能够区分每个月的天数。 RTC特点:能从RTC获取到具体的日期时间,断掉后再开机时间仍然准确(需要纽扣电池ÿ…...

Java JVM 堆、栈、方法区详解
目录 1. 栈 2. 堆 3. 方法区 4. 本地方法栈 5. 程序计数器 首先来看一下JVM运行时数据区有哪些。 1. 栈 在介绍JVM栈之前,先了解一下 栈帧 概念。 栈帧:一个栈帧随着一个方法的调用开始而创建,这个方法调用完成而销毁。栈帧内存放者方…...

Oracle篇—分区表和分区索引的介绍和分类(第一篇,总共五篇)
☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…...
Vue中的模式和环境变量
文章目录 一、介绍二、配置1、环境文件2、变量使用 三、读取环境文件 一、介绍 vue官网:https://cli.vuejs.org/zh/guide/mode-and-env.html模式是 Vue CLI 项目中一个重要的概念。默认情况下,一个 Vue CLI 项目有三个模式 开发环境:develop…...

用ChatGPT教学、科研!亚利桑那州立大学与OpenAI合作
亚利桑那州立大学(简称“ASU”)在官网宣布与OpenAI达成技术合作。从2024年2月份开始,为所有学生提供ChatGPT企业版访问权限,主要用于学习、课程作业和学术研究等。 为了帮助学生更好地学习ChatGPT和大语言模型产品,AS…...
问题解决:django模型查询报错,找不到数据库表
django项目,使用的postgresql数据库,建了多个模式,模型查询时一直默认查public的表 1. 问题: django.db.utils.ProgrammingError: relation "ip_management_app.table" does not exist 2. 代码: class …...

持续集成工具Jenkins的使用之安装篇(一)
Jenkins是一个基于Java开发的开源的一种持续集成工具,主要用于环境部署,监控重复性的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。要想使用它,你就必须的先安装,接下来我们就介绍下J…...

【JavaScript】面向后端快速学习 笔记
文章目录 JS是什么?一、JS导入二、数据类型 变量 运算符三、流程控制四、函数五、对象 与 JSON5.1 对象5.2 JSON5.3 常见对象1. 数组2. Boolean对象3. Date对象4. Math5. Number6. String 六、事件6.1 常用方法1. 鼠标事件2. 键盘事件3. 表单事件 6.2 事件的绑定**1…...
笨蛋学设计模式行为型模式-命令模式【19】
行为型模式-命令模式 8.6命令模式8.6.1概念8.6.2场景8.6.3优势 / 劣势8.6.4命令模式可分为8.6.5命令模式8.6.6实战8.6.6.1题目描述8.6.6.2输入描述8.6.6.3输出描述8.6.6.4代码 8.6.7总结 8.6命令模式 8.6.1概念 命令模式允许将请求封装成一个对象(命令对象,包含…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...