Mar*_*ock 2 kubernetes kubernetes-ingress k3s metallb
我创建了一个 k3s 集群并禁用了服务负载均衡器和 traefik。我通过清单文件安装了 metallb。另外,我为 Metallb 创建了一个名为“config”的 ConfigMap,其中包含地址池,所以我不知道为什么 Metallb 控制器说“没有可用的 ips”。
ubuntu@mark:~$ k describe svc nginx
Name: nginx
Namespace: default
Labels: app=nginx
Annotations: <none>
Selector: app=nginx
Type: LoadBalancer
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.43.29.17
IPs: 10.43.29.17
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 30584/TCP
Endpoints: 10.42.4.4:80
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning AllocationFailed 34s metallb-controller Failed to allocate IP for "default/nginx": no available IPs
Run Code Online (Sandbox Code Playgroud)
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.168.136.206-192.168.136.209
Run Code Online (Sandbox Code Playgroud)
您正在使用 ConfigMap,而在文档中它说在较新的版本中您不应使用它:
以前版本的 MetalLB 可通过 configmap 进行配置。但是,从版本 v0.13.0 开始,只能通过 CR 进行配置。quay.io/metalb/configmaptocrs 下提供了一个将旧配置映射转换为 CR 的工具作为容器映像。
我也在做同样的事情,我有一个旧的存储库,我在其中使用了 ConfigMap,所以我决定重用它,但我阅读了文档并按照 MetalLB 网站的说明进行操作。
从安装中我执行了以下命令:
kubectl edit configmap -n kube-system kube-proxy
# see what changes would be made, returns nonzero returncode if different
kubectl get configmap kube-proxy -n kube-system -o yaml | \
sed -e "s/strictARP: false/strictARP: true/" | \
kubectl diff -f - -n kube-system
# actually apply the changes, returns nonzero returncode on errors only
kubectl get configmap kube-proxy -n kube-system -o yaml | \
sed -e "s/strictARP: false/strictARP: true/" | \
kubectl apply -f - -n kube-system
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.9/config/manifests/metallb-native.yaml
Run Code Online (Sandbox Code Playgroud)
,然后从配置中选择第 2 层配置设置。在 file.yaml 中添加以下代码:
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: first-pool
namespace: metallb-system
spec:
addresses:
- 192.168.1.240-192.168.1.250
Run Code Online (Sandbox Code Playgroud)
,然后使用 kubectl 应用它
kubectl apply -f file.yaml
Run Code Online (Sandbox Code Playgroud)
之后一切都很顺利。希望这个答案对那些使用旧方法的人有所帮助,如果我误解了,请纠正我。
小智 5
安装最新的稳定版本:
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.9/config/manifests/metallb-native.yaml
Run Code Online (Sandbox Code Playgroud)
定义IP地址池
---
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: nat
namespace: metallb-system
spec:
addresses:
- 192.168.136.206-192.168.136.209
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: empty
namespace: metallb-system
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4924 次 |
最近记录: |