k8s中MetalLB的使用

1.官方链接
https://metallb.universe.tf/concepts/

操作步骤

step 1 安装MetalLB
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.12.1/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.12.1/manifests/metallb.yaml
step 2 配置config, 以layer2协议为例

config.yaml的内容如下:

apiVersion: v1
kind: ConfigMap
metadata:namespace: metallb-systemname: config
data:config: |address-pools:- name: dev-public-ipsprotocol: layer2addresses:- 10.0.2.100-10.0.2.200

其中,dev-public-ips为自定义名称,后面会用到addresses为自定义地址池

step 3 以nginx为例

(1) Deployment
nginx-deployment.yaml 的内容如下

root@unode1:~/metallb/example# cat nginx-deployment.yaml 
apiVersion: apps/v1
kind: Deployment      
metadata:
name: pc-deployment
namespace: dev
spec: 
replicas: 3
selector:matchLabels:app: nginx-pod
template:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.1ports:- containerPort: 80

应用Deployment该文件
kubectl apply -f nginx-deployment.yaml
(2) Service

root@unode1:~/metallb/example# cat service-metallb.yaml 
apiVersion: v1
kind: Service
metadata:name: nginxnamespace: devannotations:metallb.universe.tf/address-pool: dev-public-ips  #注意,dev-public-ips为config.yaml地址池的名称
spec:ports:- port: 81   #external ip的端口targetPort: 80 # 内部容器端口selector:app: nginx-podtype: LoadBalancer

应用Service文件
kubectl apply -f service-metallb.yaml
(3)参看Service

root@unode1:~/metallb/example# kubectl get svc -n dev
NAME    TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
nginx   LoadBalancer   10.109.79.140   10.0.2.101    81:30182/TCP   14h

其中81EXTERNAL-IP的端口, 30182为node端口, 访问测试如下:
测试1

root@unode1:~/metallb/example# curl 10.0.2.101:81
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>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 and
working. 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>

测试2

root@unode1:~/metallb/example# curl 10.0.2.4:30182  #10.0.2.4为node的ip
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>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 and
working. 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>


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部