这个问题之前发布。正如社区成员所建议的,在这里提问应该更合适。
我正在学习 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 服务,我遗漏了什么?
|