我已按照 metallb 网站上的安装步骤进行操作。
并且 metallb 容器也正在运行。
之后,我部署了一个 nginx 服务进行测试,并将服务作为 LoadBalancer。LoadBalancer 没有从 metallb 获取 IP。
对于如何解决这个问题,有任何的建议吗?
答案1
由于我无法写评论,因此将在这里添加所有详细信息和路径。
我用了下一页用于设置 Metal 负载均衡器。
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.6/manifests/namespace.yaml
kubectl apply -f
https://raw.githubusercontent.com/metallb/metallb/v0.9.6/manifests/metallb.yaml
# On first install only
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
您可以通过运行以下命令来验证安装:
kubectl get all -n metallb-system
NAME READY STATUS RESTARTS AGE
pod/controller-64f86798cc-cfb5t 1/1 Running 0 8m35s
pod/speaker-8vwhc 1/1 Running 0 8m35s
pod/speaker-zs8zk 1/1 Running 0 8m35s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/speaker 2 2 2 2 2 kubernetes.io/os=linux 8m35s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/controller 1/1 1 1 8m35s
NAME DESIRED CURRENT READY AGE
replicaset.apps/controller-64f86798cc 1 1 1 8m35s
文档说:
安装清单不包含配置文件。MetalLB 的组件仍将启动,但将保持空闲状态,直到您定义并部署配置映射
所以我们去与设置 configmap 相关的页面,我使用了简单的第 2 层配置,并创建了一个 metallb-configmap.yaml 文件:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.168.1.240-192.168.1.250
完成后,您需要应用此配置图:
kubectl apply -f metallb-configmap.yaml
然后是使用 nginx 部署的简单示例:
kubectl create deploy nginx --image=nginx --replicas=1
服务:
kubectl expose deploy nginx --port=80 --type=LoadBalancer
并检查是否收到外部 IP 地址:
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx LoadBalancer 10.101.83.208 192.168.1.241 80:31836/TCP 8m44s
检查这个是否有效:
curl -L 192.168.1.241
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
如果您有不同的结果请告诉我。