k8s学习: 使用 MetalLB 给测试环境配置LoadBalancer 服务
学习 Ingress ,推荐使用 LoadBalancer 方式
虽然 NodePort 方式是可以的,但是,理解起来费劲,何况 NodePort 并不适合用于生产环境!
但是,普通学习环境是不支持 LoadBalancer 的 !
幸好有个开源的 MetalLB 可以提供裸机测试环境下 LoadBalancer 支持
重点是为了下一步学习 Ingress ,所以,简单学会 Layer 2 方式, BGP 方式以后再说
METALLB官网
安装
MetalLB 安装文档
官方文档安装方式很完整!
Helm 方式安装
我先使用 Helm 安装上了(确实简单),但是,他那个 value.yaml 配置的 192.168.1.0/24 ,第一个测试例子直接分配到 192.168.1.1 ,这个和我的网关地址一样!
Helm uninstall ,修改了 value.yaml 之后,再安装却死活找不到了# helm install metallb metallb/metallb -f values.yamlError: INSTALLATION FAILED: failed to download "metallb/metallb"
只好改用 Manifest 文件方式
先下载他的 2 个文件,检查一下里面有没有被墙的 image
wget https://raw.githubusercontent.com/metallb/metallb/v0.11.0/manifests/namespace.yaml --no-check-certificate
wget https://raw.githubusercontent.com/metallb/metallb/v0.11.0/manifests/metallb.yaml --no-check-certificate
里面的 image: quay.io/metallb/controller:v0.11.0
这个 quay.io 好像没有被墙,无需替换镜像源了,可以直接 pull!拿不准的话,可以试试 https://quay.io/ 能不能访问
文档比较害人
The installation manifest does not include a configuration file. MetalLB’s components will still start, but will remain idle until you define and deploy a configmap.意思是前面 2 个 apply 之后,还需要配置之后才能 running!
初学时,一旦看到 Pending 或者 err ,就茫然了,踩过一次坑之后才能学会!准备好config 文件
config 文件样本在这里 MetalLB Config配置 文档所以,最好准备好这 3 个文件之后,再继续
[root@centos7-188 metaLB]# lsconfig.yaml metallb.yaml namespace.yaml value.yaml
依次 apply
kubectl apply -f namespace.yaml kubectl apply -f config.yamlkubectl apply -f metallb.yaml
检查所有 metallb-system 的 pod 和 svc 都 running
kubectl get pods -A
…kubectl get pods -n metallb-system
NAME READY STATUS RESTARTS AGEcontroller-7dcc8764f4-4dv8d 1/1 Running 0 82mspeaker-glv2l 1/1 Running 0 82mspeaker-kcnp4 1/1 Running 0 82mspeaker-vr5mm 1/1 Running 0 82m
测试
找个简单的 nginx 试试,Service 方式改成 LoadBalancer
[root@centos7-188 nginx]# cat demo1.yaml
apiVersion: v1kind: Servicemetadata:name: demo1namespace: defaultlabels:app: demo1spec:type: LoadBalancerports:- port: 80targetPort: httpprotocol: TCPname: httpselector:app: demo1---apiVersion: apps/v1kind: Deploymentmetadata:name: demo1-deploymentnamespace: defaultlabels:app: demo1spec:replicas: 2selector:matchLabels:app: demo1template:metadata:labels:app: demo1spec:containers:- name: demo1image: nginxports:- name: httpcontainerPort: 80protocol: TCP
kubectl apply -f demo1.yaml
检查 pod 和 svc
kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGEdefault demo-654c477f6d-m2m8r 1/1 Running 0 68mdefault demo1-deployment-796f585477-bzltz 1/1 Running 0 85mdefault demo1-deployment-796f585477-w5qgz 1/1 Running 0 85m...
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEdemo ClusterIP 10.109.183.133 <none> 80/TCP 68mdemo1 LoadBalancer 10.103.89.77 192.168.1.240 80:31590/TCP 86mkubernetes ClusterIP 10.96.0.1 <none> 443/TCP 125m
测试一下
cluster 内访问,curl 10.103.89.77
cluster 外访问,curl 192.168.1.240效果是一样的!不再需要 暴露 nodePort ,也不再需要 proxy !
metalLB 对外提供了一个统一的地址:192.168.1.240<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>html { color-scheme: light dark; }body { width: 35em; margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif; }</style></head><body><h1>Welcome to nginx!</h1><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>
k8s学习: 使用 MetalLB 给测试环境配置LoadBalancer 服务相关推荐
- Windows驱动开发学习笔记(一)—— 环境配置第一个驱动程序
Windows驱动开发学习笔记(一)-- 环境配置&第一个驱动程序 环境配置 第一个驱动程序 环境配置 安装VS2010:https://pan.baidu.com/s/1uZWWxCtB60 ...
- Linux+javaEE学习笔记之Linux网络环境配置
Linux+javaEE学习笔记之Linux网络环境配置 网络知识简单介绍: Ip地址是:IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物 ...
- Kotlin学习笔记(1)- 环境配置
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...
- youcans 的 OpenCV 学习课—1.安装与环境配置
youcans 的 OpenCV 学习课-1.安装与环境配置 作者: youcans@xupt 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. 什么叫从零开始?从软件安装. ...
- lex编译dos命令_Lex与Yacc学习(一)之环境配置篇
Abstract 在开发程序的过程中经常会遇到文本解析的问题,例如:解析 C 语言源程序,编写 脚本引擎等等,解决这种文本解析的方法有很多,一种方法就是自己手动用 C 或者 C++直接编写解析程序,这 ...
- CososJS学习笔记(1) 环境配置(填坑版,让你少走弯路!)
这段时间比较了国外的phaser.pixi.create等h5游戏框架以及国内的egret.cocosjs之后,最后还是决定使用cocosjs进行h5游戏的开发. 先简单地说一下个人的观点:首先pix ...
- Android官方开发文档Training系列课程中文版:Activity测试之测试环境配置
原文地址:http://android.xsoftlab.net/training/activity-testing/index.html 引言 开发者应当将测试作为应用开发周期的一部分.良好的测试用 ...
- Linux 内核实验室 —— 基于 Docker/Qemu 的极速 Linux 内核学习、开发和测试环境
介绍: 项目简介 本项目致力于创建一个基于 Docker + QEMU 的 Linux 实验环境,方便大家学习.开发和测试 Linux 内核. Linux Lab 是一个开源软件,不提供任何保证,请自 ...
- 深度学习装机、系统、环境配置指南--预算15000
随着要处理的任务越来越复杂,对计算能力要求越来越高,所以最近萌生了要自己配一台深度学习主机的想法.只是苦于一直没有钱==然后很幸运的被评上了国奖,果断入手!!!!然后就是历时一周的各种查资料看博客上京 ...
- Android测试环境配置
测试是软件开发中非常重要的一部分,Android中是使用junit测试框架,本文使用的是junit4和Android Studio.Android测试主要分两类本地测试和Instrumented测试, ...
最新文章
- KeyDown、KeyPress和KeyUp事件的区别与联系
- 【云中沙箱】视频直播技术浅析与实践!
- python最好的教程_喜大普奔~可能是最好的Python教程
- 非网络引用element-ui css导致图标无法正常显示的解决办法
- 静态代码检查工具简介
- HUT-1694 零用钱 贪心
- matlab怎么设clim,Python Matplotlib.pyplot.clim()用法及代码示例
- 系统学习NLP(二十四)--详解Transformer (Attention Is All You Need)
- 使用原生js得到页面相关的正确参数
- 如何在ADO中使用数据读取器(DataReader)读取数据
- I.MX6 linux kernel编译错误处理
- (转)人工智能的钟摆
- 一个基于SpringBoot的在线教育系统「源码开源」
- Pulling without specifying how to reconcile divergent branches is hint: discouraged. You can squelch
- Ajax的回调函数(callback)
- linux shell 加密shc,使用shc工具加密shell脚本详解
- 三级管输入输出特性曲线的分析
- 没牙仔的世界(C++)
- Shell脚本变量学习_02
- 小米(社招)测试开发面经-小米手机管家