Kubernetes 麻烦笔记4:Ingress 部署和使用

发布于:2024-10-24 编辑:匿名 来源:网络

上一节我们分享了如何对外暴露服务。今天我们将研究另一种向外界公开服务的方式:ingress。

那么什么是入口呢?它与我们之前遇到的暴露服务有什么不同? 0x01 什么是入口?通常情况下,我们的主机或者集群会服务多个外部站点(比如a.com和b.com就是一个集群同时对外提供服务)。这在 Web 服务器中称为虚拟主机。

这样的话,在k8s中,如果使用前面提到的service服务,只能为不同的服务暴露不同的NodePort,比如a.com:0和b.com:1,也就是说必须要传入域名。通过端口访问站点服务。

这显然不能满足我们的要求。你可能会说,那我为什么不创建一个 nginx 部署,然后在 nginx 中配置规则,将不同的域名转发到不同的服务/pod 呢?恭喜,ingress 做到了。

而且ingress简化了规则的配置,通过ingress提供的API可以实现配置转发到Web服务器。 0x02 Ingress部署有很多实现ingress的方案,比如nginx、kong等,可以去k8s官方文档查看更多方案。

我们这里选择了Traefik。选择Traefik的原因之一是它易于部署。

当然,你也可以选择比较流行的。 nginx(ingress只需要一个yaml文件,但是为了方便理解,我们将整个部署文件分成几个部分,分别进行解释:首先我们需要创建一个账户,其中包含使用过程中需要使用的权限由于k8s使用的是基于角色(Role)的访问控制(RBAC),所以它的创建过程和我们平常的账户创建授权不同,它需要创建一个服务账户和一个角色,然后是服务。

帐户与角色绑定,这样服务帐户就可以拥有特定的权限。代码语言:txt copy --- 创建服务帐号 apiVersion: v1kind: ServiceAccountmetadata: namespace: kube-system name: ingress-controller-account --- 创建角色并更改角色拥有 ingress kind 所需的所有权限: ClusterRoleapiVersion: rbac .authorization.k8s.io/v1metadata: 名称: ingress-controller-role 命名空间: kube-systemrules: - apiGroups: - "" 资源: - 服务 - 端点 - 秘密 动词: - get - list - watch - apiGroups: -extensions -networking.k8s.io resources: -ingresses -ingressclasses verbs: -get -list -watch - apiGroups: -extensionsresources: -ingresses/status verbs: -update--- 将服务帐户绑定到角色,以便服务帐户具有角色中定义的权限 kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: namespace: kube-system name: ingress-controller-role-bindingroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole 名称:ingress -controller-rolessubjects:- kind:ServiceAccount namespace: kube-system name: ingress-controller-account 创建服务角色后,开始创建应用程序(入口控制器)部署文件。

这里没有使用Deployment部署,而是使用了DaemonSet。两者基本相同。

唯一的区别是调度策略,DaemonSet 会保证每个工作节点有且唯一一个 pod 的端口暴露给外界。我们使用容器本身提供的端口映射能力,而不是使用NodePort将服务暴露给外界,因为NodePort虽然可以修改,但有范围限制。

实现了k8s配置,但是这样做本身就不符合规范。代码语言:txt复制kind: DaemonSetapiVersion: apps/v1metadata: namespace: kube-system name: traefik-ingress-controller-daemon-set labels: k8s-app: traefik-ingress-controllerspec: 选择器: matchLabels: k8s-app: traefik -ingress-controller模板:元数据:标签:k8s-app:traefik-ingress-controller规范:serviceAccountName:ingress-controller-account终止GracePeriodSeconds:60个容器:-图像:ustc-edu-cn.mirror.aliyuncs.com/library/ traefik:v2.4 名称:入口控制器 端口: - 名称:http 容器端口:80 主机端口:80 - 名称:https 容器端口:主机端口: - 名称:管理 容器端口:主机端口:securityContext:功能:drop: - 全部添加: - NET_BIND_SERVICE args: # 无需密码即可启用仪表板。

不推荐已修复#以进行生产。 - --api.insecure - --api.dashboard # 指定我们要使用 Traefik 作为入口控制器。

- --providers.kubernetesingress # 定义两个入口点端口,并设置从 HTTP 到 HTTPS 的重定向。 - --entryPoints.web.address=:80 - --entryPoints.websecure.address=: #- --entrypoints.web.http.redirections.entryPoint.to=websecure #- --entrypoints.web.http.redirections 。

EntryPoint.scheme=https # 启用调试日志记录。对于找出为什么某些东西可能无法工作很有用。

获取 pod 的日志。 - --log.level=info 将以上两部分代码保存为文件,然后执行 kubectl apply -f traefik-ingress.yml 即可完成 ingress 的部署:可以通过 kubectl -n kube 查看部署状态-system get daemonset 命令:0x03 ingress 以我们上一节暴露的服务为基础,这样 nginx-deployment 就可以通过 ingress 对外提供服务,创建 ingress 也比较简单。

主要内容大致如下。这里有两点需要注意。

首先是这里的spec.rules.0.host(nginx-ingress.local)的值是我自定义的,不存在。对于域名,您可以将其更改为您可以解析的域名。

如果稍后访问,则需要配置hosts。第二个spec.rules.0.http.paths.0.backend.service.name是我们在上一节的暴露服务中创建的服务名称,可以通过kubectl get svc查看。

代码语言:txt复制 apiVersion:networking.k8s.io/v1kind:Ingressmetadata:名称:nginx-deployment-ingressspec:规则:-主机:nginx-ingress.local http:路径:-路径:/pathType:前缀后端:服务: name: nginx-svc port: number: 80 将上述yaml代码保存为nginx-deployment-ingress.yml,然后执行kubectl apply -f nginx-deployment-ingress.yml即可完成ingress的创建。将9...93 nginx-ingress.local添加到hosts中(windows位于C:\Windows\System32\drivers\etc\hosts,linux和mac位于/etc/hosts)并保存。

Kubernetes 麻烦笔记4:Ingress 部署和使用

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 通知:即日起,禁止携带Note 7登机,且不得作为航空货物托运或承运

    通知:即日起,禁止携带Note 7登机,且不得作为航空货物托运或承运

    中国民航局昨天发布公告,针对三星Galaxy Note 7手机出现的问题手机,为确保航空运输安全,自10月1日起,3月27日起,三星Galaxy Note 7手机不得携带登机,也不得托运。 具体规定为:旅客及船员严禁随身或手提行李中携带三星Galaxy Note 7手机;严禁将三星Galaxy Note 7手机放

    06-17

  • 李佳琦再次受到质疑,“全网最低价”谁说了算

    李佳琦再次受到质疑,“全网最低价”谁说了算

    双11的战线越来越长,促销方式越来越难懂,冲突也越来越早发生。 今年的商战是由京东发起的。 因花西子眉笔价格得罪网友后,李佳琦直播间再次陷入困境。 上次,一个新的货币计量单位“华西币”诞生了。 这一次,“全网最低价”应该被重新理解。 双11的“简单商战”,谁没说实

    06-21

  • 人造肉生产商v2food获3500万美元A轮融资

    人造肉生产商v2food获3500万美元A轮融资

    据投资界11月30日消息,澳大利亚植物性肉类替代品研发制造商v2food获3500万美元A轮融资,由联邦科学与工业研究组织 (Commonwealth Scientific and Industrial Research Organization) CSIRO 创新基金旗下资本部门 Main Sequence Ventures 出资,私人投资公司 Horizo??n Inve

    06-18

  • 广东设立半导体产业基金 规模110亿

    广东设立半导体产业基金 规模110亿

    天眼查App显示,近日,广东省半导体及集成电路产业股权投资基金二期合伙企业(有限合伙)成立,执行事务办公室为广东粤财基金管理有限公司。 公司投资额0.1亿元人民币,经营范围为私募股权基金从事股权投资、投资管理、资产管理等活动。 合伙人信息显示,该基金由广东粤财投资

    06-18

  • 沉浸式推理互动体验平台“戏剧侦探”获数百万天使融资,经纬中国投资

    沉浸式推理互动体验平台“戏剧侦探”获数百万天使融资,经纬中国投资

    据投资界5月15日消息,沉浸式推理互动体验平台“戏剧侦探”近日获得来自经纬中国的投资。 经纬中国天使轮融资100万元。 本轮融资主要用于产品研发、内容生态建设和团队建设。   剧探本质上是一个“内容+社交”的互动平台,构建强大的社交场景,用脚本驱动场景化社交。 目前

    06-18

  • 路透社:半导体集团 ASMI 预计 2022 年下半年营收增加

    路透社:半导体集团 ASMI 预计 2022 年下半年营收增加

    据路透社报道,荷兰半导体供应商 ASM International (ASMI) 周二预测 2022 年下半年营收增加,因为预计上半年供应链问题将持续存在。 ASMI 在一份声明中表示:“根据目前的情况,我们预计下半年的收入将高于上半年。 ”英特尔和应用材料等半导体集团受到供应链挑战的打击,尽

    06-08

  • 西瓜视频已与BBC、Discovery达成内容合作,独家播出纪录片《哈勃三十年》

    西瓜视频已与BBC、Discovery达成内容合作,独家播出纪录片《哈勃三十年》

    纪录片将成为西瓜视频内容布局的另一重点。 4月22日,西瓜视频与BBC Studios宣布达成内容合作。 双方将共同制作两部新纪录片:《哈勃三十年:揭示宇宙奇观》和《灵长王国》。 同时,BBC将为西瓜视频提供数百部纪录片内容。 西瓜视频还携手另一部纪录片《发现巨头》。 西瓜视频

    06-18

  • 看亚洲之星:现代KOL开创了赢得和影响客户的新方式

    看亚洲之星:现代KOL开创了赢得和影响客户的新方式

    2016年,杭言浩回到家乡马来西亚槟城岛,亲眼目睹了年轻人如何依靠互联网追名逐利,财富,甚至能够靠它谋生。 在互联网上,任何人都可以成为明星15分钟——只需要一段成功的TikTok(抖音海外版)视频。 “然而,真正的影响力是明确自己的独特性,并为他人提供宝贵的知识和经

    06-18

  • 中期协:今年第一季度我国期货市场成交额同比增长83.08%

    中期协:今年第一季度我国期货市场成交额同比增长83.08%

    中国中期协会:今年一季度,我国期货市场成交量同比增长83.08%。 今年一季度,我国期货市场累计交易量18.49亿手,累计成交额0.36万亿元,同比分别增长69.86%和83.08%。 %。 其中,钢材、化工品、油脂、能源等期货品种交易量同比快速增长。 数据还显示,今年3月份全国期货市场

    06-18

  • 据美通社报道,生物科技公司Adcentrx Therapeutics于4月29日宣布完成由剑桥资本

    据美通社报道,生物科技公司Adcentrx Therapeutics于4月29日宣布完成由剑桥资本

    投资社区(ID:pedaily)领投的5000万美元A轮融资,重点关注突破性抗体偶联药物(“Adcentrx”) ADC旗下生物科技公司Therapeutics(“Adcentrx”)宣布完成1万美元A轮融资。 本轮融资由康桥资本领投,博裕资本旗下早期投资平台万物资本跟投。 此次融资将加速Adcentrx在ADC领

    06-18

  • 【话题互动获奖名单&精选点评】开源大模型如何帮助创业项目打造竞争力?

    【话题互动获奖名单&精选点评】开源大模型如何帮助创业项目打造竞争力?

    亲爱的参与者,感谢您参与我们的互动话题“开源大模型如何帮助创业项目打造竞争力?”在这次活动中收到的许多热情的回应和观点给我们带来了启发。 再次感谢您的支持和参与,期待在以后的活动中见到您!这些是本主题讨论中精选的评论。 我们深感荣幸并衷心感谢大家的热情分享。

    06-17

  • 全景影像技术研发公司Insta360获数亿元C+轮融资,拟在A股上市

    全景影像技术研发公司Insta360获数亿元C+轮融资,拟在A股上市

    据投资界3月20日消息,全景影像科技研发公司Insta获得数亿元C+轮融资。 本轮投资方包括迈高控股、华金资本、浪美创投等。 本轮资金将用于产品研发、营销和渠道拓展,提升品牌影响力。 此前,Insta曾于今年3月获得迅雷网络、启明创投、IDG投资的数亿元B轮融资,并于同年7月获得

    06-17