接着上文,排除故障后,我重新配置了metallb组件到k8s环境。

metallb为k8s service 的loadbalance负载方式提供免费的解决方案。

external-ip的收费方案,可以选择GRE或Azure,或其他国内云商LB方案。

以下是详细安装和配置步骤:

step 1:
root >> kubectl apply -f \
root >> kubectl get all -n metallb-system

step 2:
# 生成一个configmap,
# 注意:这里的 IP 地址范围需要跟集群实际情况相对应。
root >> kubectl apply -f - << EOF
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
peers:
# Cosmetic edit to make MetalLB notice that this is a new config.
- my-asn: 64512
peer-asn: 64512
peer-address: 10.4.0.100
- my-asn: 64512
peer-asn: 64512
peer-address: 10.4.0.101
- my-asn: 64512
peer-asn: 64512
peer-address: 10.4.0.102
address-pools:
- name: my-ip-space
protocol: bgp
avoid-buggy-ips: true
addresses:
- 10.5.0.0/24 # 或者限制IP池的范围,如下 kubectl apply -f - << EOF
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: my-ip-space
      protocol: bgp
      avoid-buggy-ips: true
      addresses:
      - 10.5.0.10-10.5.10.250

# 执行完毕如下图

# 然后,我们在k8s物理机器的外网(比如我这里一台客户机192.168.3.XX),访问上面configmap的四个IP
<1> IP_1 = 10.4.0.100 / 10.4.0.101 / 10.4.0.101
<2> IP_2 = 10.5.0.0/24 ==> 10.5.0.1 (也可以通过查询k8s service得到, kubectl get service --all-namespaces -o wide。)
root >> ping 10.4.0.100 -c 3
root >> ping 10.4.0.101 -c 3
root >> ping 10.4.0.102 -c 3
root >> ping 10.5.0.1 -c 3
step 3:
# 查看配置过程
# pod名称,来自step 1查询pod结果
root >> kubectl get all -n metallb-system
root >> kubectl logs -f controller-5f898b44f4-4pkk6 -n metallb-system
 
step 4:
# 创建一个私有loadbalance provider的nginx服务和部署,如下
root >> kubectl apply -f - << EOF
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-lb
namespace: app
spec:
selector:
matchLabels:
app: nginx-lb
replicas: 1
template:
metadata:
labels:
app: nginx-lb
spec:
containers:
- name: nginx-lb
image: nginx:1.7.9
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-lb
namespace: app
spec:
type: LoadBalancer
ports:
- port: 8090
targetPort: 80
selector:
app: nginx-lb

step 5
# 查看创建后的结果,如下图
root >> kubectl get all -n app -o wide
# 测试一下nginx-lb的service,通过如下两个地址
<1> cluster_ip : service_port
root >> curl http://10.3.48.227:8090

 
<2> external_ip : service_port
root >> curl http://10.5.0.10:8090

# 集群外部,设置一下网卡可以访问网关10.5.0.1,则就可以打开nginx-lb服务如下
 

最新文章

  1. 4.修改更新源sources.list,提高软件下载安装速度(提供Kali 2.0 更新源)
  2. SmartAssembly使用失败记录
  3. mysql 删除时候有外键提示问题解决
  4. System.Data.SqlClient.SqlError: FILESTREAM 功能被禁用&rdquo;的错误
  5. APICloud:轻松6步完成App软件开发
  6. 亿级Web系统的高容错性实践
  7. 传递消息--第三方开源--EventBus的简单使用
  8. 常用ARM汇编指令
  9. oracle 树形SQL
  10. BZOJ 3166 Alo
  11. 常用后台frame框架
  12. 暴力或随机-hdu-4712-Hamming Distance
  13. Python之旅本地环境搭建
  14. parcel 在js中导入 html 文件
  15. java下载Excel模板(工具类)
  16. linux下测试磁盘的读写IO速度-简易方法
  17. MyEclipse中设置jsp页面为默认utf-8编码
  18. windows提权的几种姿势
  19. [HDU6155]Subsequence Count
  20. 【Linux】 ftp 主动被动模式

热门文章

  1. [Python] Tkinter的食用方法_02_LabelFrame RadioButton CheckButton
  2. appium常用的类库、对应的方法和属性
  3. 【转载】 BIOS设置选项详细解释——CPU核心篇
  4. Spring的简单介绍
  5. Educational Codeforces Round 75 (Rated for Div. 2)D(二分)
  6. Draw.io--自认为最好用的流程图绘制软件
  7. HeroM2连击技能设置和DB完整数据
  8. http的长连接和短连接(史上最通俗!)
  9. 「BJWC2010」模板严格次小生成树
  10. 网络基础:ARP 协议、IP协议、路由协议 均属于网络层协议