我知道它們有很多類似的問題,但是在我閱讀了所有這些問題之后,我無法弄清楚...:/
首先我沒有使用 minikube,我使用的是 kubernetes docker 桌面。
我有簡單的 express.js 服務器,例如:
app.get('/test', async (_, res) => {
console.log("Sth happened")
res.json({ status: 200 });
});
我正在嘗試部署它并使用入口將其公開給我的本地主機。
我做了什么:在 etc/hosts 我添加了:
127.0.0.1 123test.mydomain.com
入口看起來像:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mytestservice
namespace: mytestservice
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: 123test.mydomain.com
http:
paths:
- pathType: ImplementationSpecific
path: /
backend:
service:
name: mytestservice
port:
number: 80
服務:
apiVersion: v1
kind: Service
metadata:
name: mytestservice
spec:
ports:
- name: http
port: 80
targetPort: 3000
selector:
name: mytestservice
部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mytestservice
spec:
replicas: 1
selector:
matchLabels:
name: mytestservice
template:
metadata:
labels:
name: mytestservice
spec:
containers:
- name: mytestservice
image: myimagename
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3000
env:
...my envs, doesnt matter
當我部署它時,Pod 已啟動并運行,因為我能夠看到啟動日志 入口描述
kubectl get ingress mytestservice
NAME CLASS HOSTS ADDRESS PORTS AGE
mytestservice <none> 123test.mydomain.com 80, 443 53s
kubectl describe ingress mytestservice
Name: mytestservice
Namespace: mytestservice
Address:
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- --------
123test.mydomain.com
/ mytestservice:80 (10.1.0.16:3000)
Annotations: kubernetes.io/ingress.class: nginx
meta.helm.sh/release-name: mytestservice
meta.helm.sh/release-namespace: mytestservice
Events: <none>
當我卷曲它時,我收到:
curl 123test.mydomain.com/test
curl: (7) Failed to connect to 123test.mydomain.com port 80: Connection refused
uj5u.com熱心網友回復:
問題是DNS。使用您的本地 /etc/hosts 您指向 localhost 而不是您的 Kubernetes 主機的 IP。
uj5u.com熱心網友回復:
您是否在同一個命名空間中創建了所有資源?我看到你的入口被定義為:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mytestservice
namespace: mytestservice
所以它將在mytestservice命名空間中創建。而您的部署和服務沒有namespace: mytestservice元資料。因此它們將在default命名空間中創建。
檢查您的所有資源是否在同一個命名空間中:
kubectl get deployments --namespace mytestservice
kubectl get service --namespace mytestservice
kubectl get ingress --namespace mytestservice
錯誤提示在入口的描述中:
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/462326.html
上一篇:有沒有辦法獲得實際日期?
