目前在 Ubuntu Server 20 LTS 上运行全新的“多合一 VM”(堆叠的主/从方法)kubernetes v1.21.1-00
,使用
- cri-o 作为容器运行时接口
- calico 用于网络/安全
还安装了 kubernetes-dashboard(但我想这对我的问题并不重要?)。使用本指南安装大使:https ://www.getambassador.io/docs/edge-stack/latest/topics/install/yaml-install/我遇到了服务卡在“待定”状态的问题。
kubectl get svc -n ambassador
打印出以下内容
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ambassador LoadBalancer 10.97.117.249 <pending> 80:30925/TCP,443:32259/TCP 5h
ambassador-admin ClusterIP 10.101.161.169 <none> 8877/TCP,8005/TCP 5h
ambassador-redis ClusterIP 10.110.32.231 <none> 6379/TCP 5h
quote ClusterIP 10.104.150.137 <none> 80/TCP 5h
虽然将服务中的type
fromLoadBalancer
更改为NodePort
正确设置,但我不确定随之而来的影响。同样,我想在这里使用大使作为入口组件 - 使用我的设置(只有一台机器),可能不需要“真正的”负载平衡。
为了覆盖所有子域内容,我设置了一个通配符记录以指向我的机器,这意味着我有一个*.k8s.my-domain.com
指向该主机的 CNAME。不知道,这种方法对于设置入口是否那么聪明。
当您更改为时,它会获取 IP 地址
type
,NodePort
因为它使用节点的 IP 地址。它不能这样做,LoadBalancer
因为您在 VM 上运行 kubernetes 集群并且它没有任何LoadBalancers
可用的。教程是为minikube
或云用户设计的。在这里你可以看到它:kubeadm
我还在我的虚拟机上设置的集群上复制了这个。kubectl get services -n ambassador
可以帮助您的最简单的解决方案之一是使用
metal load balancer
. 这是专门为裸机集群设计的,为它们提供负载平衡能力。这是安装链接
metallb
。请记住:
下一部分是设置一个ConfigMap。为此,您需要使用要使用的适当协议创建一个 ConfigMap。我使用了一个简单的
layer 2
配置:metallb-configmap.yaml
并将其与
kubectl apply -f metallb-configmap.yaml
.我这样做后,大使服务立即收到了 IP 地址:
简单的测试与
curl 192.168.1.241
作品!如果您对不起作用有任何疑问
ingress
,请考虑在不同的问题中提出此问题。查看堆栈社区的最佳实践。