我在 Ubuntu VM(Digital Ocean)上安装了 Minikube 实例。我还为我的部署配置了入口,但是当我卷曲主机名时,出现错误:
curl myserver.xyz
curl: (7) Failed to connect to myserver.xyz port 80: Connection refused
我的部署:
apiVersion: v1
kind: Service
metadata:
name: echo2
spec:
ports:
- port: 80
targetPort: 5678
selector:
app: echo2
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: echo2
spec:
selector:
matchLabels:
app: echo2
replicas: 1
template:
metadata:
labels:
app: echo2
spec:
containers:
- name: echo2
image: hashicorp/http-echo
args:
- "-text=echo2"
ports:
- containerPort: 5678
以及入口资源(部署在同一命名空间中):
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: echo-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: myserver.xyz
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: echo1
port:
number: 80
我的入口是使用以下方式部署的:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/do/deploy.yaml
到目前为止我已经尝试过的 --> 1. 将 nginx 服务更改为 LoadBalancer :
kubectl patch svc ingress-nginx-controller -n ingress-nginx -p '{"spec": {"type": "LoadBalancer", "externalIPs":["146.190.XXX.XXX"]}}'
检查入口状态
kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
echo-ingress <none> myserver.xyz 192.168.XX.X 80 2d9h
example-ingress nginx hello-world.info 192.168.XX.X 80 61d
检查服务状态
kubectl get svc --namespace=ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.108.xxx.XXX 146.190.XXX.XXX
80:317XX/TCP,443:320XX/TCP 2d23h
ingress-nginx-controller-admission ClusterIP 10.101.xxx.XXX <none> 443/TCP 2d23h
kubectl describe ingress echo-ingress
Name: echo-ingress
Labels: <none>
Namespace: default
Address: 192.168.XX.X
Ingress Class: <none>
Default backend: <default>
Rules:
Host Path Backends
---- ---- --------
myserver.xyz
/ echo1:80 (XX.XXX.X.XXX:5678)
Annotations: kubernetes.io/ingress.class: nginx
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Sync 131m nginx-ingress-controller Scheduled for sync
Normal Sync 126m (x2 over 126m) nginx-ingress-controller Scheduled for sync
Normal Sync 108m nginx-ingress-controller Scheduled for sync
我已经将域名和 DNS A 记录指向 DigitalOcean VM 的外部 IP 地址。
我还检查了 /etc/hosts 并添加了一个域条目,如下所示:
146.190.XXX.XXX myserver.xyz
我错过了什么?
我需要安装 metalb Minikube 插件还是它在这种情况下不适用?
PS:我正在遵循here
给出的示例教程每@jordanm
如果您使用 LoadBalancer 的服务类型,您将连接到负载均衡器 IP,而不是虚拟机 IP。如果您想直接连接到虚拟机,您的 nginx 入口应该是 NodePort 的服务类型。
也许资源定义来自不同的时间点,但来自所提供的内容:
echo2
echo2
echo1
除非您的完整应用程序中没有
echo1
服务,否则我认为这可能是问题的一部分。