![prem 上的 kubernates 502 网关错误](https://linux22.com/image/760786/prem%20%E4%B8%8A%E7%9A%84%20kubernates%20502%20%E7%BD%91%E5%85%B3%E9%94%99%E8%AF%AF.png)
你好,我已经安装并配置了 kubernates,我已经尝试了 minikube 和 kubeadm,我已经安装了:flannel、nginx-ingress-controller、metalLB,然后将 ngix-ingress-controller 服务设置为 loadBalancer
当我尝试公开一个简单的 wordpress 应用程序(使用 clusterIp 甚至 nodePort)时,我总是得到 502 bad gateway
操作系统:ubuntu 20.04 LTS 安装了 docker-ce、kubeadm 和 kubelt(kubernates 官方站点教程)
安装程序我已经关注:Kube init:
kubeadm init --pod-network-cidr=10.244.0.0/16
kubectl taint nodes --all node-role.kubernetes.io/master-
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
绒布:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
nginx
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/deploy.yaml
metallb:遵循现场教程
我尝试将 ingress-nginx-controller 服务更改为 LoadBalancer 并添加 externalIP,但没有任何变化
这是我的 yaml: 服务
apiVersion: v1
kind: Service
metadata:
labels:
appcluster: kubernetes
app: wordpress
name: wordpress-service
spec:
ports:
- port: 80
targetPort: 80
name: http-port
selector:
app: wordpress
type: ClusterIP
入口
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: wordpress-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: ethernial.com
http:
paths:
- path: /?(.*)
backend:
serviceName: wordpress-service
servicePort: 80
答案1
感谢@Jakub,我错过了配置 metalLB(创建配置图),然后我已将 ingress-nginx-controller 设置为 loadBalancer 完美运行
答案2
只是为了澄清这里出了什么问题。
正如 MetalLB 中提到的文档:
MetalLB 保持空闲状态直至配置完成。这是通过创建配置映射并将其部署到与部署相同的命名空间 (metallb-system) 中来实现的。
有一个例子第 2 层配置。
第 2 层模式是配置最简单的:在许多情况下,您不需要任何特定于协议的配置,只需要 IP 地址。
第 2 层模式不需要将 IP 绑定到工作节点的网络接口。它通过直接响应本地网络上的 ARP 请求来工作,从而将机器的 MAC 地址提供给客户端。
例如以下配置让 MetalLB 控制从 192.168.1.240 到 192.168.1.250 的 IP,并配置第 2 层模式:
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
此外还有很棒的教程中等的它解释了如何在 minikube 上从头开始进行设置。
MetalLB 包含两条信息:协议和 IP 地址范围。在此配置中,MetalLB 被指示从 192.168.99.95/105 分发地址,这是我们针对节点 IP 的预定义范围。在我们的例子中,为了获取 minikube 的 IP,我们使用 minikube ip 命令并在配置文件中相应地设置范围。