当前位置: 首页 > news >正文

Kubernetes Service 之 LoadBalancer

Kubernetes 之 LoadBalancer

定义

负载均衡器 (LoadBalancer) 是 Kubernetes 中用来对外暴露 Service 服务的,它可以将服务集中到一个公共 IP 上。我们常用 MetalLB 作为自建均衡器。

使用

安装 MetalLB

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.7/config/manifests/metallb-native.yaml

配置 ARP IP 池

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:name: first-poolnamespace: metallb-system
spec:addresses:- 192.168.31.70-192.168.31.90
kubectl apply -f metalb-ips.yml

导入新镜像statis-web-1.0.90.tar

ctr -n=k8s.io images import static-web-1.0.90.tar
// go 语言编写的 web static 镜像代码
package mainimport ("fmt""net/http""os"
)func main() {htmlContent := os.Getenv("HTML_BODY_CONTENT")if htmlContent == "" {htmlContent = "<html><body><h1>No Content Set</h1></body></html>"} else {htmlContent = "<html><body><h1>" + htmlContent + "</h1></body></html>"}http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {_, _ = fmt.Fprint(w, htmlContent)})port := ":80"fmt.Printf("Server is listening on port %s\n", port)err := http.ListenAndServe(port, nil)if err != nil {fmt.Printf("Error starting server: %v\n", err)}
}

创建测试 Deployment 和 Service

apiVersion: apps/v1
kind: Deployment
metadata:name: deployment-web-staticnamespace: defaultlabels:app: deployment-web-static
spec:replicas: 2selector:matchLabels:app: pod-web-statictemplate:metadata:labels:app: pod-web-staticspec:containers:- name: web-staticimage: static-web:1.0.90imagePullPolicy: IfNotPresentports:- containerPort: 80env:- name: HTML_BODY_CONTENTvalue: "This is a test"
---
apiVersion: v1
kind: Service
metadata:name: service-static-webnamespace: defaultlabels:app: service-static-web
spec:type: LoadBalancerports:- port: 80protocol: TCPtargetPort: 80selector:app: pod-web-static

测试

root@k8s-master1:~# kubectl get service
NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
kubernetes           ClusterIP      10.96.0.1       <none>          443/TCP        67d
service-static-web   LoadBalancer   10.102.54.255   192.168.31.70   80:30487/TCP   3m13s
root@k8s-master1:~# curl 192.168.31.70
<html><body><h1>This is a test</h1></body></html>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Proxyman for Mac v5.6.1 抓包调试工具
  • 【Qt+opencv】计时函数与图像变换
  • AGI 之 【Hugging Face】 的【零样本和少样本学习】之三 [无标注数据] 的简单整理
  • 设计模式七大原则(五)迪米特法则
  • FPGA 中的 IOE与IO BANK
  • Windows环境Apache配置解析PHP,以及配置虚拟主机详解
  • springSecurity学习之springSecurity简介
  • 贝锐蒲公英远程运维方案:即装即用、无需专线,断网也可远程维护
  • Linux系统学习日记——vim操作手册
  • 网络安全防御 -- 双机热备和带宽管理综合实验
  • 【iOS】——消息传递底层实现
  • 10:00面试,10:08就出来了,问的问题有点变态。。。
  • 简单工厂模式、工厂模式和抽象工厂模式的区别
  • 【Mamba】Mamba的部署
  • 2024年计算机软考中级【硬件工程师】面试题目汇总(附答案)
  • Angular2开发踩坑系列-生产环境编译
  • FineReport中如何实现自动滚屏效果
  • go append函数以及写入
  • spring security oauth2 password授权模式
  • Spring声明式事务管理之一:五大属性分析
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Yeoman_Bower_Grunt
  • 从零开始的无人驾驶 1
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 近期前端发展计划
  • 通信类
  • 小程序01:wepy框架整合iview webapp UI
  • 交换综合实验一
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # linux 中使用 visudo 命令,怎么保存退出?
  • (2)leetcode 234.回文链表 141.环形链表
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (js)循环条件满足时终止循环
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (SpringBoot)第七章:SpringBoot日志文件
  • (多级缓存)缓存同步
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (七)c52学习之旅-中断
  • (十)Flink Table API 和 SQL 基本概念
  • (转载)利用webkit抓取动态网页和链接
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .bat批处理(一):@echo off
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • :“Failed to access IIS metabase”解决方法
  • [ SNOI 2013 ] Quare
  • [.NET]桃源网络硬盘 v7.4
  • [1]从概念到实践:电商智能助手在AI Agent技术驱动下的落地实战案例深度剖析(AI Agent技术打造个性化、智能化的用户助手)
  • [20150629]简单的加密连接.txt
  • [240903] Qwen2-VL: 更清晰地看世界 | Elasticsearch 再次拥抱开源!
  • [Gradle] 在 Eclipse 下利用 gradle 构建系统
  • [IE编程] 如何在IE8 下调试BHO控件/工具栏(调试Tab进程)