这个问题之前发布。正如社区成员所建议的,在这里提问应该更合适。

我正在学习 metallb 负载均衡器对象,我有一个基本的 nginx pod,我想通过 ip 地址访问它。使用 k3d,我通过执行来启动一个新的集群k3d cluster create ing3 --no-lb。然后我metallb通过应用安装文档中指示的清单进行安装:

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

然后我通过应用以下清单IPAddressPool安装了一个:L2Advertisement

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: metallb-pool
  namespace: metallb-system
spec:
  addresses:
    - 172.20.0.140-172.20.0.160
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: l2adv
  namespace: metallb-system
spec:
  ipAddressPools:
    - metallb-pool

我通过应用以下清单安装了提到的 nginx:

apiVersion: v1
kind: Namespace
metadata:
  name: dummy-nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: dummy-nginx
  labels:
    app.kubernetes.io/name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app.kubernetes.io/name: nginx
  template:
    metadata:
      labels:
        app.kubernetes.io/name: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - name: http
              containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: dummy-nginx-srv
  namespace: dummy-nginx
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: nginx
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80

然后添加LoadBalancer对象:

apiVersion: v1
kind: Service
metadata:
  name: dummy-lb-test
  labels:
    app.kubernetes.io/name: nginx
spec:
  selector:
    app.kubernetes.io/name: nginx
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: 80
  type: LoadBalancer

将该内容应用到与 nginx 相同的命名空间dummy-nginx。安装过程中我没有看到任何错误,所以我认为一切都已准备就绪,dummy-nginx命名空间中的服务具有172.20.0.141与 IP 池相对应的外部 IP,并且我可以在端口转发时访问 nginx。但是curl 172.20.0.141我无法访问 nginx 服务,我遗漏了什么?

0