Kubernetes上安装Metallb和Ingress并部署应用程序

news2024/9/23 23:11:02

视频和代码仓库

视频教程地址:https://www.bilibili.com/video/BV1QV4rebEb8
代码仓库地址:https://github.com/xiaohh-me/kubernetes-yaml

网络规划

之前已经写了几篇安装Kubernetes文章,这次来讲讲在Kubernetes上安装Ingress,并用MetalLB部署LoadBalancer应用程序。

此次我使用的网段为 172.18.0.0/16 ,同时为LoadBalancer,需要为MetalLb分配一些虚拟IP地址。此次分配的IP地址为:172.18.8.83-172.18.8.89

安装步骤

此次安装是在 v1.30.4 版本的Kubernetes上安装MetalLB和Ingress,如图:
在这里插入图片描述

安装MetalLB

为什么需要MetalLB

Kubernetes没有为裸机集群提供网络负载均衡器(LoadBalancer类型的服务)的实现。Kubernetes所提供的网络负载平衡器的实现都是调用各种IaaS平台(GCP、AWS、Azure…)的粘合代码。如果你不是运行在一个受支持的IaaS平台上(GCP, AWS, Azure…),loadbalancer在创建时将无限期地保持在“pending”状态。

裸机集群运营商只剩下两个较小的工具来将用户流量引入他们的集群,“NodePort”和“externip”服务。对于生产使用,这两种选择都有明显的缺点,这使得裸机集群成为Kubernetes生态系统中的二等公民。

MetalLB旨在通过提供与标准网络设备集成的网络负载平衡器实现来纠正这种不平衡,以便裸机集群上的外部服务也尽可能地“正常工作”。

MetalLB的官方文档地址为 https://metallb.universe.tf

修改kube-proxy配置

你需要执行下面这行命令进行修改:

kubectl edit configmap -n kube-system kube-proxy

需要修改的第一个地方为 config.conf 下面 mode 配置项,大概在59行的位置:
在这里插入图片描述

需要改为 ipvs ,如图:
在这里插入图片描述

需要修改的第二个地方为 config.conf 下面 ipvs.strictARP 配置项,大概在44行位置:
在这里插入图片描述

需要将false改为true,修改后的内容:
在这里插入图片描述

执行yaml对象文件

给予官方给出yaml文件,镜像是在国外拉取的,所以速度比较慢。我事先将国外的镜像拉取下来并上传到国内的阿里云上,这里提供两种执行方案:

  • 官方镜像:
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml
  • 国内镜像:
kubectl apply -f https://raw.githubusercontent.com/xiaohh-me/kubernetes-yaml/main/network/metallb/metallb-native-v0.14.8.yaml

为了方便我执行的国内镜像,执行结果如图:
在这里插入图片描述

可执行这行命令查看是否安装完成:

kubectl get all -o wide -n metallb-system

当READY数量对的上和STATUS状态都为Running的时候代表安装完成:
在这里插入图片描述

定义地址池和操作模式

操作模式有两种:

  • BGP operating mode
    • 这种模式需要你的路由器支持BGP协议,因为我的路由器不支持,所以这篇文章就不创建了。如有需要,可参考MetalLB关于BGP的官方文档:https://metallb.universe.tf/configuration/_advanced_bgp_configuration
  • L2 operating mode
  • 这种模式需要确定你的7946端口未被占用并且已被开放访问

在文章的开头,已经规划了 172.18.8.83-172.18.8.89 为IP地址池(需要保证这些IP地址没有且以后也不会被占用),所以我的地址池的yaml文件为(注意修改你自己的IP地址池):

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: default-ip-pool
  namespace: metallb-system
spec:
  addresses:
  - 172.18.8.83-172.18.8.89

然后就是创建L2操作模式了,yaml文件内容为(注意spec.ipAddressPools需要对应你上面这个IP地址池的名字):

apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: default-l2
  namespace: metallb-system
spec:
  ipAddressPools:
  - default-ip-pool

所以我的文件内容为:
在这里插入图片描述

直接执行这个文件可以看到结果:
在这里插入图片描述

可执行这行命令查看是否创建完成:

kubectl get ipaddresspools.metallb.io,l2advertisements.metallb.io -o wide -n metallb-system

创建结果:
在这里插入图片描述

安装Ingress

本次安装的ingress控制器是 Ingress-Nginx Controller ,官方文档地址:https://kubernetes.github.io/ingress-nginx/deploy

安装的yaml文件地址为:https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.2/deploy/static/provider/cloud/deploy.yaml,可执行这行命令来下载这个yaml文件:

curl -LO https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.2/deploy/static/provider/cloud/deploy.yaml

因为镜像是在谷歌上拉取,所以需要使用国内镜像,修改的镜像的镜像:

  • registry.k8s.io/ingress-nginx/controller:v1.11.2 改为 registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/ingress-nginx-controller:v1.11.2
  • registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.3 改为 registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/ingress-nginx-kube-webhook-certgen:v1.4.3

地方一:
在这里插入图片描述

地方二:
在这里插入图片描述

地方三:
在这里插入图片描述

我已经改好了,你可以不用官方的yaml,直接使用我提供的yaml进行安装即可。执行这行命令:

kubectl apply -f https://raw.githubusercontent.com/xiaohh-me/kubernetes-yaml/main/network/ingress/deploy-v1.11.2.yaml

执行结果:
在这里插入图片描述

可执行这行命令检查是否安装成功:

kubectl get all -o wide -n ingress-nginx

执行结果和我的一样就代表安装成功了:
在这里插入图片描述

部署一个应用

接下来需要部署一个应用程序测试一下ingress是否安装成功,执行下面这行命令部署三个副本的nginx:

kubectl create deployment nginx --image=registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/nginx:1.25.5 --port=80 --replicas=3

然后创建一个service来暴露应用,注意创建类型为 ClusterIP 的服务即可,执行这行命令:

kubectl expose deployment nginx --name=nginx --port=80 --target-port=80 --protocol=TCP --type=ClusterIP

可以看到部署成功:
在这里插入图片描述

然后需要创建一个ingress来暴露应用程序:

kubectl create ingress nginx --class=nginx --rule="nginx.greateme.com/*=nginx:80"

注意里面的参数:

  • –class: 使用哪个类型的ingress,可通过这行命令获取已存在的ingressclass:
kubectl get ingressclass

执行完成后可以看到只有一个刚刚安装类型为nginx的ingress:
在这里插入图片描述

  • –rule: 路由规则,格式:域名/*=服务名:端口[,tls=https的secret名字],上面格式代表我的域名为 nginx.greateme.com 我的服务名字为 nginx 我的端口为 80,且不使用https

执行结果:
在这里插入图片描述

执行这行命令查看更详细信息:

kubectl get ingress

执行结果:
在这里插入图片描述

其中 HOSTS 属性是域名,ADDRESS 是IP地址,需要将你的域名解析到该IP地址上(修改hosts文件也行)。执行这行命令查看解析结果:

nslookup 你的域名

执行之后可以发现域名已解析到IP地址:
在这里插入图片描述

然后可以直接访问你的域名,可以看到nginx访问成功:
在这里插入图片描述

好了ingress安装成功,下课!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】Linux介绍及CentOS虚拟机环境搭建

内容大纲介绍 文章目录 内容大纲介绍1.计算机简介2.Linux系统介绍3.虚拟化软件介绍4.Linux环境搭建5.扩展_虚拟机的快照6.Linux的目录介绍 1.计算机简介 概述 全称叫电子计算机, 英文名叫Computer, 俗称叫: 电脑, 简称叫: PC, 就是有硬件和软件组成的电子设备. 组成 计算机硬件…

IO复用-epoll基础

文章目录 IO复用认识epollepoll原理重要结构体 epoll的ET、LTepoll高效的原因epoll需要解决的问题对于使用epoll的建议 IO复用 IO等待拷贝 IO复用是一种通过减少等待时间,来提高IO效率的方式。 其原理是通过同时管理多个IO接口(文件描述符)…

VS2022搭建Linux开发环境

一、VS2022按钮Linux开发组件 双击启动后 选择Linux开发组件 点击修改,开始按钮Linux组件 二、创建新项目 三、远程连接Linux系统 选择工具,点击选项 选择跨平台中的连接管理器,点击添加 配置信息,输入你需要连接到的Linux…

《论面向服务架构设计及其应用》写作框架,软考高级系统架构设计师

论文真题 面向服务架构(Service-Oriented Architecture, SOA) 是一种应用框架,将日常的业务应用划分为单独的业务功能服务和流程,通过采用良好定义的接口和标准协议将这些服务关联起来。通过实施基于SOA的系统架构,用户可以构建、部署和整合服务,无需依赖应用程序及其运…

PyCharm的安装步骤

如何在本机上下载和安装PyCharm,请看以下讲解; 目录 一、下载 二、安装 第 1 步: 第 2 步: 第 3 步: 第 4 步: 第 5 步: 三、配置 第 1 步: 第 2 步: 第 3 步…

基于SpringBoot+Vue+MySQL的实训管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当今信息化高速发展的时代,实训管理系统的建设对于提升教育机构的教学效率、优化资源配置、增强师生互动具有重要意义。本系统基于SpringBoot框架构建后端服务,利用其高效、简洁的特点,快速…

U盘文件及文件夹带锁修复

磁盘管理修复工具Disks磁盘管理–针对U盘文件及文件夹带锁修复 本文章只针对统信系统 文章目录 功能概述一、安装工具二、数据备份三、检查文件系统1. 通过启动栏中的“磁盘”或者桌面的“磁盘”启动文件来启动应用:2. 选择U盘设备3. 点击“检查文件系统”按钮(如果无此按钮…

【计算机毕设-大数据方向】基于大数据的健康美食推荐系统设计与实现

💗博主介绍:✌全平台粉丝5W,高级大厂开发程序员😃,博客之星、掘金/知乎/华为云/阿里云等平台优质作者。 【源码获取】关注并且私信我 【联系方式】👇👇👇最下边👇👇&…

存储卡照片丢失:高效恢复策略与实战指南

一、引言:存储卡照片丢失的烦恼 在数字化时代,存储卡作为便携的数据存储介质,广泛应用于数码相机、智能手机、无人机等各类电子设备中,成为我们记录生活点滴、捕捉美好瞬间的重要工具。然而,随着使用频率的增加&#…

理解BSV的最新节点软件Teranode

​​发表时间:2024年8月27日 随着Teranode的引入,BSV区块链生态系统即将迎来重大变革,这一备受期待的节点升级将彻底改变网络的效率和可扩展性。随着BSV网络实现了百万级TPS的突破性里程碑,对开发者和技术爱好者来说,理…

网络安全宣传周 | 安全防护小贴士,远离网络威胁!

网络安全日益重要 网络环境复杂性增加 威胁种类多样,影响广泛 网络安全防护知识小贴士 简单有效,便于实践 提升自我保护能力,远离网络威胁 一起守护网络安全! 1、安装并配置防火墙 防火墙是网络安全的第一道防线,监控并控制…

知乎广告投放,知乎推广开户费用介绍!

知乎凭借其庞大的用户群体和深厚的社区文化,成为了品牌寻求突破的新阵地。云衔科技,作为业界领先的数字营销解决方案提供商,致力于帮助企业轻松驾驭知乎营销,实现品牌价值的最大化。 一、知乎广告投放的独特优势 知乎用户普遍具…

详解ImageNet著名子数据集ILSVRC2012基于Python的下载、解析及可视化

目录 ImageNet简介WordNet简介ILSVRC2012简介ILSVRC2012下载ILSVRC2012评价指标ILSVRC2012开发套件DevelopmentKit获取Synset的标签描述Python读取及可视化PyTorch读取API基于PyTorch的API接口加载及可视化自定义读取接可视化Python脚本 参考文献 摘要:本篇文档详细…

电子邮件加密软件哪个好用?分享这五款加密工具,防范邮件泄密!2024企业必备!

"密语藏锋刃,安全重于山。" 在数字洪流中,电子邮件是企业沟通的重要桥梁,其安全性不容忽视。 因此,选择一款高效可靠的电子邮件加密软件,是企业保障信息安全的关键。 本文将为您推荐五款2024年企业必备的电…

Kotlin协程之协程的结构化详解

前言 上一篇文章介绍了协程概念的具像化,算是对协程的概念进一步进行加深,本篇文章来看一下协程结构化的概念。 结构化 是协程中一个非常重要且非常实用的一个特性,它可以帮助我们更好的管理协程的生命周期。 如果说 挂起函数 解决了并发任…

今日leetCode 19.删除链表的倒数第N个结点

19. 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1 输出&…

每日OJ_牛客_简单错误记录(文件模拟)

目录 简单错误记录(文件模拟) 解析代码 简单错误记录(文件模拟) 简单错误记录__牛客网 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。 处理: 1、 记录最多8条错误记录&a…

说说精益生产管理咨询公司排名的那些事

面对市场上琳琅满目的精益生产管理咨询公司,企业如何做出明智选择,避免陷入“坑”中,成为了一个值得探讨的话题。本文将从多个维度出发,为大家揭晓精益生产管理咨询公司排名的那些事,助您找到最适合的合作伙伴。 一、认…

日本IT工作内容---一篇梗概

日本IT工作现场是一个充满活力、技术导向且多元化的工作环境。以下是对日本IT工作内容的详细概述: 1. 软件开发(Software Engineering, SE) 主要任务:编写、测试和维护软件,以满足客户需求。这包括使用多种编程语言和…

Tuxera NTFS for Mac破解版下载 Tuxera NTFS for Mac2023激活码 mac电脑ntfs磁盘软件

Tuxera NTFS for Mac是一款优秀的Mac系统完全读写软件,提供Fat32、NTFS、Exfat、mac os扩展格式的转换,稳定性好,传输速度极快。Tuxera NTFS for Mac功能丰富,能修复NTFS卷、创建NTFS磁盘映像、创建NTFS分区等等。同时软件支持所有…