gpt4 book ai didi

nginx - Kubernetes MetalLB 外部 IP 无法访问

转载 作者:行者123 更新时间:2023-12-03 14:42:40 55 4
gpt4 key购买 nike

我无法访问 MetalLB 负载均衡器分配的网络 IP

我在 k3s 中创建了一个 Kubernetes 集群。它的1个主人和1个 worker 。每个人都有自己的私有(private) IP。

大师 192.168.0.13
worker 192.168.0.13
我用 INSTALL_K3S_EXEC=" --no-deploy servicelb --no-deploy traefik" 安装了 k3s

现在我正在尝试使用 MetalLB 和 nginx 入口部署应用程序

  --set configInline.address-pools[0].name=default \
--set configInline.address-pools[0].protocol=layer2 \
--set configInline.address-pools[0].addresses[0]=192.168.0.21-192.168.0.30
helm install nginx-ingress stable/nginx-ingress --namespace kube-system \
--set controller.image.repository=quay.io/kubernetes-ingress-controller/nginx-ingress-controller\
--set controller.image.tag=0.30.0 \
--set controller.image.runAsUser=33 \
--set defaultBackend.enabled=false

我可以看到每个 pod 都在运行
NAME                                             READY   STATUS    RESTARTS   AGE    IP             NODE             NOMINATED NODE   READINESS GATES
coredns-d798c9dd-lsdnp 1/1 Running 5 37h 10.42.0.25 c271-k3s-ocrh <none> <none>
local-path-provisioner-58fb86bdfd-bcpl7 1/1 Running 5 37h 10.42.0.22 c271-k3s-ocrh <none> <none>
metrics-server-6d684c7b5-v9tmh 1/1 Running 5 37h 10.42.0.24 c271-k3s-ocrh <none> <none>
metallb-speaker-4kbmw 1/1 Running 0 4m7s 192.168.0.14 c271-k3s-agent <none> <none>
metallb-controller-75bf779d4f-nb47l 1/1 Running 0 4m7s 10.42.1.45 c271-k3s-agent <none> <none>
metallb-speaker-776p9 1/1 Running 0 4m7s 192.168.0.13 c271-k3s-ocrh <none> <none>
nginx-ingress-default-backend-5b967cf596-554bq 1/1 Running 0 98s 10.42.1.46 c271-k3s-agent <none> <none>
nginx-ingress-controller-674675d5b6-blndp 1/1 Running 0 98s 10.42.1.47 c271-k3s-agent <none> <none>

应用获取IP 192.168.0.21
❯ kubectl get services  -n kube-system -l app=nginx-ingress -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
nginx-ingress-default-backend ClusterIP 10.43.170.195 <none> 80/TCP 112s app=nginx-ingress,component=default-backend,release=nginx-ingress
nginx-ingress-controller LoadBalancer 10.43.220.166 192.168.0.21 80:31735/TCP,443:31566/TCP 111s app=nginx-ingress,component=controller,release=nginx-ingress

我可以通过 curl 到 nginx Controller pod 从 master 和 worker 访问应用程序
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Sat, 21 Mar 2020 10:43:34 GMT
Content-Type: text/html
Content-Length: 153
Connection: keep-alive

但是无法从本地 192.168.0.21 访问 IP

诊断:DHCP 开启,192.168.0.21-192.168.0.30 完全免费。,当我尝试通过 netplan config 将 192.168.0.21 分配给 master 或 agent 时,他们得到了 IP。

请指导我,我错过了什么。

最佳答案

您需要确保保留源 IP 地址(由 metallb 分配的外部 IP)。为此,设置 externalTrafficPolicy 的值 的字段入口 Controller 服务规范到 Local .例如

apiVersion: v1
kind: Service
metadata:
name: my-app
labels:
helm.sh/chart: webapp-0.1.0
app.kubernetes.io/name: webapp
app.kubernetes.io/instance: my-app
app.kubernetes.io/version: "1.16.0"
app.kubernetes.io/managed-by: Helm
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: webapp
app.kubernetes.io/instance: my-app
externalTrafficPolicy: Local
externalTrafficPolicy 字段的默认值为“Cluster”。所以改成 本地

关于nginx - Kubernetes MetalLB 外部 IP 无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60786874/

55 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com