v1.21.1-00
目前在 Ubuntu Server 20 LTS 上运行全新的“一体化虚拟机”(堆叠主/工作器方法)kubernetes ,使用
- cri-o 作为容器运行时接口
- calico 用于网络/安全
还安装了 kubernetes-dashboard(但我想这对我的问题并不重要
答案1
type
当您更改为时,它会获取 IP 地址,NodePort
因为它使用节点的 IP 地址。它无法执行此操作,LoadBalancer
因为您正在 VM 上运行 kubernetes 集群,并且它没有任何LoadBalancers
可用资源。本教程专为云用户设计minikube
。您可以在此处查看:
注意:如果您是 Minikube 用户,Minikube 本身不支持负载均衡器。请改用 minikube 服务列表
我也在我的虚拟机上设置的集群上重现了这个问题kubeadm
。
kubectl get services -n ambassador
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ambassador LoadBalancer 10.105.124.148 <pending> 80:30000/TCP,443:31375/TCP 1m15s
ambassador-admin ClusterIP 10.101.160.245 <none> 8877/TCP,8005/TCP 1m15s
ambassador-redis ClusterIP 10.110.123.244 <none> 6379/TCP 1m15s
可以帮助您的最简单的解决方案之一是使用metal load balancer
。它专为裸机集群设计,以使其具有负载平衡能力。
这是一个关联安装metallb
。
请记住:
安装清单不包含配置文件。MetalLB 的组件仍将启动,但将保持空闲状态,直到您定义并部署配置映射。
下一步是设置配置图。为此,您需要创建一个具有要使用的适当协议的 ConfigMap。我使用了一个简单的layer 2
配置:
metallb-配置图.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
。
我这样做之后,大使服务立即收到了 IP 地址:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ambassador LoadBalancer 10.105.124.148 192.168.1.241 80:30000/TCP,443:31375/TCP 4m2s
ambassador-admin ClusterIP 10.101.160.245 <none> 8877/TCP,8005/TCP 4m2s
ambassador-redis ClusterIP 10.110.123.244 <none> 6379/TCP 4m2s
简单测试,curl 192.168.1.241
有效!
如果您对不起作用有任何疑问ingress
,请考虑在另一个问题中提问。请参阅Stack 社区的最佳实践。